From 8d79c201113e6b866ee314f2c2d3c9dd718904b1 Mon Sep 17 00:00:00 2001 From: Marius Cornea Date: Fri, 20 Mar 2026 15:17:47 +0200 Subject: [PATCH 1/2] Add deploy-sno-reconfig-ipv6 test job for jetlag Add a test job that deploys SNO with IPv4, then reconfigures for single-stack IPv6 with bastion registry and redeploys on the same bastion without cleaning up. This tests that the assisted-service pod properly picks up configuration changes on redeploy. New env var REDEPLOY_IPV6 controls the reconfig behavior. Uses JETLAG_PR=787 to test the companion jetlag fix. Co-Authored-By: Claude Opus 4.6 --- .../redhat-performance-jetlag-main.yaml | 12 +++++ ...enshift-qe-installer-bm-deploy-commands.sh | 50 +++++++++++++++++++ .../openshift-qe-installer-bm-deploy-ref.yaml | 6 +++ 3 files changed, 68 insertions(+) diff --git a/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml b/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml index 3455add091a14..5f34236d533b4 100644 --- a/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml +++ b/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml @@ -26,6 +26,18 @@ tests: env: TYPE: sno workflow: openshift-qe-installer-bm-deploy +- always_run: false + as: deploy-sno-reconfig-ipv6 + capabilities: + - intranet + restrict_network_access: false + steps: + cluster_profile: metal-perfscale-jetlag + env: + TYPE: sno + REDEPLOY_IPV6: "true" + JETLAG_PR: "787" + workflow: openshift-qe-installer-bm-deploy - always_run: false as: deploy-sno-private capabilities: diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-commands.sh b/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-commands.sh index ce9feeceb5a6a..1dd20bbe7e6a2 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-commands.sh +++ b/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-commands.sh @@ -303,3 +303,53 @@ ssh ${SSH_ARGS} root@${bastion} " " scp -q ${SSH_ARGS} root@${bastion}:/root/$LAB/$LAB_CLOUD/$TYPE/kubeconfig ${SHARED_DIR}/kubeconfig + +# IPv6 reconfig test: after successful IPv4 deploy, reconfigure for IPv6 +# and redeploy on the same bastion WITHOUT cleaning up containers. +# This tests that setup-bastion.yml properly reconfigures the assisted-service pod. +if [[ "${REDEPLOY_IPV6:-false}" == "true" ]]; then + echo "=== REDEPLOY_IPV6: Reconfiguring for IPv6 and redeploying ===" + + # Write IPv6 network overrides to append to all.yml + cat > /tmp/ipv6-overrides.yml << 'IPV6_EOF' + +# IPv6 reconfiguration - appended by REDEPLOY_IPV6 +controlplane_network: +- fd00:198:18:10::/64 +controlplane_network_prefix: +- 64 +cluster_network_cidr: +- fd01::/48 +cluster_network_host_prefix: +- 64 +service_network_cidr: +- fd02::/112 +setup_bastion_registry: true +use_bastion_registry: true +IPV6_EOF + + scp -q ${SSH_ARGS} /tmp/ipv6-overrides.yml root@${bastion}:/tmp/ipv6-overrides.yml + ssh ${SSH_ARGS} root@${bastion} "cat /tmp/ipv6-overrides.yml >> ${jetlag_repo}/ansible/vars/all.yml" + + echo "Updated all.yml for IPv6:" + ssh ${SSH_ARGS} root@${bastion} "cat ${jetlag_repo}/ansible/vars/all.yml" + + # Redeploy: re-bootstrap, re-run setup-bastion + deploy (NO clean-resources.sh) + ssh ${SSH_ARGS} root@${bastion} " + set -e + set -o pipefail + cd ${jetlag_repo} + source bootstrap.sh + ansible-playbook ansible/create-inventory.yml | tee /tmp/ansible-create-inventory-ipv6-\$(date +%s) + ansible-playbook -i ansible/inventory/$LAB_CLOUD.local ansible/setup-bastion.yml | tee /tmp/ansible-setup-bastion-ipv6-\$(date +%s) + ansible-playbook -i ansible/inventory/$LAB_CLOUD.local ansible/sno-deploy.yml -v | tee /tmp/ansible-sno-deploy-ipv6-\$(date +%s) + mkdir -p /root/$LAB/$LAB_CLOUD/sno-ipv6 + ansible -i ansible/inventory/$LAB_CLOUD.local bastion -m fetch -a 'src=${KUBECONFIG_SRC} dest=/root/$LAB/$LAB_CLOUD/sno-ipv6/kubeconfig flat=true' + deactivate + rm -rf .ansible + " + + # Overwrite kubeconfig with IPv6 cluster's version + scp -q ${SSH_ARGS} root@${bastion}:/root/$LAB/$LAB_CLOUD/sno-ipv6/kubeconfig ${SHARED_DIR}/kubeconfig + echo "=== REDEPLOY_IPV6: IPv6 redeploy completed successfully ===" +fi diff --git a/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-ref.yaml b/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-ref.yaml index 25cf38ce7896c..81e5a2f2a3e05 100644 --- a/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-ref.yaml +++ b/ci-operator/step-registry/openshift-qe/installer/bm/deploy/openshift-qe-installer-bm-deploy-ref.yaml @@ -52,6 +52,12 @@ ref: default: "true" documentation: |- Host cluster on a lab public routable VLAN network + - name: REDEPLOY_IPV6 + default: "false" + documentation: |- + After initial IPv4 deployment, reconfigure for single-stack IPv6 and + redeploy on the same bastion without cleaning up. Tests that the + assisted-service pod picks up configuration changes on redeploy. - name: RESET_IDRAC default: "true" documentation: |- From 50401b2722798e5908fd2b2c29eb7e0048ba86e8 Mon Sep 17 00:00:00 2001 From: Marius Cornea Date: Fri, 20 Mar 2026 15:33:42 +0200 Subject: [PATCH 2/2] Regenerate ci-operator config and prow jobs Run make ci-operator-config and make jobs to update generated files. Co-Authored-By: Claude Opus 4.6 --- .../redhat-performance-jetlag-main.yaml | 4 +- ...at-performance-jetlag-main-presubmits.yaml | 83 +++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml b/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml index 5f34236d533b4..40dd483fecacb 100644 --- a/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml +++ b/ci-operator/config/redhat-performance/jetlag/redhat-performance-jetlag-main.yaml @@ -34,9 +34,9 @@ tests: steps: cluster_profile: metal-perfscale-jetlag env: - TYPE: sno - REDEPLOY_IPV6: "true" JETLAG_PR: "787" + REDEPLOY_IPV6: "true" + TYPE: sno workflow: openshift-qe-installer-bm-deploy - always_run: false as: deploy-sno-private diff --git a/ci-operator/jobs/redhat-performance/jetlag/redhat-performance-jetlag-main-presubmits.yaml b/ci-operator/jobs/redhat-performance/jetlag/redhat-performance-jetlag-main-presubmits.yaml index a29948ae48a61..4f773a866820a 100644 --- a/ci-operator/jobs/redhat-performance/jetlag/redhat-performance-jetlag-main-presubmits.yaml +++ b/ci-operator/jobs/redhat-performance/jetlag/redhat-performance-jetlag-main-presubmits.yaml @@ -996,6 +996,89 @@ presubmits: secret: secretName: result-aggregator trigger: (?m)^/test( | .* )(deploy-sno-private-bond|remaining-required),?($|\s.*) + - agent: kubernetes + always_run: false + branches: + - ^main$ + - ^main- + cluster: build09 + context: ci/prow/deploy-sno-reconfig-ipv6 + decorate: true + decoration_config: + skip_cloning: true + labels: + capability/intranet: intranet + ci-operator.openshift.io/cloud: metal-perfscale-jetlag + ci-operator.openshift.io/cloud-cluster-profile: metal-perfscale-jetlag + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-redhat-performance-jetlag-main-deploy-sno-reconfig-ipv6 + rerun_command: /test deploy-sno-reconfig-ipv6 + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=deploy-sno-reconfig-ipv6 + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )(deploy-sno-reconfig-ipv6|remaining-required),?($|\s.*) - agent: kubernetes always_run: false branches: