CI: Reconfigure jobs to minimize tinyipa usage

This change involves:
- Moves ironic-standalone jobs to use 32GB nodes which is a
  relatively simple change.
- Changes other jobs excluding multinode jobs to use DIB image
  builds by default.
- Changes one of job names to remove tinyipa from the name.
- Also notes a job which can be removed, but removal will be in
  a later change... and adds a release note in case anyone looks.

Change-Id: If9110c8f5041428df3e59f40fe0cb71bcf8580a8
This commit is contained in:
Julia Kreger
2025-05-16 07:35:40 -07:00
parent e468155baa
commit 6c0b015a0d
4 changed files with 88 additions and 30 deletions

View File

@@ -1004,15 +1004,6 @@ if is_deployed_by_redfish && [[ "$IRONIC_ENABLED_HARDWARE_TYPES" != *"redfish"*
"for DevStack" "for DevStack"
fi fi
# Assert that for non-TynyIPA ramdisks and Ansible, the private SSH key file to use exists.
if is_ansible_deploy_enabled && [[ "$IRONIC_RAMDISK_TYPE" != "tinyipa" ]]; then
if [[ ! -f $IRONIC_ANSIBLE_SSH_KEY ]]; then
die $LINENO "Using non-TinyIPA ramdisks with ansible deploy interface" \
"requires setting IRONIC_ANSIBLE_SSH_KEY to existing"\
"private SSH key file to be used by Ansible."
fi
fi
# Syslinux >= 5.00 pxelinux.0 binary is not "stand-alone" anymore, # Syslinux >= 5.00 pxelinux.0 binary is not "stand-alone" anymore,
# it depends on some c32 modules to work correctly. # it depends on some c32 modules to work correctly.
# More info: http://www.syslinux.org/wiki/index.php/Library_modules # More info: http://www.syslinux.org/wiki/index.php/Library_modules
@@ -1945,7 +1936,7 @@ function configure_ironic_conductor {
fi fi
if [[ -z $IRONIC_ANSIBLE_SSH_USER ]]; then if [[ -z $IRONIC_ANSIBLE_SSH_USER ]]; then
# we definitely know the default username to use for TinyIPA image # we definitely know the default username to use for TinyIPA image
IRONIC_ANSIBLE_SSH_USER='tc' IRONIC_ANSIBLE_SSH_USER='devuser'
fi fi
# (rpittau) most recent tinyipa uses python3 natively so we need to change # (rpittau) most recent tinyipa uses python3 natively so we need to change
# the default ansible python interpreter. # the default ansible python interpreter.
@@ -3842,6 +3833,9 @@ function build_ipa_dib_ramdisk {
if is_deploy_iso_required; then if is_deploy_iso_required; then
IRONIC_DIB_RAMDISK_OPTIONS+=" iso" IRONIC_DIB_RAMDISK_OPTIONS+=" iso"
fi fi
if is_ansible_deploy_enabled; then
IRONIC_DIB_RAMDISK_OPTIONS+=" devuser"
fi
git_clone $IRONIC_PYTHON_AGENT_BUILDER_REPO $IRONIC_PYTHON_AGENT_BUILDER_DIR $IRONIC_PYTHON_AGENT_BUILDER_BRANCH git_clone $IRONIC_PYTHON_AGENT_BUILDER_REPO $IRONIC_PYTHON_AGENT_BUILDER_DIR $IRONIC_PYTHON_AGENT_BUILDER_BRANCH
ELEMENTS_PATH="$IRONIC_PYTHON_AGENT_BUILDER_DIR/dib" \ ELEMENTS_PATH="$IRONIC_PYTHON_AGENT_BUILDER_DIR/dib" \
DIB_DHCP_TIMEOUT=$IRONIC_DIB_DHCP_TIMEOUT \ DIB_DHCP_TIMEOUT=$IRONIC_DIB_DHCP_TIMEOUT \
@@ -3850,6 +3844,8 @@ function build_ipa_dib_ramdisk {
DIB_REPOREF_ironic_python_agent=$TARGET_BRANCH \ DIB_REPOREF_ironic_python_agent=$TARGET_BRANCH \
DIB_REPOLOCATION_requirements="$DEST/requirements" \ DIB_REPOLOCATION_requirements="$DEST/requirements" \
DIB_REPOREF_requirements=$TARGET_BRANCH \ DIB_REPOREF_requirements=$TARGET_BRANCH \
DIB_DEVUSER_PWDLESS_SUDO=yes \
DIB_DEVUSER_AUTHORIZED_KEYS=$IRONIC_ANSIBLE_SSH_KEY.pub \
disk-image-create "$IRONIC_DIB_RAMDISK_OPTIONS" \ disk-image-create "$IRONIC_DIB_RAMDISK_OPTIONS" \
-x -o "$tempdir/ironic-agent" \ -x -o "$tempdir/ironic-agent" \
ironic-python-agent-ramdisk ironic-python-agent-ramdisk

View File

@@ -0,0 +1,15 @@
---
deprecations:
- |
While never supported outside of the Ironic project's CI testing, use of
the TinyIPA ramdisk image is in the process of being discontinued. Any
users who chose to utilize TinyIPA for any reasons should leverage
ironic-python-agent-builder images.
other:
- |
Ironic is in the process of removing testing and use of TinyIPA, which was
originally developed as a lightweight low memory IPA image to simplify
upstream testing and had no use outside of that context. Due to the
OpenStack move away from Python3.9, TinyIPA cannot continue
to be maintained, and as such all testing and use of images will be
discontinued by the Ironic community.

View File

@@ -1,4 +1,19 @@
--- ---
# NOTE(TheJulia): Based upon openstack-single-node-noble's nodeset definition,
# but copied and the base label changed to match what we need for higher mem
# jobs.
- nodeset:
# Base tenant node for high memory ironic jobs.
name: ironic-single-node-noble
nodes:
- name: controller
label: ubuntu-noble-32GB
groups:
- name: tempest
nodes:
- controller
- job: - job:
name: ironic-base name: ironic-base
abstract: true abstract: true
@@ -180,6 +195,7 @@
Test ironic standalone configured with ipmi hardware type, ramdisk and Test ironic standalone configured with ipmi hardware type, ramdisk and
direct deploy interfaces, rescue enabled. direct deploy interfaces, rescue enabled.
parent: ironic-base parent: ironic-base
nodeset: ironic-single-node-noble
irrelevant-files: irrelevant-files:
- ^.*\.rst$ - ^.*\.rst$
- ^api-ref/.*$ - ^api-ref/.*$
@@ -196,7 +212,7 @@
- ^tox.ini$ - ^tox.ini$
vars: vars:
tempest_test_regex: ironic_standalone tempest_test_regex: ironic_standalone
tempest_concurrency: 2 tempest_concurrency: 3
devstack_localrc: devstack_localrc:
FORCE_CONFIG_DRIVE: False FORCE_CONFIG_DRIVE: False
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
@@ -206,11 +222,9 @@
IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ramdisk" IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ramdisk"
IRONIC_ENABLED_RESCUE_INTERFACES: "agent,no-rescue" IRONIC_ENABLED_RESCUE_INTERFACES: "agent,no-rescue"
IRONIC_JSON_RPC_AUTH_STRATEGY: 'http_basic' IRONIC_JSON_RPC_AUTH_STRATEGY: 'http_basic'
IRONIC_RAMDISK_TYPE: tinyipa
IRONIC_RPC_TRANSPORT: json-rpc IRONIC_RPC_TRANSPORT: json-rpc
IRONIC_VM_SPECS_RAM: 1024
IRONIC_VM_SPECS_CPU: 1 IRONIC_VM_SPECS_CPU: 1
IRONIC_VM_COUNT: 4 IRONIC_VM_COUNT: 5
IRONIC_VM_VOLUME_COUNT: 2 IRONIC_VM_VOLUME_COUNT: 2
# We're using a lot of disk space in this job. Some testing nodes have # We're using a lot of disk space in this job. Some testing nodes have
# a small root partition, so use /opt which is mounted from a bigger # a small root partition, so use /opt which is mounted from a bigger
@@ -246,14 +260,16 @@
- job: - job:
name: ironic-standalone-redfish name: ironic-standalone-redfish
parent: ironic-base parent: ironic-base
nodeset: ironic-single-node-noble
description: description:
Test ironic standalone configured with redfish hardware type, ansible and Test ironic standalone configured with redfish hardware type, ansible and
direct and ansible deploy interfaces, rescue it's not enabled. direct and ansible deploy interfaces, rescue it's not enabled.
required-projects: required-projects:
- opendev.org/openstack/sushy-tools - opendev.org/openstack/sushy-tools
- opendev.org/openstack/ironic-python-agent-builder
vars: vars:
tempest_test_regex: ironic_standalone tempest_test_regex: ironic_standalone
tempest_concurrency: 2 tempest_concurrency: 3
devstack_localrc: devstack_localrc:
FORCE_CONFIG_DRIVE: False FORCE_CONFIG_DRIVE: False
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
@@ -270,15 +286,16 @@
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ansible,ramdisk" IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ansible,ramdisk"
IRONIC_RPC_TRANSPORT: json-rpc IRONIC_RPC_TRANSPORT: json-rpc
IRONIC_RAMDISK_TYPE: tinyipa IRONIC_VM_COUNT: 5
IRONIC_VM_COUNT: 4
IRONIC_VM_VOLUME_COUNT: 2 IRONIC_VM_VOLUME_COUNT: 2
IRONIC_VM_SPECS_RAM: 1024
IRONIC_VM_SPECS_CPU: 1 IRONIC_VM_SPECS_CPU: 1
# We're using a lot of disk space in this job. Some testing nodes have # We're using a lot of disk space in this job. Some testing nodes have
# a small root partition, so use /opt which is mounted from a bigger # a small root partition, so use /opt which is mounted from a bigger
# ephemeral partition on such nodes # ephemeral partition on such nodes
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
# Always build IPA ramdisks, to enable key injection for ansible
# deploy interface testing.
IRONIC_BUILD_DEPLOY_RAMDISK: True
devstack_services: devstack_services:
atop: True atop: True
n-api: False n-api: False
@@ -295,8 +312,11 @@
s-proxy: False s-proxy: False
- job: - job:
# NOTE(TheJulia): While a standalone job, this really only runs 1 test.
# Or at least, should only run one test.
name: ironic-standalone-anaconda name: ironic-standalone-anaconda
parent: ironic-standalone-redfish parent: ironic-standalone-redfish
nodeset: openstack-single-node-noble
description: description:
Test ironic with the anaconda deployment interface. Test ironic with the anaconda deployment interface.
Test also uses Redfish. Test also uses Redfish.
@@ -305,7 +325,7 @@
vars: vars:
tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance
tempest_test_timeout: 4800 tempest_test_timeout: 4800
tempest_concurrency: 2 tempest_concurrency: 1
devstack_localrc: devstack_localrc:
IRONIC_ENABLED_DEPLOY_INTERFACES: "anaconda" IRONIC_ENABLED_DEPLOY_INTERFACES: "anaconda"
IRONIC_VM_COUNT: 2 IRONIC_VM_COUNT: 2
@@ -322,6 +342,35 @@
IRONIC_ANACONDA_INSECURE_HEARTBEAT: True IRONIC_ANACONDA_INSECURE_HEARTBEAT: True
IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT: 3600 IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT: 3600
IRONIC_PXE_BOOT_RETRY_TIMEOUT: 3600 IRONIC_PXE_BOOT_RETRY_TIMEOUT: 3600
FORCE_CONFIG_DRIVE: False
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
IRONIC_AUTOMATED_CLEAN_ENABLED: False
IRONIC_DEPLOY_DRIVER: redfish
# NOTE(TheJulia): We test numerous boot interfaces here, but "http"
# with "grub2" is functionally unstable. Basically high odds of failure
# with VMs in EFI request handling with VMs.
# FIXME(dtantsur): add back the pxe interface once it actually works
# and the boot interface handling in the tempest plugin is fixed.
IRONIC_ENABLED_BOOT_INTERFACES: "ipxe,redfish-virtual-media,http-ipxe"
IRONIC_ENABLED_HARDWARE_TYPES: redfish
IRONIC_ENABLED_POWER_INTERFACES: redfish
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
IRONIC_RPC_TRANSPORT: json-rpc
devstack_services:
atop: True
n-api: False
n-api-meta: False
n-cond: False
n-cpu: False
n-novnc: False
n-sch: False
nova: False
placement-api: False
s-account: False
s-container: False
s-object: False
s-proxy: False
# NOTE(TheJulia): This job should likely be phased out as the standalone # NOTE(TheJulia): This job should likely be phased out as the standalone
# job mostly checks the related code paths, the overlap pertinant here is # job mostly checks the related code paths, the overlap pertinant here is
@@ -862,7 +911,6 @@
IRONIC_ENABLED_HARDWARE_TYPES: ipmi IRONIC_ENABLED_HARDWARE_TYPES: ipmi
IRONIC_ENABLED_BOOT_INTERFACES: pxe IRONIC_ENABLED_BOOT_INTERFACES: pxe
IRONIC_IPXE_ENABLED: False IRONIC_IPXE_ENABLED: False
IRONIC_RAMDISK_TYPE: tinyipa
IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_AUTOMATED_CLEAN_ENABLED: False
- job: - job:
@@ -936,7 +984,6 @@
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_EPHEMERAL_DISK: 0
IRONIC_VM_INTERFACE_COUNT: 1 IRONIC_VM_INTERFACE_COUNT: 1
# This will swap and needs to get to tinycore soon.
IRONIC_VM_SPECS_CPU: 2 IRONIC_VM_SPECS_CPU: 2
Q_PLUGIN: ml2 Q_PLUGIN: ml2
ENABLE_TENANT_VLANS: True ENABLE_TENANT_VLANS: True
@@ -1016,21 +1063,20 @@
# Used by devstack/ironic/nova/neutron # Used by devstack/ironic/nova/neutron
- job: - job:
name: ironic-tempest-bios-ipmi-direct-tinyipa name: ironic-tempest-bios-ipmi-direct
description: ironic-tempest-wholedisk-bios-ipmi-direct-tinyipa that also tests cleaning. description: ironic-tempest-wholedisk-bios-ipmi-direct that also tests cleaning.
parent: ironic-base parent: ironic-base
vars: vars:
tempest_test_regex: test_baremetal_server_ops_wholedisk_image tempest_test_regex: test_baremetal_server_ops_wholedisk_image
devstack_localrc: devstack_localrc:
IRONIC_DEFAULT_RESCUE_INTERFACE: agent IRONIC_DEFAULT_RESCUE_INTERFACE: agent
IRONIC_ENABLED_RESCUE_INTERFACES: "fake,agent,no-rescue" IRONIC_ENABLED_RESCUE_INTERFACES: "fake,agent,no-rescue"
IRONIC_RAMDISK_TYPE: tinyipa
IRONIC_VM_SPECS_RAM: 1024
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_EPHEMERAL_DISK: 0
SWIFT_ENABLE_TEMPURLS: True SWIFT_ENABLE_TEMPURLS: True
SWIFT_TEMPURL_KEY: secretkey SWIFT_TEMPURL_KEY: secretkey
IRONIC_BOOT_MODE: bios IRONIC_BOOT_MODE: bios
IRONIC_VM_COUNT: 1
devstack_services: devstack_services:
atop: True atop: True
s-account: True s-account: True
@@ -1038,10 +1084,11 @@
s-object: True s-object: True
s-proxy: True s-proxy: True
# FIXME(TheJulia): We need to fix this name.....
- job: - job:
name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa
description: Alias for ironic-tempest-wholedisk-bios-ipmi-direct-tinyipa description: Alias for ironic-tempest-wholedisk-bios-ipmi-direct-tinyipa
parent: ironic-tempest-bios-ipmi-direct-tinyipa parent: ironic-tempest-bios-ipmi-direct
- job: - job:
name: ironic-tempest-uefi-redfish-vmedia-4k name: ironic-tempest-uefi-redfish-vmedia-4k
@@ -1109,11 +1156,10 @@
IRONIC_CALLBACK_TIMEOUT: 600 IRONIC_CALLBACK_TIMEOUT: 600
IRONIC_DEPLOY_DRIVER: ipmi IRONIC_DEPLOY_DRIVER: ipmi
IRONIC_INSPECTOR_BUILD_RAMDISK: False IRONIC_INSPECTOR_BUILD_RAMDISK: False
IRONIC_RAMDISK_TYPE: tinyipa
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
IRONIC_VM_COUNT: 4 IRONIC_VM_COUNT: 2
IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_EPHEMERAL_DISK: 0
IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_RAM: 2600
IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_AUTOMATED_CLEAN_ENABLED: False
Q_AGENT: openvswitch Q_AGENT: openvswitch
Q_ML2_TENANT_NETWORK_TYPE: vxlan Q_ML2_TENANT_NETWORK_TYPE: vxlan
@@ -1167,6 +1213,7 @@
zuul_copy_output: zuul_copy_output:
'{{ devstack_bases.old }}/ironic-bm-logs': logs '{{ devstack_bases.old }}/ironic-bm-logs': logs
# FIXME(TheJulia): This job should be removd, it is no longer used.
- job: - job:
name: ironic-grenade-multinode-multitenant name: ironic-grenade-multinode-multitenant
parent: grenade-multinode parent: grenade-multinode

View File

@@ -32,7 +32,7 @@
voting: false voting: false
- ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard: - ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard:
voting: false voting: false
- ironic-tempest-bios-ipmi-direct-tinyipa - ironic-tempest-bios-ipmi-direct
- ironic-tempest-bfv - ironic-tempest-bfv
- ironic-tempest-ipa-partition-uefi-pxe-grub2 - ironic-tempest-ipa-partition-uefi-pxe-grub2
- ironic-tempest-uefi-redfish-vmedia-4k - ironic-tempest-uefi-redfish-vmedia-4k