
When Ironic's CI went to Ubuntu Noble, IPv6 testing broke. Ultimately, that was because the job was changed from BIOS boot mode to UEFI. Which in theory was a good thing. But in reviewing the EDK2 known bugs[0], it is clear IPv6 testing moving forward needs to be manual and cannot be done automatically. For the reader's context, EDK2 is the source of the firmware used for Libvirt UEFI VMs. In attempting to work through the issues, we discovered: - EDK2 doesn't care about stateless (auto discovery) mode, and thus doesn't work when that is set. It attempts to solicit an address, which is an open bug [1] from 2019, opened by an Ironic contributor. - EDK2 *always* attempts PXE v4 first, which takes 60 seconds to timeout, before attempting PXE v6. - PXE v6 *might* work before it times out, which takes 5 minutes to occur, if the dhcp server has cleared leases, but there is no guarentee. In most cases the result is the DHCP server views the address as handed out and that there are no free addresses available to supply. This is also rooted in bug [2], also opened in 2019. - EDK2 then switches gears and tries HTTPBoot... simiarly, but the way it does so, noted in bug [3], is also incompatible with dnsmasq. There are additional bugs, but one sort of gets the idea. Some of this is compounded by aspects like dnsmasq attempting to be strict about responding to requests in the DHCPv6 model. A different DHCP server *might* demonstrate a little differently, but fundimentally the same underlying issues in EDK2 will make testing difficult. In attempting to fix this issue, we also attempted to revert back to BIOS mode. This mode uses iPXE ROM images built for QEMU, yet we quickly discovered these pre-built ROM images lacked IPv6 support in Ubuntu Noble. This likely a regression of Ubuntu, but bug tracking points directly to Upstream iPXE which is not valid as it is a compile time option. Testing the ROMs showed only DHCPv4 being attempted and IPv6 router advertisements being entirely ignored. In a sense, if it did work, it would still kind of be cheating as the iPXE ROM is able to skip the first part of the complexity related to PXE in general. In other words, it is not an entirely realistic test when compared to Bare Metal. As such, we don't have a forward path to "fix" this CI job as is. We know the code works. We know vendor firmware sometimes has quarks like needing stateless or stateful operation, We know Ironic does the right thing... within it's capabilities. We just can't test this in CI. [0]: https://github.com/tianocore/edk2/issues?q=is%3Aissue%20state%3Aopen%20%20ipv6 [1]: https://github.com/tianocore/edk2/issues/9832 [2]: https://github.com/tianocore/edk2/issues/9828 [3]: https://github.com/tianocore/edk2/issues/9689 Change-Id: Ifc25bc1e1abb949892a1297a313d63f74937c9a1
1282 lines
45 KiB
YAML
1282 lines
45 KiB
YAML
---
|
|
- job:
|
|
name: ironic-base
|
|
abstract: true
|
|
description: Base job for devstack/tempest based ironic jobs.
|
|
parent: devstack-tempest
|
|
nodeset: openstack-single-node-noble
|
|
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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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 globally
|
|
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 initialization).
|
|
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
|
|
openstack-cli-server: True
|
|
|
|
- job:
|
|
name: ironic-standalone-aarch64
|
|
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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^releasenotes/.*$
|
|
- ^setup.cfg$
|
|
- ^test-requirements.txt$
|
|
- ^tools/.*$
|
|
- ^tox.ini$
|
|
vars:
|
|
tempest_test_regex: BaremetalDriverDirectWholedisk
|
|
tempest_concurrency: 2
|
|
devstack_localrc:
|
|
FORCE_CONFIG_DRIVE: False
|
|
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
|
|
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
|
IRONIC_BUILD_DEPLOY_RAMDISK: False
|
|
IRONIC_DEPLOY_DRIVER: redfish
|
|
IRONIC_DEFAULT_RESCUE_INTERFACE: agent
|
|
IRONIC_ENABLED_BOOT_INTERFACES: "ipxe,redfish-virtual-media,http-ipxe,pxe,http"
|
|
IRONIC_ENABLED_HARDWARE_TYPES: redfish
|
|
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
|
|
IRONIC_ENABLED_DEPLOY_INTERFACES: "direct,ramdisk"
|
|
IRONIC_ENABLED_RESCUE_INTERFACES: "agent,no-rescue"
|
|
IRONIC_BOOT_MODE: uefi
|
|
IRONIC_CALLBACK_TIMEOUT: 800
|
|
IRONIC_GRUB2_SHIM_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/aarch64/os/EFI/BOOT/BOOTAA64.EFI
|
|
IRONIC_GRUB2_FILE: https://mirror.stream.centos.org/9-stream/BaseOS/aarch64/os/EFI/BOOT/grubaa64.efi
|
|
IRONIC_HW_ARCH: aarch64
|
|
IRONIC_DIB_RAMDISK_OS: debian-arm64
|
|
IRONIC_VM_SPECS_RAM: 4096
|
|
IRONIC_VM_SPECS_CPU: 1
|
|
IRONIC_VM_COUNT: 1
|
|
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
|
|
|
|
# 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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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
|
|
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
|
|
# 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_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
|
|
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 minimum 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:
|
|
# NOTE(iurygregory): switch to only wholedisk test, since the
|
|
# partition test is failing randomly.
|
|
tempest_test_regex: test_baremetal_server_ops_wholedisk_image
|
|
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-tempest-uefi-redfish-https
|
|
description: "Deploy ironic node utilizing https boot interface"
|
|
parent: ironic-base
|
|
required-projects:
|
|
- opendev.org/openstack/sushy
|
|
- opendev.org/openstack/sushy-tools
|
|
vars:
|
|
tempest_test_regex: test_baremetal_server_ops_wholedisk_image
|
|
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-https
|
|
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://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/BOOTX64.EFI"
|
|
IRONIC_GRUB2_FILE: "https://{{ zuul_site_mirror_fqdn }}/centos-stream/9-stream/BaseOS/x86_64/os/EFI/BOOT/grubx64.efi"
|
|
IRONIC_GRUB2_CONFIG_PATH: EFI/BOOT/grub.cfg
|
|
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-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
|
|
|
|
# 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
|
|
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:
|
|
# NOTE(iurygregory): switch to only wholedisk test, since the
|
|
# partition test is failing randomly.
|
|
tempest_test_regex: test_baremetal_server_ops_wholedisk_image
|
|
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
|
|
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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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: True
|
|
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
|
|
# NOTE(TheJulia): This job runs neutron so neutron dependent
|
|
# tests can also exercised as part of CI.
|
|
- 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-noble
|
|
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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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 globally
|
|
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-noble
|
|
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
|
|
|
|
- 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:
|
|
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
|
|
|
|
# NOTE(TheJulia): This job does not work on Ubuntu Noble, much less
|
|
# newer EDK2 images when in UEFI mode. As such is being disabled.
|
|
# Reasons: EDK2 has a ton of ipv6 bugs. IPv6 support not in qemu/ipxe
|
|
# bios roms *either*. Concurrently, this means we can't test realistic
|
|
# deployment and booting, nor can we test a short circuited ipxe workflow
|
|
# upstream. In case this situation changes, keeping the job configuration
|
|
# below.
|
|
- 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
|
|
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-tempest-uefi-redfish-vmedia-4k
|
|
description: "Build 4k disk artifacts with 4k VMs"
|
|
parent: ironic-tempest-uefi-redfish-vmedia
|
|
vars:
|
|
tempest_test_timeout: 2800
|
|
devstack_localrc:
|
|
# NOTE(TheJulia): This job takes a while because it is blending
|
|
# vmedia *and* 4k block device layouts which requires mastering and
|
|
# streaming a real image as opposed to cirros.
|
|
BUILD_TIMEOUT: 2400
|
|
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
|
IRONIC_VM_COUNT: 1
|
|
IRONIC_VM_SPECS_DISK: 20
|
|
IRONIC_VM_BLOCK_SIZE: 4096
|
|
IRONIC_BUILD_DIB_IMAGE: True
|
|
SWIFT_ENABLE_TEMPURLS: False
|
|
# This job by defaults deploys a dib cirros image,
|
|
# and to do so, the instance user is not cirros.
|
|
DEFAULT_INSTANCE_USER: "cloud-user"
|
|
IRONIC_DEFAULT_RESCUE_INTERFACE: "no-rescue"
|
|
IRONIC_ENABLED_RESCUE_INTERFACES: "fake,no-rescue"
|
|
|
|
- job:
|
|
name: ironic-grenade
|
|
parent: grenade
|
|
timeout: 10800
|
|
irrelevant-files:
|
|
- ^driver-requirements.txt$
|
|
- ^.*\.rst$
|
|
- ^api-ref/.*$
|
|
- ^doc/.*$
|
|
- ^install-guide/.*$
|
|
- ^ironic/locale/.*$
|
|
- ^ironic/tests/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^redfish-interop-profiles/.*$
|
|
- ^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/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 globally
|
|
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-noble
|
|
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/.*$
|
|
- ^\.pre-commit-config\.yaml$
|
|
- ^releasenotes/.*$
|
|
- ^tools/.*$
|
|
vars:
|
|
# NOTE(dtantsur): change this every release cycle if needed.
|
|
bindep_profile: test py312
|
|
tox_envlist: py312
|
|
# 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
|