OVN UEFI IPv6 CI job

IPv6 job using UEFI and OVN with dhcpv6-stateful address mode.

Updates the devstack plugin to ensure CentOS DIB ironic-python-agent is
always used for dhcpb6-stateful, udhcpc in tinycore does not support
DHCPv6.

Ensure mtu on the ironic-provision network matches PUBLIC_BRIDGE_MTU
when Ironic IPv6 is used. This ensures we do not get packet drops from
over-mtu.

Devstack plugin will ignore any HOST_IPV6 address discovered, always
using the magigv6 interface and 'fc00::1' as IRONIC_HOST_IPV6.

Change-Id: Iab97d78d7a075eaef3bdcfc08fc4f184a5ea490a
This commit is contained in:
Harald Jensås
2025-02-12 11:11:07 +01:00
parent d6a692e3fa
commit 782045852f
3 changed files with 68 additions and 10 deletions

View File

@@ -304,7 +304,8 @@ fi
# NOTE(TheJulia): If we ever run any arm64, we will need to consider doing
# the same. Nested virt is not a thing there.
# Prevent a case that will likely result in a failure.
if [[ $IRONIC_HW_ARCH != "aarch64" ]]; then
# NOTE(hjensas): tinyipa does not support dhcpv6-stateful
if [[ $IRONIC_HW_ARCH != "aarch64" ]] && [[ $IRONIC_IPV6_ADDRESS_MODE != "dhcpv6-stateful" ]]; then
if [[ "$hostdomain" =~ "rax" ]] || [[ "$hostdomain" =~ "iweb" ]] || ! $(grep -q -E 'vmx|svm' /proc/cpuinfo) ; then
if [[ "$IRONIC_RAMDISK_TYPE" == "dib" ]]; then
echo "** WARNING ** - DIB based IPA images have been defined, however we are running devstack on an environment which does not support nested VMs. Due to virtualization constraints, we are automatically falling back to TinyIPA to ensure CI job passage."
@@ -528,16 +529,9 @@ if [[ "$IRONIC_IP_VERSION" != '6' ]]; then
IRONIC_PROVISION_SUBNET_PREFIX=${IRONIC_PROVISION_SUBNET_PREFIX:-'10.0.5.0/24'}
else
IRONIC_IP_VERSION='6'
# NOTE(TheJulia): The IPv6 address devstack has identified is the
# local loopback. This does not really serve our purposes very
# well, so we need to setup something that will work.
if [[ "$HOST_IPV6" == '::1' ]] || [[ ! $HOST_IPV6 =~ "::" ]]; then
# We setup an address elsewhere because the service address of
# loopback cannot be used for v6 testing.
IRONIC_HOST_IPV6='fc00::1'
else
IRONIC_HOST_IPV6=$HOST_IPV6
fi
# HOST_IPV6 cannot be used for v6 testing.
IRONIC_HOST_IPV6='fc00::1'
IRONIC_PROVISION_SUBNET_GATEWAY=${IRONIC_PROVISION_SUBNET_GATEWAY:-'fc01::1'}
IRONIC_PROVISION_SUBNET_SUBNODE_IP=${IRONIC_PROVISION_SUBNET_SUBNODE_IP:-'fc01::2'}
IRONIC_PROVISION_SUBNET_PREFIX=${IRONIC_PROVISION_SUBNET_PREFIX:-'fc01::/64'}
@@ -1519,6 +1513,10 @@ function configure_ironic_provision_network {
--subnet-range $IRONIC_PROVISION_SUBNET_PREFIX \
--dns-nameserver 8.8.8.8 -f value -c id)"
else
# NOTE(hjensas) Ensure mtu matches public bridge mtu, to avoid "dropped over-mtu packet" issue on IPv6
if [[ -n "$PUBLIC_BRIDGE_MTU" ]]; then
openstack network set --mtu "$PUBLIC_BRIDGE_MTU" $net_id
fi
subnet_id="$(openstack --os-cloud $OS_CLOUD subnet create --ip-version 6 \
--ipv6-address-mode $IRONIC_IPV6_ADDRESS_MODE \
--ipv6-ra-mode $IRONIC_IPV6_ADDRESS_MODE \

View File

@@ -939,6 +939,64 @@
IRONIC_PING_TIMEOUT: 1440
IRONIC_BOOT_MODE: bios
- job:
name: ironic-tempest-ovn-uefi-ipxe-ipv6
description: ironic-tempest-ovn-uefi-ipxe-ipv6
parent: ironic-base
required-projects:
- opendev.org/openstack/networking-generic-switch
vars:
tempest_test_timeout: 2400
devstack_services:
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.

View File

@@ -22,6 +22,7 @@
- ironic-tempest-ramdisk-bios-snmp-pxe
- ironic-tempest-uefi-redfish-https
- ironic-tempest-ovn-uefi-ipmi-pxe
- ironic-tempest-ovn-uefi-ipxe-ipv6
# NOTE(TheJulia) Marking multinode non-voting on 20210311
# Due to a high failure rate on limestone where the compute1
# machine never appears to be able to communicate across the
@@ -81,6 +82,7 @@
- ironic-tempest-ramdisk-bios-snmp-pxe
- ironic-tempest-uefi-redfish-https
- ironic-tempest-ovn-uefi-ipmi-pxe
- ironic-tempest-ovn-uefi-ipxe-ipv6
# NOTE(TheJulia): Disabled multinode on 20210311 due to Limestone
# seeming to be
# - ironic-tempest-ipa-wholedisk-direct-tinyipa-multinode