ironic/zuul.d/ironic-jobs.yaml
2023-10-10 16:01:15 +00:00

1199 lines
41 KiB
YAML

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