diff --git a/devstack/lib/ironic b/devstack/lib/ironic index ee74f7c342..5ab607e0d6 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -1004,15 +1004,6 @@ if is_deployed_by_redfish && [[ "$IRONIC_ENABLED_HARDWARE_TYPES" != *"redfish"* "for DevStack" 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, # it depends on some c32 modules to work correctly. # More info: http://www.syslinux.org/wiki/index.php/Library_modules @@ -1945,7 +1936,7 @@ function configure_ironic_conductor { fi if [[ -z $IRONIC_ANSIBLE_SSH_USER ]]; then # we definitely know the default username to use for TinyIPA image - IRONIC_ANSIBLE_SSH_USER='tc' + IRONIC_ANSIBLE_SSH_USER='devuser' fi # (rpittau) most recent tinyipa uses python3 natively so we need to change # the default ansible python interpreter. @@ -3842,6 +3833,9 @@ function build_ipa_dib_ramdisk { if is_deploy_iso_required; then IRONIC_DIB_RAMDISK_OPTIONS+=" iso" 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 ELEMENTS_PATH="$IRONIC_PYTHON_AGENT_BUILDER_DIR/dib" \ DIB_DHCP_TIMEOUT=$IRONIC_DIB_DHCP_TIMEOUT \ @@ -3850,6 +3844,8 @@ function build_ipa_dib_ramdisk { DIB_REPOREF_ironic_python_agent=$TARGET_BRANCH \ DIB_REPOLOCATION_requirements="$DEST/requirements" \ 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" \ -x -o "$tempdir/ironic-agent" \ ironic-python-agent-ramdisk diff --git a/releasenotes/notes/remove-tinyipa-testing-c85bdb7e4d130e59.yaml b/releasenotes/notes/remove-tinyipa-testing-c85bdb7e4d130e59.yaml new file mode 100644 index 0000000000..a86507d3a0 --- /dev/null +++ b/releasenotes/notes/remove-tinyipa-testing-c85bdb7e4d130e59.yaml @@ -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. diff --git a/zuul.d/ironic-jobs.yaml b/zuul.d/ironic-jobs.yaml index bf21fe55ce..a554c0f58f 100644 --- a/zuul.d/ironic-jobs.yaml +++ b/zuul.d/ironic-jobs.yaml @@ -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: name: ironic-base abstract: true @@ -180,6 +195,7 @@ Test ironic standalone configured with ipmi hardware type, ramdisk and direct deploy interfaces, rescue enabled. parent: ironic-base + nodeset: ironic-single-node-noble irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ @@ -196,7 +212,7 @@ - ^tox.ini$ vars: tempest_test_regex: ironic_standalone - tempest_concurrency: 2 + tempest_concurrency: 3 devstack_localrc: FORCE_CONFIG_DRIVE: False IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http @@ -206,11 +222,9 @@ IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ramdisk" IRONIC_ENABLED_RESCUE_INTERFACES: "agent,no-rescue" IRONIC_JSON_RPC_AUTH_STRATEGY: 'http_basic' - IRONIC_RAMDISK_TYPE: tinyipa IRONIC_RPC_TRANSPORT: json-rpc - IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_CPU: 1 - IRONIC_VM_COUNT: 4 + IRONIC_VM_COUNT: 5 IRONIC_VM_VOLUME_COUNT: 2 # 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 @@ -246,14 +260,16 @@ - job: name: ironic-standalone-redfish parent: ironic-base + nodeset: ironic-single-node-noble description: Test ironic standalone configured with redfish hardware type, ansible and direct and ansible deploy interfaces, rescue it's not enabled. required-projects: - opendev.org/openstack/sushy-tools + - opendev.org/openstack/ironic-python-agent-builder vars: tempest_test_regex: ironic_standalone - tempest_concurrency: 2 + tempest_concurrency: 3 devstack_localrc: FORCE_CONFIG_DRIVE: False IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http @@ -270,15 +286,16 @@ IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ansible,ramdisk" IRONIC_RPC_TRANSPORT: json-rpc - IRONIC_RAMDISK_TYPE: tinyipa - IRONIC_VM_COUNT: 4 + IRONIC_VM_COUNT: 5 IRONIC_VM_VOLUME_COUNT: 2 - IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_CPU: 1 # 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 # ephemeral partition on such nodes 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: atop: True n-api: False @@ -295,8 +312,11 @@ s-proxy: False - 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 parent: ironic-standalone-redfish + nodeset: openstack-single-node-noble description: Test ironic with the anaconda deployment interface. Test also uses Redfish. @@ -305,7 +325,7 @@ vars: tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance tempest_test_timeout: 4800 - tempest_concurrency: 2 + tempest_concurrency: 1 devstack_localrc: IRONIC_ENABLED_DEPLOY_INTERFACES: "anaconda" IRONIC_VM_COUNT: 2 @@ -322,6 +342,35 @@ IRONIC_ANACONDA_INSECURE_HEARTBEAT: True IRONIC_DEPLOY_CALLBACK_WAIT_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 # job mostly checks the related code paths, the overlap pertinant here is @@ -862,7 +911,6 @@ IRONIC_ENABLED_HARDWARE_TYPES: ipmi IRONIC_ENABLED_BOOT_INTERFACES: pxe IRONIC_IPXE_ENABLED: False - IRONIC_RAMDISK_TYPE: tinyipa IRONIC_AUTOMATED_CLEAN_ENABLED: False - job: @@ -936,7 +984,6 @@ IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_INTERFACE_COUNT: 1 - # This will swap and needs to get to tinycore soon. IRONIC_VM_SPECS_CPU: 2 Q_PLUGIN: ml2 ENABLE_TENANT_VLANS: True @@ -1016,21 +1063,20 @@ # Used by devstack/ironic/nova/neutron - job: - name: ironic-tempest-bios-ipmi-direct-tinyipa - description: ironic-tempest-wholedisk-bios-ipmi-direct-tinyipa that also tests cleaning. + name: ironic-tempest-bios-ipmi-direct + description: ironic-tempest-wholedisk-bios-ipmi-direct that also tests cleaning. parent: ironic-base vars: tempest_test_regex: test_baremetal_server_ops_wholedisk_image devstack_localrc: IRONIC_DEFAULT_RESCUE_INTERFACE: agent IRONIC_ENABLED_RESCUE_INTERFACES: "fake,agent,no-rescue" - IRONIC_RAMDISK_TYPE: tinyipa - IRONIC_VM_SPECS_RAM: 1024 IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey IRONIC_BOOT_MODE: bios + IRONIC_VM_COUNT: 1 devstack_services: atop: True s-account: True @@ -1038,10 +1084,11 @@ s-object: True s-proxy: True +# FIXME(TheJulia): We need to fix this name..... - job: name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-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: name: ironic-tempest-uefi-redfish-vmedia-4k @@ -1109,11 +1156,10 @@ IRONIC_CALLBACK_TIMEOUT: 600 IRONIC_DEPLOY_DRIVER: ipmi IRONIC_INSPECTOR_BUILD_RAMDISK: False - IRONIC_RAMDISK_TYPE: tinyipa IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True - IRONIC_VM_COUNT: 4 + IRONIC_VM_COUNT: 2 IRONIC_VM_EPHEMERAL_DISK: 0 - IRONIC_VM_SPECS_RAM: 1024 + IRONIC_VM_SPECS_RAM: 2600 IRONIC_AUTOMATED_CLEAN_ENABLED: False Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vxlan @@ -1167,6 +1213,7 @@ zuul_copy_output: '{{ devstack_bases.old }}/ironic-bm-logs': logs +# FIXME(TheJulia): This job should be removd, it is no longer used. - job: name: ironic-grenade-multinode-multitenant parent: grenade-multinode diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index 35088c98de..1901a2e971 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -32,7 +32,7 @@ voting: false - ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard: voting: false - - ironic-tempest-bios-ipmi-direct-tinyipa + - ironic-tempest-bios-ipmi-direct - ironic-tempest-bfv - ironic-tempest-ipa-partition-uefi-pxe-grub2 - ironic-tempest-uefi-redfish-vmedia-4k