--- - job: name: ironic-base abstract: true description: Base job for devstack/tempest based ironic jobs. parent: devstack-tempest nodeset: openstack-single-node-jammy post-run: playbooks/ci-workarounds/get_extra_logging.yaml timeout: 10800 required-projects: # TODO(TheJulia): Explicitly pull in DIB until we get a release cut. - opendev.org/openstack/diskimage-builder - opendev.org/openstack/ironic - opendev.org/openstack/ironic-python-agent - opendev.org/openstack/ironic-python-agent-builder - opendev.org/openstack/ironic-tempest-plugin - opendev.org/openstack/virtualbmc irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^driver-requirements.txt$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^test-requirements.txt$ - ^tox.ini$ vars: tox_envlist: all tempest_test_timeout: 2400 tempest_test_regex: ironic_tempest_plugin.tests.scenario tempest_concurrency: 1 devstack_localrc: DEFAULT_INSTANCE_TYPE: baremetal FORCE_CONFIG_DRIVE: True INSTALL_TEMPEST: False # Don't install a tempest package globaly VIRT_DRIVER: ironic BUILD_TIMEOUT: 1800 IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_BUILD_DEPLOY_RAMDISK: False IRONIC_CALLBACK_TIMEOUT: 1800 IRONIC_DEPLOY_DRIVER: ipmi IRONIC_INSPECTOR_BUILD_RAMDISK: False IRONIC_INSPECTOR_TEMPEST_INTROSPECTION_TIMEOUT: 1200 IRONIC_TEMPEST_BUILD_TIMEOUT: 1800 IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False IRONIC_VM_COUNT: 2 IRONIC_VM_EPHEMERAL_DISK: 1 IRONIC_VM_SPECS_RAM: 2600 IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs' # NOTE(dtantsur): in some jobs we end up with 12 disks total, so reduce # each of them. For don't need all 10 GiB for CirrOS anyway. IRONIC_VM_SPECS_DISK: 4 IRONIC_VM_SPECS_CPU: 2 Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vxlan Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch SERVICE_TIMEOUT: 90 # NOTE(TheJulia): Devstack default glance limit is 1GB, we need # something more like 5GB for baremetal jobs due to image sizes # with firmware. GLANCE_LIMIT_IMAGE_SIZE_TOTAL: 5000 # NOTE(TheJulia): Disable neutron firewall as bug # https://bugs.launchpad.net/neutron/+bug/1944201 # causes us an abnormally high job failure rate due to the ports # not being found (as neutron crashed on initailization). Q_USE_SECGROUP: False # Default API workers is 2, however only 1 is needed, # which cuts API memory utilziation in half reducing the risk of # oom-killer events in CI. API_WORKERS: 1 CIRROS_VERSION: 0.6.1 devstack_plugins: ironic: https://opendev.org/openstack/ironic tempest_plugins: - ironic-tempest-plugin zuul_copy_output: '{{ devstack_base_dir }}/ironic-bm-logs': 'logs' '{{ devstack_base_dir }}/data/networking-generic-switch/netmiko_session.log': 'logs' devstack_services: # TODO: re-enable dstat once https://storyboard.openstack.org/#!/story/2008185 # is resolved dstat: false q-agt: true q-dhcp: true q-l3: true q-meta: true q-svc: true ovn-controller: false ovn-northd: false q-ovn-metadata-agent: false c-api: False c-bak: False c-sch: False c-vol: False cinder: False s-account: False s-container: False s-object: False s-proxy: False # NOTE(TheJulia): This job is being phased out as it ends up executing # the wholedisk standalone deploy, the partition standalone deploy, # software raid tests, and ramdisk iso boot tests. All of this while in # UEFI mode. Although the redfish test runs the exact same tests and *more*. # On top of that, there really is not a good variation which would be # impacted through IPMI while we keep other ipmi jobs in our CI config. - job: name: ironic-standalone description: Test ironic standalone configured with ipmi hardware type, ramdisk and direct deploy interfaces, rescue enabled. parent: ironic-base irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^test-requirements.txt$ - ^tools/.*$ - ^tox.ini$ vars: tempest_test_regex: ironic_standalone tempest_concurrency: 2 devstack_localrc: FORCE_CONFIG_DRIVE: False IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_DEFAULT_RESCUE_INTERFACE: agent IRONIC_ENABLED_HARDWARE_TYPES: ipmi 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_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 # ephemeral partition on such nodes LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images devstack_services: 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 - job: name: ironic-standalone-redfish parent: ironic-base 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 irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^test-requirements.txt$ - ^tools/.*$ - ^tox.ini$ vars: tempest_test_regex: ironic_standalone tempest_concurrency: 2 devstack_localrc: FORCE_CONFIG_DRIVE: False IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_DEPLOY_DRIVER: redfish IRONIC_ENABLED_BOOT_INTERFACES: "ipxe,redfish-virtual-media,http-ipxe,pxe,http" IRONIC_ENABLED_HARDWARE_TYPES: redfish IRONIC_ENABLED_POWER_INTERFACES: redfish 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_VOLUME_COUNT: 2 IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_CPU: 1 IRONIC_ENFORCE_SCOPE: True # 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 devstack_services: 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 - job: name: ironic-standalone-anaconda parent: ironic-standalone-redfish description: Test ironic with the anaconda deployment interface. Test also uses Redfish. required-projects: - opendev.org/openstack/sushy-tools irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^test-requirements.txt$ - ^tools/.*$ - ^tox.ini$ vars: tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance tempest_test_timeout: 4800 tempest_concurrency: 2 devstack_localrc: IRONIC_ENABLED_DEPLOY_INTERFACES: "anaconda" IRONIC_VM_COUNT: 2 IRONIC_VM_VOLUME_COUNT: 1 IRONIC_VM_SPECS_RAM: 3192 IRONIC_VM_SPECS_CPU: 3 IRONIC_ENFORCE_SCOPE: True # 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 IRONIC_ANACONDA_IMAGE_REF: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/ IRONIC_ANACONDA_KERNEL_REF: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/images/pxeboot/vmlinuz IRONIC_ANACONDA_RAMDISK_REF: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/images/pxeboot/initrd.img IRONIC_ANACONDA_INSECURE_HEARTBEAT: True IRONIC_DEPLOY_CALLBACK_WAIT_TIMEOUT: 3600 IRONIC_PXE_BOOT_RETRY_TIMEOUT: 3600 # NOTE(TheJulia): This job should likely be phased out as the standalone # job mostly checks the related code paths, the overlap pertinant here is # BIOS mode, which is not commonly deployed, and the minimum feature set # flag for the emulator. - job: name: ironic-tempest-bios-redfish-pxe description: "Deploy ironic node over PXE using BIOS boot mode" parent: ironic-tempest-uefi-redfish-vmedia required-projects: - opendev.org/openstack/sushy-tools vars: devstack_localrc: IRONIC_ENABLED_BOOT_INTERFACES: ipxe IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 SWIFT_ENABLE_TEMPURLS: False SWIFT_TEMPURL_KEY: '' # Parent job has a longer timeout due to vmedia usage, # Reset the callback to a normal-ish value. IRONIC_CALLBACK_TIMEOUT: 600 IRONIC_BOOT_MODE: bios # Make sure this feature works even with the minumum implementation IRONIC_REDFISH_EMULATOR_FEATURE_SET: minimum # Test sharding support IRONIC_SHARDS: 1 devstack_services: # Parent job uses swift, this one does not, thus we can turn it off. s-account: False s-container: False s-object: False s-proxy: False - job: name: ironic-tempest-uefi-redfish-vmedia description: "Deploy ironic node over Redfish virtual media using UEFI boot mode" parent: ironic-base vars: devstack_localrc: IRONIC_DEPLOY_DRIVER: redfish IRONIC_ENABLED_HARDWARE_TYPES: redfish IRONIC_ENABLED_POWER_INTERFACES: redfish IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_ENABLED_BOOT_INTERFACES: redfish-virtual-media SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey # Ironic has to master a new image, and this CAN take longer as a # result and makes this job VERY sensitive to heavy disk IO of the # underlying hypervisor/cloud. IRONIC_CALLBACK_TIMEOUT: 800 IRONIC_GRUB2_SHIM_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/EFI/BOOT/BOOTX64.EFI IRONIC_GRUB2_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/x86_64/os/EFI/BOOT/grubx64.efi IRONIC_GRUB2_CONFIG_PATH: EFI/BOOT/grub.cfg IRONIC_REDFISH_EMULATOR_FEATURE_SET: vmedia devstack_services: s-account: True s-container: True s-object: True s-proxy: True - job: name: ironic-inspector-tempest-uefi-redfish-vmedia description: "Inspect and deploy ironic node over Redfish virtual media using UEFI" parent: ironic-tempest-partition-uefi-redfish-vmedia required-projects: - opendev.org/openstack/ironic-inspector vars: # NOTE(dtantsur): the inspector job includes booting an instance too. # Excluding the abort tests since it hits "node locked" too often. tempest_test_regex: test_baremetal_introspection devstack_localrc: IRONIC_INSPECTOR_MANAGED_BOOT: True IRONIC_INSPECTOR_NODE_NOT_FOUND_HOOK: '' IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_VM_COUNT: 1 devstack_plugins: ironic-inspector: https://opendev.org/openstack/ironic-inspector devstack_services: ironic-inspector: True ironic-inspector-dhcp: True - job: name: ironic-tempest-pxe_ipmitool-postgres description: ironic-tempest-pxe_ipmitool-postgres parent: ironic-base vars: devstack_localrc: IRONIC_ENABLED_BOOT_INTERFACES: "fake,pxe" IRONIC_IPXE_ENABLED: False IRONIC_AUTOMATED_CLEAN_ENABLED: False devstack_services: mysql: False postgresql: True # NOTE(rpittau): converted job but not running for now as there # could be an issue with the lookup in ironic-python-agent - job: name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool description: Gate-ish job with classic name. Executes rescue! parent: ironic-base vars: devstack_localrc: IRONIC_DEFAULT_RESCUE_INTERFACE: agent IRONIC_ENABLED_RESCUE_INTERFACES: "fake,agent,no-rescue" IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_SPECS_RAM: 3096 SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey IRONIC_BOOT_MODE: bios devstack_services: s-account: True s-container: True s-object: True s-proxy: True - job: name: ironic-tempest-ramdisk-bios-snmp-pxe description: SNMP power, iPXE, OVN, no-op management and whole disk images. parent: ironic-base vars: # NOTE(TheJulia): No reason to go much further than the network boot, # Hence the use of the ramdisk test scenario as opposed to the others. tempest_test_regex: test_ramdisk_iso devstack_localrc: IRONIC_ENABLED_HARDWARE_TYPES: snmp IRONIC_DEPLOY_DRIVER: snmp IRONIC_ENABLED_DEPLOY_INTERFACES: "ramdisk" IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_AUTOMATED_CLEAN_ENABLED: False # NOTE(TheJulia): Explicitly set scope enforcement to False until we # remove the legacy policies. IRONIC_ENFORCE_SCOPE: False IRONIC_BOOT_MODE: bios Q_AGENT: ovn Q_ML2_TENANT_NETWORK_TYPE: vlan Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn ENABLE_CHASSIS_AS_GW: True ML2_L3_PLUGIN: "ovn-router,trunk" OVN_DBS_LOG_LEVEL: dbg OVN_BUILD_FROM_SOURCE: True Q_BUILD_OVS_FROM_GIT: True # NOTE(TheJulia): Ubuntu ships an out of date OVN package, so # we need to build from source. These are the minimum versions # representing June 2023 release. Ubuntu Kinetic is shipping Q3 2022 # i.e. OVN 22.09, so likely possible to remove sometime *after* # Ubuntu Mantic OVN 2023.03. OVN_BRANCH: v23.06.0 OVS_BRANCH: v3.1.1 devstack_services: q-agt: False q-dhcp: False q-l3: False ovn-controller: True ovn-northd: True q-ovn-metadata-agent: 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 - job: name: ironic-tempest-ovn-uefi-ipmi-pxe description: IPMI power, UEFI, iPXE, OVN image. parent: ironic-base vars: devstack_localrc: IRONIC_AUTOMATED_CLEAN_ENABLED: False Q_AGENT: ovn Q_ML2_TENANT_NETWORK_TYPE: vlan Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn ENABLE_CHASSIS_AS_GW: True ML2_L3_PLUGIN: "ovn-router,trunk" OVN_DBS_LOG_LEVEL: dbg OVN_BUILD_FROM_SOURCE: True Q_BUILD_OVS_FROM_GIT: True # NOTE(TheJulia): Ubuntu ships an out of date OVN package, so # we need to build from source. These are the minimum versions # representing June 2023 release. Ubuntu Kinetic is shipping Q3 2022 # i.e. OVN 22.09, so likely possible to remove sometime *after* # Ubuntu Mantic which is OVN 2023.03. OVN_BRANCH: v23.06.0 OVS_BRANCH: v3.1.1 devstack_services: q-agt: False q-dhcp: False q-l3: False ovn-controller: True ovn-northd: True ovn-vswitchd: True q-ovn-metadata-agent: True - job: name: ironic-tempest-bfv description: ironic-tempest-bfv parent: ironic-base vars: tempest_test_regex: baremetal_boot_from_volume devstack_localrc: IRONIC_ENABLED_STORAGE_INTERFACES: cinder,noop IRONIC_STORAGE_INTERFACE: cinder IRONIC_ENABLED_BOOT_INTERFACES: http-ipxe,ipxe,pxe,fake IRONIC_DEFAULT_BOOT_INTERFACE: http-ipxe IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_COUNT: 3 IRONIC_AUTOMATED_CLEAN_ENABLED: False SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey IRONIC_ENFORCE_SCOPE: True devstack_services: c-api: True c-bak: True c-sch: True c-vol: True cinder: True - job: name: ironic-inspector-tempest description: ironic-inspector-tempest parent: ironic-base required-projects: - opendev.org/openstack/ironic-inspector irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^driver-requirements.txt$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ # This job is also run on inspector - ^ironic_inspector/locale/.*$ - ^ironic_inspector/test/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^test-requirements.txt$ - ^tools/.*$ - ^tox.ini$ vars: tempest_test_regex: InspectorBasicTest devstack_localrc: IRONIC_INSPECTOR_MANAGE_FIREWALL: True IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_COUNT: 1 IRONIC_AUTOMATED_CLEAN_ENABLED: False SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey devstack_plugins: ironic-inspector: https://opendev.org/openstack/ironic-inspector devstack_services: s-account: True s-container: True s-object: True s-proxy: True - job: name: ironic-inspector-tempest-rbac-scope-enforced description: ironic-inspector-tempest-rbac-scope-enforced parent: ironic-inspector-tempest required-projects: - openstack/ironic-inspector vars: devstack_localrc: IRONIC_ENFORCE_SCOPE: True IRONIC_INSPECTOR_ENFORCE_SCOPE: True - job: name: ironic-tempest-functional-python3 description: ironic-tempest-functional-python3 parent: ironic-base pre-run: playbooks/ci-workarounds/etc-neutron.yaml vars: tempest_test_regex: ironic_tempest_plugin.tests.api devstack_localrc: IRONIC_BAREMETAL_BASIC_OPS: False IRONIC_DEFAULT_DEPLOY_INTERFACE: "" IRONIC_DEFAULT_NETWORK_INTERFACE: noop IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_RPC_TRANSPORT: json-rpc devstack_services: rabbit: False g-api: False n-api: False n-api-meta: False n-cond: False n-cpu: False n-novnc: False n-sch: False nova: False placement-api: False q-agt: False q-dhcp: False q-l3: False q-meta: False q-metering: False q-svc: False - job: name: ironic-tempest-functional-rbac-scope-enforced description: ironic-tempest-funcitonal-rbac-scope-enforced parent: ironic-tempest-functional-python3 vars: devstack_localrc: IRONIC_ENFORCE_SCOPE: True - job: name: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode description: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode parent: tempest-multinode-full-base nodeset: openstack-two-node-jammy pre-run: playbooks/ci-workarounds/pre.yaml required-projects: - opendev.org/openstack/ironic - opendev.org/openstack/ironic-python-agent - opendev.org/openstack/ironic-python-agent-builder - opendev.org/openstack/ironic-tempest-plugin - opendev.org/openstack/virtualbmc - opendev.org/openstack/networking-generic-switch irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^driver-requirements.txt$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^tools/.*$ - ^tox.ini$ roles: - zuul: opendev.org/zuul/zuul-jobs vars: tox_envlist: all tempest_concurrency: 3 tempest_test_regex: "ironic_tempest_plugin.tests.scenario" tempest_test_timeout: 2400 devstack_localrc: BUILD_TIMEOUT: 2400 DEFAULT_INSTANCE_TYPE: baremetal ENABLE_TENANT_TUNNELS: False ENABLE_TENANT_VLANS: True FORCE_CONFIG_DRIVE: True GENERIC_SWITCH_KEY_FILE: /opt/stack/.ssh/id_rsa HOST_TOPOLOGY: multinode HOST_TOPOLOGY_ROLE: primary INSTALL_TEMPEST: False # Don't install a tempest package globaly IRONIC_AUTOMATED_CLEAN_ENABLED: False HOST_TOPOLOGY_SUBNODES: "{{ hostvars['compute1']['nodepool']['public_ipv4'] }}" IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_BUILD_DEPLOY_RAMDISK: False IRONIC_CALLBACK_TIMEOUT: 600 IRONIC_DEPLOY_DRIVER: ipmi IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron IRONIC_INSPECTOR_BUILD_RAMDISK: False IRONIC_NETWORK_INTERFACE: neutron IRONIC_PROVISION_NETWORK_NAME: ironic-provision IRONIC_PROVISION_SUBNET_GATEWAY: 10.0.5.1 IRONIC_PROVISION_SUBNET_PREFIX: 10.0.5.0/24 IRONIC_RAMDISK_TYPE: tinyipa IRONIC_TEMPEST_BUILD_TIMEOUT: 600 IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_USE_LINK_LOCAL: True IRONIC_VM_COUNT: 3 IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs' IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_DISK: 4 IRONIC_VM_SPECS_CPU: 1 OVS_BRIDGE_MAPPINGS: 'mynetwork:brbm,public:br-infra' OVS_PHYSICAL_BRIDGE: brbm PHYSICAL_NETWORK: mynetwork PUBLIC_BRIDGE: br-infra Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vlan Q_PLUGIN: ml2 Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey TENANT_VLAN_RANGE: 100:150 VIRT_DRIVER: ironic # 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 devstack_plugins: ironic: https://opendev.org/openstack/ironic networking-generic-switch: https://opendev.org/openstack/networking-generic-switch tempest_plugins: - ironic-tempest-plugin zuul_copy_output: '{{ devstack_base_dir }}/ironic-bm-logs': 'logs' '{{ devstack_base_dir }}/data/networking-generic-switch/netmiko_session.log': 'logs' devstack_services: c-api: False c-bak: False c-sch: False c-vol: False cinder: False s-account: True s-container: True s-object: True s-proxy: True dstat: True g-api: True key: True mysql: True n-api: True n-api-meta: True n-cond: True n-cpu: True n-novnc: True n-sch: True placement-api: True q-agt: True q-dhcp: True q-l3: True q-meta: True q-metering: True q-svc: True ovn-controller: False ovn-northd: False q-ovn-metadata-agent: False rabbit: True group-vars: subnode: devstack_localrc: ENABLE_TENANT_TUNNELS: False ENABLE_TENANT_VLANS: True FORCE_CONFIG_DRIVE: True HOST_TOPOLOGY: multinode HOST_TOPOLOGY_ROLE: subnode IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_DEPLOY_DRIVER: ipmi IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron IRONIC_NETWORK_INTERFACE: neutron IRONIC_PROVISION_NETWORK_NAME: ironic-provision IRONIC_RAMDISK_TYPE: tinyipa IRONIC_USE_LINK_LOCAL: True IRONIC_VM_COUNT: 3 IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs' IRONIC_VM_NETWORK_BRIDGE: sub1brbm IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_SPECS_DISK: 4 IRONIC_VM_SPECS_CPU: 1 OVS_BRIDGE_MAPPINGS: 'mynetwork:sub1brbm,public:br-infra' OVS_PHYSICAL_BRIDGE: sub1brbm PHYSICAL_NETWORK: mynetwork Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vlan VIRT_DRIVER: ironic PUBLIC_BRIDGE: br-infra LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images devstack_services: c-api: False c-bak: False c-sch: False c-vol: False cinder: False q-agt: True ovn-controller: False ovn-northd: False q-ovn-metadata-agent: False n-cpu: True - job: # NOTE(JayF) This job sets up two nova-computes with two different shards # TODO(JayF) Add a post-run validation to ensure the two n-cpus did not # see each others' nodes name: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard description: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard parent: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode nodeset: openstack-two-node-jammy vars: tempest_test_regex: "BaremetalBasicOps" devstack_localrc: IRONIC_SHARDS: 1 IRONIC_SHARD_1_NAME: "main-node" group-vars: subnode: devstack_localrc: IRONIC_SHARDS: 1 IRONIC_SHARD_1_NAME: "subnode" - job: name: ironic-tox-unit-with-driver-libs parent: openstack-tox description: | Run python 3 unit tests with driver dependencies installed. vars: tox_envlist: unit-with-driver-libs # TODO(stephenfin): Remove this when we raise the upper-constraint globally - job: name: ironic-tox-unit-with-sqlalchemy-2x parent: openstack-tox description: | Run unit tests with main branch of SQLAlchemy, alembic and oslo.db. Takes advantage of the base tox job's install-siblings feature. vars: tox_envlist: py3 # The job only tests the latest and shouldn't be run on the stable branches branches: ^master$ required-projects: - name: github.com/sqlalchemy/sqlalchemy override-checkout: main - name: github.com/sqlalchemy/alembic override-checkout: main - name: openstack/oslo.db - job: name: ironic-tox-unit-mysql-migrations parent: openstack-tox description: | Run MySQL based data model migrations separate to isolate failures. vars: tox_envlist: mysql-migrations - job: name: ironic-inspector-tempest-discovery-fast-track description: ironic-inspector-tempest-discovery-fast-track parent: ironic-inspector-tempest-discovery vars: tempest_test_regex: BareMetalFastTrackTest devstack_localrc: IRONIC_INSPECTOR_POWER_OFF: False IRONIC_DEPLOY_FAST_TRACK: True IRONIC_DEPLOY_FAST_TRACK_CLEANING: True - job: name: ironic-tempest-ipa-partition-uefi-pxe-grub2 description: Ironic tempest scenario test utilizing PXE, UEFI, and Grub2 parent: ironic-base vars: devstack_localrc: IRONIC_ENABLED_HARDWARE_TYPES: ipmi IRONIC_ENABLED_BOOT_INTERFACES: pxe IRONIC_IPXE_ENABLED: False IRONIC_RAMDISK_TYPE: tinyipa IRONIC_AUTOMATED_CLEAN_ENABLED: False - job: # Security testing for known issues name: ironic-tox-bandit parent: openstack-tox timeout: 2400 vars: tox_envlist: bandit required-projects: - opendev.org/openstack/ironic irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^driver-requirements.txt$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^tools/(?!bandit\.yml).*$ - ^tox.ini$ - job: name: ironic-tempest-ipa-wholedisk-bios-ipmi-direct-dib parent: ironic-base vars: devstack_services: s-account: True s-container: True s-object: True s-proxy: True devstack_localrc: IRONIC_DIB_RAMDISK_OS: centos9 IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_INTERFACE_COUNT: 1 IRONIC_AUTOMATED_CLEAN_ENABLED: False SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey IRONIC_BOOT_MODE: bios - job: name: ironic-tempest-ipxe-ipv6 description: ironic-tempest-ipxe-ipv6 parent: ironic-base required-projects: - opendev.org/openstack/networking-generic-switch vars: tempest_test_timeout: 2400 devstack_services: # NOTE(TheJulia): It seems our devstack plugin does not play well # with multitenancy and the newer neutron service names. q-agt: True q-dhcp: True q-l3: True q-meta: False q-metering: False q-svc: True swift: True devstack_plugins: ironic: https://opendev.org/openstack/ironic networking-generic-switch: https://opendev.org/openstack/networking-generic-switch # NOTE(TheJulia): Nova default behavior is to rely upon stack defaults, v6 needs to # be explicit. This is the best place to wire it in. tempest_test_regex: BaremetalSingleTenant devstack_localrc: IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IPV6_ENABLED: True IRONIC_IP_VERSION: 6 IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_ENABLED_BOOT_INTERFACES: ipxe,pxe IRONIC_DEFAULT_BOOT_INTERFACE: ipxe IRONIC_IPXE_ENABLED: True IRONIC_PROVISION_NETWORK_NAME: ironic-provision OVS_PHYSICAL_BRIDGE: brbm PHYSICAL_NETWORK: mynetwork TENANT_VLAN_RANGE: 100:150 IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron IRONIC_NETWORK_INTERFACE: neutron IRONIC_DEFAILT_RESCUE_INTERFACE: no-rescue IRONIC_USE_LINK_LOCAL: True 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 Q_ML2_TENANT_NETWORK_TYPE: vlan OVS_BRIDGE_MAPPINGS: "public:br-ex,mynetwork:brbm" USE_PROVIDER_NETWORKING: True PUBLIC_PHYSICAL_NETWORK: public PUBLIC_PROVIDERNET_TYPE: flat Q_USE_PROVIDERNET_FOR_PUBLIC: True BUILD_TIMEOUT: 2000 IRONIC_TEMPEST_BUILD_TIMEOUT: 2000 IRONIC_PING_TIMEOUT: 1440 # TODO(TheJulia): Change this to UEFI once we have Ubuntu Jammy # as it auto-attempts to UEFI boot PXE v4 and PXE v6. Prior just # does IPv4 and we cannot easily edit the nvram to inject just v6. # TODO(TheJulia): The devstack plugin also needs to be changed to # dhcpv6-stateful instead of stateless when this is changed to UEFI # as OVMF/E2DK does not support stateless. IRONIC_BOOT_MODE: bios # NOTE(rpittau): OLD TINYIPA JOBS # Those jobs are used by other projects, we leave them here until # we can convert them to dib. # 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. parent: ironic-base vars: 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 devstack_services: s-account: True s-container: True s-object: True s-proxy: True - 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 - job: name: ironic-grenade parent: grenade timeout: 10800 irrelevant-files: - ^driver-requirements.txt$ - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^tools/.*$ - ^tox.ini$ required-projects: - opendev.org/openstack/grenade - opendev.org/openstack/ironic - opendev.org/openstack/ironic-python-agent - opendev.org/openstack/ironic-python-agent-builder - opendev.org/openstack/ironic-tempest-plugin - opendev.org/openstack/virtualbmc vars: grenade_devstack_localrc: shared: #NOTE: when in UEFI mode, TFTP packets don't get tracked nor #pass between original and upgrade networks. Switch to BIOS #until we can fix this properly. IRONIC_BOOT_MODE: bios DEFAULT_INSTANCE_TYPE: baremetal FORCE_CONFIG_DRIVE: True INSTALL_TEMPEST: False VIRT_DRIVER: ironic BUILD_TIMEOUT: 1200 IRONIC_TEMPEST_BUILD_TIMEOUT: 1200 IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_BUILD_DEPLOY_RAMDISK: False 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_EPHEMERAL_DISK: 0 IRONIC_VM_SPECS_RAM: 1024 IRONIC_AUTOMATED_CLEAN_ENABLED: False Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vxlan Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey EBTABLES_RACE_FIX: True LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images INSTANCE_WAIT: 120 MYSQL_GATHER_PERFORMANCE: False CIRROS_VERSION: 0.6.1 # Required as different access rights are used by default # and the classic devstack config which is defaulted doesn't work. IRONIC_ENFORCE_SCOPE: True old: IRONIC_VM_LOG_DIR: '{{ devstack_bases.old }}/ironic-bm-logs' grenade_localrc: BASE_RUN_SMOKE: False grenade_tempest_concurrency: 1 grenade_test_timeout: 2600 devstack_plugins: ironic: https://opendev.org/openstack/ironic devstack_services: c-api: False c-bak: False c-sch: False c-vol: False cinder: False ir-api: True ir-cond: True # Neutron services # In the Ironic grenade job we want to explicitly enable ML2/OVS agents # and disable OVN q-agt: true q-dhcp: true q-l3: true q-meta: true q-svc: true q-metering: true ovn-controller: false ovn-northd: false q-ovn-metadata-agent: false tempest_plugins: - ironic-tempest-plugin tempest_test_regex: ironic_tempest_plugin.tests.scenario tox_envlist: all tempest_concurrency: 1 zuul_copy_output: '{{ devstack_bases.old }}/ironic-bm-logs': logs - job: name: ironic-grenade-multinode-multitenant parent: grenade-multinode timeout: 10800 irrelevant-files: - ^driver-requirements.txt$ - ^.*\.rst$ - ^api-ref/.*$ - ^doc/.*$ - ^install-guide/.*$ - ^ironic/locale/.*$ - ^ironic/tests/.*$ - ^releasenotes/.*$ - ^setup.cfg$ - ^tools/.*$ - ^tox.ini$ required-projects: - opendev.org/openstack/grenade - opendev.org/openstack/ironic - opendev.org/openstack/ironic-lib - opendev.org/openstack/ironic-python-agent - opendev.org/openstack/ironic-python-agent-builder - opendev.org/openstack/ironic-tempest-plugin - opendev.org/openstack/networking-generic-switch - opendev.org/openstack/python-ironicclient - opendev.org/openstack/virtualbmc vars: grenade_devstack_localrc: shared: DEFAULT_INSTANCE_TYPE: baremetal ENABLE_TENANT_TUNNELS: False ENABLE_TENANT_VLANS: True FORCE_CONFIG_DRIVE: True HOST_TOPOLOGY: multinode HOST_TOPOLOGY_ROLE: primary BUILD_TIMEOUT: 1200 INSTALL_TEMPEST: False # Don't install a tempest package globaly HOST_TOPOLOGY_SUBNODES: "{{ hostvars['compute1']['nodepool']['public_ipv4'] }}" IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_BUILD_DEPLOY_RAMDISK: False IRONIC_CALLBACK_TIMEOUT: 700 IRONIC_DEFAULT_DEPLOY_INTERFACE: direct IRONIC_DEPLOY_DRIVER: ipmi IRONIC_VM_COUNT: 4 IRONIC_VM_EPHEMERAL_DISK: 1 IRONIC_VM_SPECS_RAM: 1024 IRONIC_RAMDISK_TYPE: tinyipa IRONIC_TEMPEST_BUILD_TIMEOUT: 1200 IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron IRONIC_NETWORK_INTERFACE: neutron IRONIC_PROVISION_NETWORK_NAME: ironic-provision IRONIC_PROVISION_SUBNET_GATEWAY: 10.0.5.1 IRONIC_PROVISION_SUBNET_PREFIX: 10.0.5.0/24 IRONIC_USE_LINK_LOCAL: True OVS_BRIDGE_MAPPINGS: 'mynetwork:brbm,public:br-infra' OVS_PHYSICAL_BRIDGE: brbm PHYSICAL_NETWORK: mynetwork PUBLIC_BRIDGE: br-infra Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vlan Q_PLUGIN: ml2 SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey TENANT_VLAN_RANGE: 100:150 VIRT_DRIVER: ironic EBTABLES_RACE_FIX: True LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images IRONIC_VM_LOG_DIR: '/opt/stack/ironic-bm-logs' grenade_localrc: BASE_RUN_SMOKE: False devstack_plugins: ironic: https://opendev.org/openstack/ironic networking-generic-switch: https://opendev.org/openstack/networking-generic-switch devstack_services: c-api: False c-bak: False c-sch: False c-vol: False cinder: False ir-api: True ir-cond: True tempest_plugins: - ironic-tempest-plugin tempest_test_regex: BaremetalMultitenancy tox_envlist: all tempest_concurrency: 1 grenade_tempest_concurrency: 1 grenade_test_timeout: 2600 zuul_copy_output: '/opt/stack/ironic-bm-logs': logs '{{ devstack_base_dir }}/data/networking-generic-switch/netmiko_session.log': 'logs' group-vars: subnode: devstack_plugins: ironic: https://opendev.org/openstack/ironic networking-generic-switch: https://opendev.org/openstack/networking-generic-switch devstack_services: c-api: False c-bak: False c-sch: False c-vol: False cinder: False g-api: True ir-api: True ir-cond: True n-cpu: True q-agt: True virtualbmc: True grenade_devstack_localrc: shared: DEFAULT_INSTANCE_TYPE: baremetal ENABLE_TENANT_TUNNELS: False ENABLE_TENANT_VLANS: True FORCE_CONFIG_DRIVE: True HOST_TOPOLOGY: multinode HOST_TOPOLOGY_ROLE: subnode IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_BAREMETAL_BASIC_OPS: True IRONIC_BUILD_DEPLOY_RAMDISK: False BUILD_TIMEOUT: 1200 IRONIC_CALLBACK_TIMEOUT: 700 IRONIC_TEMPEST_BUILD_TIMEOUT: 1200 IRONIC_DEFAULT_DEPLOY_INTERFACE: direct IRONIC_DEPLOY_DRIVER: ipmi IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron IRONIC_NETWORK_INTERFACE: neutron IRONIC_PROVISION_NETWORK_NAME: ironic-provision IRONIC_PROVISION_SUBNET_GATEWAY: 10.0.5.1 IRONIC_PROVISION_SUBNET_PREFIX: 10.0.5.0/24 IRONIC_RAMDISK_TYPE: tinyipa IRONIC_USE_LINK_LOCAL: True IRONIC_VM_COUNT: 4 IRONIC_VM_EPHEMERAL_DISK: 0 IRONIC_VM_SPECS_RAM: 1024 IRONIC_VM_NETWORK_BRIDGE: sub1brbm OVS_BRIDGE_MAPPINGS: 'mynetwork:sub1brbm,public:br-infra' OVS_PHYSICAL_BRIDGE: sub1brbm PHYSICAL_NETWORK: mynetwork PUBLIC_BRIDGE: br-infra Q_AGENT: openvswitch Q_ML2_TENANT_NETWORK_TYPE: vlan Q_PLUGIN: ml2 SWIFT_ENABLE_TEMPURLS: True SWIFT_TEMPURL_KEY: secretkey VIRT_DRIVER: ironic EBTABLES_RACE_FIX: True LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images IRONIC_VM_LOG_DIR: '/opt/stack/ironic-bm-logs' - job: name: ironic-cross-sushy nodeset: ubuntu-jammy description: Ironic unit tests run with Sushy from source parent: openstack-tox required-projects: - opendev.org/openstack/ironic - opendev.org/openstack/sushy irrelevant-files: - ^.*\.rst$ - ^api-ref/.*$ - ^devstack/.*$ - ^doc/.*$ - ^releasenotes/.*$ - ^tools/.*$ vars: # NOTE(dtantsur): change this every release cycle if needed. bindep_profile: test py310 tox_envlist: py310 # This variable ensures that sushy is installed from source. tox_install_siblings: true # NOTE(dtantsur): this job will be run on sushy as well, so it's # important to set the working dir to the Ironic checkout. zuul_work_dir: "{{ ansible_user_dir }}/{{ zuul.projects['opendev.org/openstack/ironic'].src_dir }}" - job: name: ironic-grenade-skip-level parent: ironic-grenade vars: grenade_from_branch: stable/zed grenade_to_branch: master grenade_localrc: # NOTE(iurygregory): This is required for skip upgrades. NOVA_ENABLE_UPGRADE_WORKAROUND: True