
We're seeing some CI jobs fail due to the ramdisk running out of storage. This should increase the memory allocation slightly to overall hopefully enable CI jobs to pass cleanly without issues. Change-Id: Iec639cfc029065e378eb69f09200bf92d2313ee0 Signed-off-by: Julia Kreger <juliaashleykreger@gmail.com>
1385 lines
51 KiB
YAML
1385 lines
51 KiB
YAML
---
|
|
# 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
|
|
|
|
# NOTE(TheJulia): Based upon openstack-two-node-noble, but modeled
|
|
# for Ironic's multinode jobs.
|
|
- nodeset:
|
|
name: ironic-three-node-noble
|
|
nodes:
|
|
- name: controller
|
|
label: ubuntu-noble
|
|
- name: compute0
|
|
label: ubuntu-noble
|
|
- name: compute1
|
|
label: ubuntu-noble
|
|
groups:
|
|
# Node where tests are executed and test results collected
|
|
- name: tempest
|
|
nodes:
|
|
- controller
|
|
# Nodes running the compute service
|
|
- name: compute
|
|
nodes:
|
|
- controller
|
|
- compute0
|
|
- compute1
|
|
# Nodes that are not the controller
|
|
- name: subnode
|
|
nodes:
|
|
- compute0
|
|
- compute1
|
|
# Switch node for multinode networking setup
|
|
- name: switch
|
|
nodes:
|
|
- controller
|
|
# Peer nodes for multinode networking setup
|
|
- name: peers
|
|
nodes:
|
|
- compute0
|
|
- compute1
|
|
|
|
- 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: 2600
|
|
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: 2000
|
|
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: 2000
|
|
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: False
|
|
IRONIC_VM_COUNT: 2
|
|
IRONIC_VM_EPHEMERAL_DISK: 1
|
|
IRONIC_VM_SPECS_RAM: 2750
|
|
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
|
|
atop: True
|
|
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 redfish hardware type, ramdisk
|
|
and direct deploy interfaces, rescue enabled using ARM64 VMs as deploy
|
|
targets. If this job fails alone, there may be an issue with ARM support
|
|
specifically.
|
|
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:
|
|
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 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.
|
|
# NOTE(JayF) 2025 Apr 7 noticed usage in IPA; removal in
|
|
# https://review.opendev.org/c/openstack/ironic-python-agent/+/946580
|
|
- job:
|
|
name: ironic-standalone
|
|
description:
|
|
Deprecated standalone job. Do not use this as a parent or run it.
|
|
Scheduled for removal.
|
|
parent: ironic-base
|
|
nodeset: ironic-single-node-noble
|
|
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: 3
|
|
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_RPC_TRANSPORT: json-rpc
|
|
IRONIC_VM_SPECS_CPU: 1
|
|
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
|
|
# ephemeral partition on such nodes
|
|
LIBVIRT_STORAGE_POOL_PATH: /opt/libvirt/images
|
|
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:
|
|
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
|
|
q-agt: False
|
|
q-dhcp: False
|
|
q-l3: False
|
|
ovn-controller: True
|
|
ovn-northd: True
|
|
q-ovn-metadata-agent: True
|
|
|
|
- job:
|
|
name: ironic-standalone-redfish
|
|
parent: ironic-base
|
|
nodeset: ironic-single-node-noble
|
|
description:
|
|
Test ironic standalone configured with redfish hardware type,
|
|
direct, and ansible deploy interfaces, rescue is not enabled.
|
|
If this job fails alone, look for regressions in the ansible deploy
|
|
interfaces.
|
|
required-projects:
|
|
- opendev.org/openstack/sushy-tools
|
|
- opendev.org/openstack/ironic-python-agent-builder
|
|
vars:
|
|
tempest_test_regex: ironic_standalone
|
|
tempest_concurrency: 3
|
|
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_VM_COUNT: 5
|
|
IRONIC_VM_VOLUME_COUNT: 2
|
|
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
|
|
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:
|
|
# 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. If this fails alone,
|
|
check for regressions in the anaconda deployment interface. Also,
|
|
this job uses external, third-party mirrors and is susceptible to
|
|
network failures.
|
|
required-projects:
|
|
- opendev.org/openstack/sushy-tools
|
|
vars:
|
|
tempest_test_regex: BaremetalRedfishIPxeAnacondaNoGlance
|
|
tempest_test_timeout: 4800
|
|
tempest_concurrency: 1
|
|
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
|
|
# 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
|
|
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
|
|
|
|
|
|
- job:
|
|
name: ironic-tempest-bios-redfish-pxe
|
|
description: Ironic configured with legacy BIOS boot, a minimal
|
|
redfish bmc, and shards. If this job fails alone, check for regressions
|
|
around legacy bios booting or an accidental requirement of some advanced
|
|
redfish feature.
|
|
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:
|
|
atop: True
|
|
# 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: Happy path virtual media deploy over Redfish using UEFI boot
|
|
mode. If this job fails alone, it indicates a failure either with grub
|
|
booting, an issue with swift, or an issue with virtual media support.
|
|
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:
|
|
atop: True
|
|
s-account: True
|
|
s-container: True
|
|
s-object: True
|
|
s-proxy: True
|
|
|
|
- job:
|
|
name: ironic-tempest-uefi-redfish-https
|
|
description: Identical to ironic-tempest-uefi-redfish-vmedia except
|
|
instead of virtual media, uefi http(s) boot is used. If only this
|
|
job fails, it's likely a regression in EDK2 (QEMU VM firmware) or
|
|
our UEFI http(s) boot support.
|
|
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:
|
|
atop: True
|
|
s-account: True
|
|
s-container: True
|
|
s-object: True
|
|
s-proxy: True
|
|
|
|
# NOTE(JayF) Ironic inspector is deprecated and pending removal.
|
|
# TODO(JayF) Remove this job.
|
|
- 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:
|
|
atop: True
|
|
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
|
|
# NOTE(JayF): ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa
|
|
# is based on this job, and is used by Nova, Glance, and Neutron as a
|
|
# basis for their CI jobs.
|
|
- job:
|
|
name: ironic-tempest-ipa-wholedisk-bios-agent_ipmitool
|
|
description: Base for
|
|
ironic-tempest-ipa-wholedisk-bios-agent_ipmitool-tinyipa, which is used
|
|
by Nova, Glance, and Neutron as a basis for their CI jobs. Not used in
|
|
any Ironic project.
|
|
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:
|
|
atop: True
|
|
s-account: True
|
|
s-container: True
|
|
s-object: True
|
|
s-proxy: True
|
|
|
|
# TODO(JayF): Tempest CI for SNMP is on its last legs; we are holding back
|
|
# all openstack projects from updating pyasn1* packages due to our use of
|
|
# pysnmp-lextudio instead of modern pysnmp. This job should be reworked to
|
|
# no longer require SNMP and instead test the other items this job is for
|
|
# and a mail sent to the list asking for action to keep it alive.
|
|
- 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:
|
|
atop: True
|
|
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-based deployment. A
|
|
failure in only this and other *ovn* jobs is likely a regression in
|
|
Ironic or Neutron support for OVN.
|
|
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:
|
|
atop: True
|
|
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: Chainloads from iPXE into a cinder iSCSI volume. If this job
|
|
fails alone, it likely indicates a regression in boot from volume
|
|
support in Ironic, Nova virt driver, or Cinder, iPXE changes,
|
|
or some combination of them.
|
|
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
|
|
devstack_services:
|
|
atop: True
|
|
c-api: True
|
|
c-bak: True
|
|
c-sch: True
|
|
c-vol: True
|
|
cinder: True
|
|
|
|
# TODO(JayF): Ironic inspector is deprecated and scheduled for retirement
|
|
# we should remove this job soon. Apr 7 2025
|
|
- 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:
|
|
atop: True
|
|
s-account: True
|
|
s-container: True
|
|
s-object: True
|
|
s-proxy: True
|
|
|
|
# TODO(JayF): Ironic inspector is deprecated and scheduled for retirement
|
|
# we should remove this job soon. Apr 7 2025
|
|
- job:
|
|
name: ironic-tempest-functional-python3
|
|
description: This runs the API-based tempest tests from
|
|
ironic-tempest-plugin. A failure here is likely a violation
|
|
of our API contract in some way or a default configuration
|
|
being changed.
|
|
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:
|
|
atop: True
|
|
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-ipa-wholedisk-direct-multinode
|
|
description: Utilizes multiple devstack nodes to test
|
|
ML2 integration between Ironic, Neutron, and
|
|
networking-generic-switch. Most common cause of failure is
|
|
resource contention with other jobs, causing cross-node
|
|
communication failures or DHCP issues.
|
|
parent: tempest-multinode-full-base
|
|
nodeset: ironic-three-node-noble
|
|
pre-run: playbooks/ci-workarounds/pre.yaml
|
|
post-run: playbooks/ci-workarounds/get_extra_logging.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/sushy-tools
|
|
- 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: "BaremetalMultitenancy"
|
|
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
|
|
# NOTE(TheJulia): We *MUST* list all of the hosts in this list,
|
|
# this drives the configuration of switch references on the controller
|
|
# node. Furthermore, this job will fail if there is not a public IPv4
|
|
# address available for the SSH access to manage port configurations.
|
|
HOST_TOPOLOGY_SUBNODES: "{{ hostvars['compute0']['nodepool']['public_ipv4'] }} {{ hostvars['compute1']['nodepool']['public_ipv4'] }}"
|
|
IRONIC_BAREMETAL_BASIC_OPS: True
|
|
IRONIC_BUILD_DEPLOY_RAMDISK: False
|
|
IRONIC_CALLBACK_TIMEOUT: 600
|
|
IRONIC_DEPLOY_DRIVER: redfish
|
|
IRONIC_ENABLED_BOOT_INTERFACES: "redfish-virtual-media"
|
|
IRONIC_ENABLED_HARDWARE_TYPES: redfish
|
|
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
|
|
IRONIC_REDFISH_EMULATOR_FEATURE_SET: vmedia
|
|
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_TEMPEST_BUILD_TIMEOUT: 600
|
|
IRONIC_TEMPEST_WHOLE_DISK_IMAGE: True
|
|
IRONIC_USE_LINK_LOCAL: True
|
|
IRONIC_VM_COUNT: 1
|
|
IRONIC_VM_EPHEMERAL_DISK: 0
|
|
IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
|
|
IRONIC_VM_SPECS_DISK: 10
|
|
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
|
|
ML2_L3_PLUGIN: router,trunk
|
|
|
|
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:
|
|
atop: True
|
|
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
|
|
tls-proxy: False
|
|
group-vars:
|
|
# Turns out, devstack looks for the subnode group name.
|
|
subnode:
|
|
devstack_services:
|
|
atop: True
|
|
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
|
|
tls-proxy: False
|
|
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: redfish
|
|
IRONIC_ENABLED_BOOT_INTERFACES: "redfish-virtual-media"
|
|
IRONIC_ENABLED_HARDWARE_TYPES: redfish
|
|
IRONIC_ENABLED_MANAGEMENT_INTERFACES: redfish
|
|
IRONIC_REDFISH_EMULATOR_FEATURE_SET: vmedia
|
|
IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron
|
|
IRONIC_NETWORK_INTERFACE: neutron
|
|
IRONIC_PROVISION_NETWORK_NAME: ironic-provision
|
|
IRONIC_USE_LINK_LOCAL: True
|
|
IRONIC_VM_COUNT: 3
|
|
IRONIC_VM_EPHEMERAL_DISK: 0
|
|
IRONIC_VM_LOG_DIR: '{{ devstack_base_dir }}/ironic-bm-logs'
|
|
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
|
|
OVS_BRIDGE_MAPPINGS: 'mynetwork:brbm,public:br-infra'
|
|
OVS_PHYSICAL_BRIDGE: brbm
|
|
|
|
- job:
|
|
# NOTE(TheJulia): Compatibility job definition, can be removed.
|
|
name: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode
|
|
description: ironic-tempest-ipa-wholedisk-direct-multinode
|
|
parent: ironic-tempest-ipa-wholedisk-direct-multinode
|
|
|
|
- job:
|
|
# NOTE(TheJulia): Compatibility job definition, can be removed.
|
|
name: ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode-shard
|
|
description: ironic-tempest-ipa-wholedisk-direct-multinode-shard
|
|
parent: ironic-tempest-ipa-wholedisk-direct-multinode-shard
|
|
|
|
|
|
# TODO(JayF): This job should be consolidaated into the
|
|
# ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode -- there is no
|
|
# value in running a separate unsharded multinode test.
|
|
- 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-multinode-shard
|
|
description: ironic-tempest-ipa-wholedisk-direct-multinode-shard
|
|
with automated cleaning enabled.
|
|
parent: ironic-tempest-ipa-wholedisk-direct-multinode
|
|
nodeset: ironic-three-node-noble
|
|
vars:
|
|
tempest_test_regex: "BaremetalBasicOps"
|
|
devstack_localrc:
|
|
IRONIC_SHARDS: 1
|
|
IRONIC_SHARD_1_NAME: "main-node"
|
|
IRONIC_AUTOMATED_CLEAN_ENABLED: True
|
|
# Let the local services ignore the controller node,
|
|
# but focus on managing the nodes on the subnode, since
|
|
# we have greater resources on the other nodes.
|
|
IRONIC_NODE_SHARD_NAME: "subnode"
|
|
group-vars:
|
|
subnode:
|
|
devstack_localrc:
|
|
IRONIC_SHARDS: 1
|
|
IRONIC_SHARD_1_NAME: "subnode"
|
|
IRONIC_NODE_SHARD_NAME: "main-node"
|
|
|
|
- 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(JayF): We likely no longer need to segregate these.
|
|
- job:
|
|
name: ironic-tox-unit-mysql-migrations
|
|
parent: openstack-tox
|
|
description: |
|
|
Run MySQL based data model migrations. These are excluded from
|
|
typical unit test runs.
|
|
vars:
|
|
tox_envlist: mysql-migrations
|
|
|
|
# TODO(JayF): Ironic inspector is deprecated and scheduled for retirement
|
|
# we should restructure and rename this job to ensure it keeps working.
|
|
# This is the only job that tests fast track. Apr 7 2025
|
|
- 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 (NOT iPXE),
|
|
UEFI, and grub2. If this job fails alone, it indicates grub2 network
|
|
booting or UEFI-based network booting is failed.
|
|
parent: ironic-base
|
|
vars:
|
|
devstack_localrc:
|
|
IRONIC_ENABLED_HARDWARE_TYPES: ipmi
|
|
IRONIC_ENABLED_BOOT_INTERFACES: pxe
|
|
IRONIC_IPXE_ENABLED: False
|
|
IRONIC_AUTOMATED_CLEAN_ENABLED: False
|
|
# NOTE(JayF): This is when pairing stopped
|
|
# TODO(JayF): Remove ^^^^ once reviewed by Julia
|
|
- job:
|
|
name: ironic-tempest-ipa-wholedisk-bios-ipmi-direct-dib
|
|
description: Tests whole disk booting with swift and an image
|
|
built using ironic-python-agent-builder with diskimage-builder.
|
|
If this job fails alone, ensure the DIB image our CI is using from
|
|
tarballs.openstack.org is valid and that there was enough resources
|
|
to run it in the test VM.
|
|
parent: ironic-base
|
|
vars:
|
|
devstack_services:
|
|
atop: True
|
|
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: Test ironic workflows with IPv6 enabled tests. If this job
|
|
fails alone, ensure Ironic, Neutron, or networking-generic-switch has
|
|
not introduced changes to regress IPv6 support. Also beware of bugs in
|
|
EDK2 (VM firmware) images causing false failures in this job.
|
|
parent: ironic-base
|
|
required-projects:
|
|
- opendev.org/openstack/networking-generic-switch
|
|
vars:
|
|
tempest_test_timeout: 2400
|
|
devstack_services:
|
|
atop: True
|
|
# 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
|
|
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
|
|
|
|
- job:
|
|
name: ironic-tempest-ovn-uefi-ipxe-ipv6
|
|
description: Test ironic with OVN and IPv6. If this job fails alone,
|
|
it may indicate a regression in IPv6 support generally with Ironic,
|
|
Neutron, OVN, networking-generic-switch, or the EDK2 firmware running
|
|
on qemu test vms.
|
|
parent: ironic-base
|
|
required-projects:
|
|
- opendev.org/openstack/networking-generic-switch
|
|
vars:
|
|
tempest_test_timeout: 2400
|
|
devstack_services:
|
|
atop: True
|
|
q-agt: false
|
|
q-dhcp: false
|
|
q-l3: false
|
|
ovn-controller: true
|
|
ovn-northd: true
|
|
ovsdb-server: true
|
|
q-ovn-metadata-agent: true
|
|
q-metering: false
|
|
swift: true
|
|
devstack_plugins:
|
|
ironic: https://opendev.org/openstack/ironic
|
|
networking-generic-switch: https://opendev.org/openstack/networking-generic-switch
|
|
tempest_test_regex: BaremetalSingleTenant
|
|
devstack_localrc:
|
|
IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http
|
|
IRONIC_RAMDISK_TYPE: dib
|
|
IRONIC_DIB_RAMDISK_OS: centos9
|
|
IPV6_ENABLED: True
|
|
IRONIC_IP_VERSION: 6
|
|
IRONIC_IPV6_ADDRESS_MODE: dhcpv6-stateful
|
|
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
|
|
OVN_BRIDGE_MAPPINGS: "public:br-ex,mynetwork:brbm"
|
|
TENANT_VLAN_RANGE: 100:150
|
|
IRONIC_ENABLED_NETWORK_INTERFACES: flat,neutron
|
|
IRONIC_NETWORK_INTERFACE: neutron
|
|
IRONIC_DEFAULT_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
|
|
IRONIC_VM_SPECS_CPU: 2
|
|
Q_AGENT: ovn
|
|
ENABLE_CHASSIS_AS_GW: true
|
|
Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn
|
|
ML2_L3_PLUGIN: ovn-router,trunk
|
|
ENABLE_TENANT_VLANS: True
|
|
Q_ML2_TENANT_NETWORK_TYPE: vlan
|
|
PUBLIC_PHYSICAL_NETWORK: public
|
|
PUBLIC_PROVIDERNET_TYPE: flat
|
|
BUILD_TIMEOUT: 2000
|
|
IRONIC_TEMPEST_BUILD_TIMEOUT: 2000
|
|
IRONIC_PING_TIMEOUT: 1440
|
|
|
|
# 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
|
|
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_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
|
|
s-container: True
|
|
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
|
|
|
|
- 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
|
|
description: This job deploys the previous release of Ironic with devstack,
|
|
then runs scripts to upgrade it to the master release. If this job fails
|
|
alone, it indicates we may have broken upgrading Ironic. This job is also
|
|
more likely to be the victim of resource contention as it is one of the
|
|
longest running jobs.
|
|
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_TEMPEST_WHOLE_DISK_IMAGE: True
|
|
IRONIC_VM_COUNT: 2
|
|
IRONIC_VM_EPHEMERAL_DISK: 0
|
|
IRONIC_VM_SPECS_RAM: 2600
|
|
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.
|
|
NEUTRON_ENDPOINT_SERVICE_NAME: networking
|
|
# This option is being removed in 2025.2 devstack,
|
|
# but is applicable for 2025.1.
|
|
NEUTRON_DEPLOY_MOD_WSGI: 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-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
|
|
description:
|
|
This job deploys the previous SLURP release of Ironic with devstack,
|
|
then runs scripts to upgrade it to the master release. If this job fails
|
|
alone, it indicates we may have broken upgrading Ironic across SLURP
|
|
releases. This job is also more likely to be the victim of resource
|
|
contention as it is one of the longest running jobs.
|
|
parent: ironic-grenade
|
|
vars:
|
|
grenade_from_branch: stable/2025.1
|
|
grenade_to_branch: master
|
|
grenade_localrc:
|
|
# NOTE(iurygregory): This is required for skip upgrades.
|
|
NOVA_ENABLE_UPGRADE_WORKAROUND: True
|