From a9f4acfdb099a8c24e35c6329913db10cc3ac150 Mon Sep 17 00:00:00 2001 From: Julia Kreger Date: Fri, 22 Apr 2022 09:57:50 -0700 Subject: [PATCH] Fix v6 CI job - Return it to normal non-voting status * Fixes the IPv6 job by utilizing HOST_IPV6 instead of SERVICE_IPV6, as Devstack now automatically wraps SERVICE_IPV6 with brackets as if it is for a URL. * Locks ipv6 job to bios mode. Ubuntu Focal OVMF/EDK2 does not support IPv6 PXE boot by default. * Split from Devstack in terms of IP usage, since full explicit V6 usage is not a thing anymore. 4+6 is the default in devstack and regardless of what we set on the job we see both now used. So we delineate apart our usage for our own sanity. * Reduce VM Interface count for IPv6 in an attempt to eliminate in-kernel routing confusion by two interfaces on the same physical network. * Set IPv6 mode to dhcpv6-stateless due to fun issues in dhcp clients. When we move to UEFI, this will need to be changed to stateful as stateless is not supported in general by OVMF/E2DK. Once the job has run in normal non-voting for a while, and we ensure that it seems to be stable, we can make it voting again. Change-Id: Ia833bfb64c6c3cc8e48cbe34ed200536652a8adf --- devstack/lib/ironic | 10 ++++++---- zuul.d/ironic-jobs.yaml | 12 ++++++++++-- zuul.d/project.yaml | 4 ++-- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/devstack/lib/ironic b/devstack/lib/ironic index 9ef5d7d043..813a42c72c 100644 --- a/devstack/lib/ironic +++ b/devstack/lib/ironic @@ -500,7 +500,7 @@ else # loopback cannot be used for v6 testing. IRONIC_HOST_IPV6='fc00::1' else - IRONIC_HOST_IPV6=$SERVICE_HOST + IRONIC_HOST_IPV6=$HOST_IPV6 fi IRONIC_PROVISION_SUBNET_GATEWAY=${IRONIC_PROVISION_SUBNET_GATEWAY:-'fc01::1'} IRONIC_PROVISION_SUBNET_SUBNODE_IP=${IRONIC_PROVISION_SUBNET_SUBNODE_IP:-'fc01::2'} @@ -1342,7 +1342,7 @@ function configure_ironic_rescue_network { } function configure_ironic_provision_network { - if [[ "$IP_VERSION" == "6" ]]; then + if [[ "$IRONIC_IP_VERSION" == "6" ]]; then # NOTE(TheJulia): Ideally we should let this happen # with our global address, but iPXE seems to have in # consistant behavior in this configuration with devstack. @@ -1402,9 +1402,11 @@ function configure_ironic_provision_network { --gateway $IRONIC_PROVISION_SUBNET_GATEWAY --network $net_id \ --subnet-range $IRONIC_PROVISION_SUBNET_PREFIX -f value -c id)" else + # NOTE(TheJulia): Consider changing this to stateful to support UEFI once we move + # CI to Ubuntu Jammy as it will support v6 and v4 UEFI firmware driven boot ops. subnet_id="$(openstack --os-cloud $OS_CLOUD subnet create --ip-version 6 \ - --ipv6-address-mode dhcpv6-stateful \ - --ipv6-ra-mode dhcpv6-stateful \ + --ipv6-address-mode dhcpv6-stateless \ + --ipv6-ra-mode dhcpv6-stateless \ --dns-nameserver 2001:4860:4860::8888 \ ${net_segment_id:+--network-segment $net_segment_id} \ $IRONIC_PROVISION_PROVIDER_SUBNET_NAME \ diff --git a/zuul.d/ironic-jobs.yaml b/zuul.d/ironic-jobs.yaml index 0271a469a1..2cef9fdc2b 100644 --- a/zuul.d/ironic-jobs.yaml +++ b/zuul.d/ironic-jobs.yaml @@ -744,8 +744,7 @@ devstack_localrc: IRONIC_AGENT_IMAGE_DOWNLOAD_SOURCE: http IPV6_ENABLED: True - IP_VERSION: 6 - SERVICE_IP_VERSION: 6 + IRONIC_IP_VERSION: 6 IRONIC_AUTOMATED_CLEAN_ENABLED: False IRONIC_ENABLED_BOOT_INTERFACES: ipxe,pxe IRONIC_DEFAULT_BOOT_INTERFACE: ipxe @@ -760,6 +759,7 @@ 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 @@ -773,6 +773,14 @@ 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 diff --git a/zuul.d/project.yaml b/zuul.d/project.yaml index dc695e51e5..724014b9a9 100644 --- a/zuul.d/project.yaml +++ b/zuul.d/project.yaml @@ -45,6 +45,8 @@ voting: false - ironic-tempest-ipa-wholedisk-bios-ipmi-direct-dib: voting: false + - ironic-tempest-ipxe-ipv6: + voting: false - ironic-inspector-tempest-rbac-scope-enforced: voting: false - bifrost-integration-tinyipa-ubuntu-focal: @@ -80,8 +82,6 @@ jobs: # TODO(dtantsur): these jobs are useful but currently hopelessly # broken. Fix them and bring back to the gate. - - ironic-tempest-ipxe-ipv6: - voting: false - ironic-grenade-multinode-multitenant: voting: false - ironic-inspector-tempest-discovery-fast-track: