From 69b26eabc442763ea3a0b69d12b210babf90d3c4 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 14:58:53 +0530 Subject: [PATCH 01/12] Add CNV smoke test CI lane on TNF cluster (OCP 5.0) Add a weekly periodic job that provisions a Two Node OpenShift with Fencing (TNF) cluster, deploys LVMS for local storage, deploys CNV 5.0, and runs CNV smoke tests. This implements continuous validation for the work described in CNV-72458. New step registry components: - baremetalds-cnv-smoke: baremetal-compatible CNV smoke test ref adapted from interop-tests-cnv-tests-smoke (no fwknop, configurable storage class defaulting to lvms-vg1) - baremetalds-two-node-fencing-cnv-smoke: workflow combining TNF cluster provisioning, LVMS deployment (via storage-conf-csi-optional-topolvm), CNV deployment (via interop-tests-deploy-cnv), and CNV smoke tests Co-Authored-By: Claude Opus 4.6 --- .../openshift-release-main__nightly-5.0.yaml | 9 ++ .../openshift-release-main-periodics.yaml | 85 +++++++++++++++++++ .../baremetalds/cnv/smoke/OWNERS | 2 + .../smoke/baremetalds-cnv-smoke-commands.sh | 48 +++++++++++ .../baremetalds-cnv-smoke-ref.metadata.json | 8 ++ .../cnv/smoke/baremetalds-cnv-smoke-ref.yaml | 23 +++++ .../two-node/fencing/cnv-smoke/OWNERS | 2 + ...e-fencing-cnv-smoke-workflow.metadata.json | 8 ++ ...s-two-node-fencing-cnv-smoke-workflow.yaml | 32 +++++++ 9 files changed, 217 insertions(+) create mode 100644 ci-operator/step-registry/baremetalds/cnv/smoke/OWNERS create mode 100755 ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh create mode 100644 ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.metadata.json create mode 100644 ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml create mode 100644 ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/OWNERS create mode 100644 ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.metadata.json create mode 100644 ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml diff --git a/ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml b/ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml index 97e2d3d1d3ae9..36dddabab57cc 100644 --- a/ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml +++ b/ci-operator/config/openshift/release/openshift-release-main__nightly-5.0.yaml @@ -787,6 +787,15 @@ tests: steps: cluster_profile: equinix-edge-enablement workflow: baremetalds-two-node-fencing +- as: e2e-metal-ovn-two-node-fencing-cnv-smoke + capabilities: + - intranet + cron: '@weekly' + steps: + cluster_profile: equinix-edge-enablement + env: + CNV_VERSION: "5.0" + workflow: baremetalds-two-node-fencing-cnv-smoke - as: e2e-agent-ovn-two-node-fencing capabilities: - intranet diff --git a/ci-operator/jobs/openshift/release/openshift-release-main-periodics.yaml b/ci-operator/jobs/openshift/release/openshift-release-main-periodics.yaml index 0830cf070fc92..5910dbe255858 100644 --- a/ci-operator/jobs/openshift/release/openshift-release-main-periodics.yaml +++ b/ci-operator/jobs/openshift/release/openshift-release-main-periodics.yaml @@ -286398,6 +286398,91 @@ periodics: - name: result-aggregator secret: secretName: result-aggregator +- agent: kubernetes + cluster: build10 + cron: '@weekly' + decorate: true + decoration_config: + skip_cloning: true + extra_refs: + - base_ref: main + org: openshift + repo: release + labels: + capability/intranet: intranet + ci-operator.openshift.io/cloud: equinix-edge-enablement + ci-operator.openshift.io/cloud-cluster-profile: equinix-edge-enablement + ci-operator.openshift.io/variant: nightly-5.0 + ci.openshift.io/generator: prowgen + ci.openshift.io/no-builds: "true" + job-release: "5.0" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-openshift-release-main-nightly-5.0-e2e-metal-ovn-two-node-fencing-cnv-smoke + 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=e2e-metal-ovn-two-node-fencing-cnv-smoke + - --variant=nightly-5.0 + 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 - agent: kubernetes cluster: build10 cron: 53 8,18 * * * diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/OWNERS b/ci-operator/step-registry/baremetalds/cnv/smoke/OWNERS new file mode 100644 index 0000000000000..f5a3dff63159b --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/OWNERS @@ -0,0 +1,2 @@ +approvers: + - openshift-edge-approvers diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh new file mode 100755 index 0000000000000..cb5bed2977a7d --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -0,0 +1,48 @@ +#!/bin/bash + +set -o nounset +set -o errexit +set -o pipefail + +CNV_STORAGE_CLASS="${CNV_STORAGE_CLASS:-lvms-vg1}" +CNV_VOLUME_MODE="${CNV_VOLUME_MODE:-Filesystem}" + +echo "Running CNV smoke tests with storage class: ${CNV_STORAGE_CLASS}" + +oc whoami --show-console + +COLLECTOR_CONF_FILE="${ARTIFACT_DIR}/containerized-data-collector.yaml" +cat << __EOF__ | tee "${COLLECTOR_CONF_FILE}" +data_collector_base_directory: "/${ARTIFACT_DIR}/tests-collected-info" +collect_data_function: "ocp_wrapper_data_collector.data_collector.collect_data" +collect_pod_logs: true +__EOF__ + +START_TIME=$(date "+%s") + +poetry run pytest tests \ + --pytest-log-file="${ARTIFACT_DIR}/pytest.log" \ + --data-collector="${COLLECTOR_CONF_FILE}" \ + --junit-xml="${ARTIFACT_DIR}/junit_results.xml" \ + --tc-file=tests/global_config.py \ + --tc-format=python \ + --tc=check_http_server_connectivity:false \ + --tc "default_storage_class:${CNV_STORAGE_CLASS}" \ + --tc "default_volume_mode:${CNV_VOLUME_MODE}" \ + --latest-rhel \ + --tb=native \ + --storage-class-matrix="${CNV_STORAGE_CLASS}" \ + -o log_cli=true \ + -m smoke || /bin/true + +FINISH_TIME=$(date "+%s") +DIFF_TIME=$((FINISH_TIME - START_TIME)) + +if [[ ${DIFF_TIME} -le 600 ]]; then + echo "" + echo "The tests finished too quickly (took only: ${DIFF_TIME} sec), pausing here to give time to debug" + sleep 7200 + exit 1 +else + echo "Finished in: ${DIFF_TIME} sec" +fi diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.metadata.json b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.metadata.json new file mode 100644 index 0000000000000..91790b538e518 --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.metadata.json @@ -0,0 +1,8 @@ +{ + "path": "baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml", + "owners": { + "approvers": [ + "openshift-edge-approvers" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml new file mode 100644 index 0000000000000..f2c3024cbab9d --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml @@ -0,0 +1,23 @@ +ref: + as: baremetalds-cnv-smoke + from_image: + namespace: cnv + name: "5.0" + tag: cnv-ci-src + cli: latest + commands: baremetalds-cnv-smoke-commands.sh + resources: + requests: + cpu: 100m + memory: 200Mi + env: + - name: CNV_STORAGE_CLASS + documentation: The storage class to use for CNV smoke tests + default: "lvms-vg1" + - name: CNV_VOLUME_MODE + documentation: The volume mode to use for CNV smoke tests + default: "Filesystem" + timeout: 2h0m0s + documentation: |- + Run CNV smoke tests on a baremetal cluster. + Adapted for baremetal/TNF clusters with LVMS storage. diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/OWNERS b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/OWNERS new file mode 100644 index 0000000000000..f5a3dff63159b --- /dev/null +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/OWNERS @@ -0,0 +1,2 @@ +approvers: + - openshift-edge-approvers diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.metadata.json b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.metadata.json new file mode 100644 index 0000000000000..97db582f73535 --- /dev/null +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.metadata.json @@ -0,0 +1,8 @@ +{ + "path": "baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml", + "owners": { + "approvers": [ + "openshift-edge-approvers" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml new file mode 100644 index 0000000000000..df94b88f144d7 --- /dev/null +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml @@ -0,0 +1,32 @@ +workflow: + as: baremetalds-two-node-fencing-cnv-smoke + steps: + allow_best_effort_post_steps: true + cluster_profile: equinix-edge-enablement + pre: + - chain: baremetalds-ofcir-pre + - chain: baremetalds-two-node-fencing-post-install + - ref: openshift-cluster-bot-rbac + - chain: storage-conf-csi-optional-topolvm + - ref: interop-tests-deploy-cnv + test: + - ref: baremetalds-cnv-smoke + post: + - chain: baremetalds-ofcir-post + env: + DEVSCRIPTS_CONFIG: | + IP_STACK=v4 + NUM_MASTERS=2 + MASTER_MEMORY=32768 + MASTER_DISK=100 + NUM_WORKERS=0 + BMC_DRIVER=redfish + VM_EXTRADISKS=true + VM_EXTRADISKS_LIST="vda vdb" + VM_EXTRADISKS_SIZE=100G + CNV_VERSION: "5.0" + documentation: |- + This workflow provisions a Two Node OpenShift with Fencing (TNF) cluster, + deploys LVMS for local storage, deploys CNV, and runs CNV smoke tests. + LVMS is used because TNF clusters lack shared storage; LiveMigration + is not tested since LVMS does not support RWX volumes. From a537946f739f2afef596c8afe9bca9079c4daa61 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 15:04:04 +0530 Subject: [PATCH 02/12] Update CNV smoke test to match team's actual pytest command - Use LVMS-specific config (global_config_lvms.py) and Block volume mode - Exclude RWX tests (-m 'smoke and not rwx_default_storage') - Add --jira, --html report, and --data-collector flags Co-Authored-By: Claude Opus 4.6 --- .../smoke/baremetalds-cnv-smoke-commands.sh | 32 ++++++++----------- .../cnv/smoke/baremetalds-cnv-smoke-ref.yaml | 2 +- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index cb5bed2977a7d..2463d7443a2d5 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -5,35 +5,31 @@ set -o errexit set -o pipefail CNV_STORAGE_CLASS="${CNV_STORAGE_CLASS:-lvms-vg1}" -CNV_VOLUME_MODE="${CNV_VOLUME_MODE:-Filesystem}" +CNV_VOLUME_MODE="${CNV_VOLUME_MODE:-Block}" -echo "Running CNV smoke tests with storage class: ${CNV_STORAGE_CLASS}" +echo "Running CNV smoke tests with storage class: ${CNV_STORAGE_CLASS}, volume mode: ${CNV_VOLUME_MODE}" oc whoami --show-console -COLLECTOR_CONF_FILE="${ARTIFACT_DIR}/containerized-data-collector.yaml" -cat << __EOF__ | tee "${COLLECTOR_CONF_FILE}" -data_collector_base_directory: "/${ARTIFACT_DIR}/tests-collected-info" -collect_data_function: "ocp_wrapper_data_collector.data_collector.collect_data" -collect_pod_logs: true -__EOF__ - START_TIME=$(date "+%s") poetry run pytest tests \ - --pytest-log-file="${ARTIFACT_DIR}/pytest.log" \ - --data-collector="${COLLECTOR_CONF_FILE}" \ - --junit-xml="${ARTIFACT_DIR}/junit_results.xml" \ - --tc-file=tests/global_config.py \ - --tc-format=python \ - --tc=check_http_server_connectivity:false \ + -s \ + -o log_cli=true \ + -o cache_dir=/tmp/cache-pytest \ + -m 'smoke and not rwx_default_storage' \ + --tc-file=tests/global_config_lvms.py \ --tc "default_storage_class:${CNV_STORAGE_CLASS}" \ --tc "default_volume_mode:${CNV_VOLUME_MODE}" \ + --storage-class-matrix="${CNV_STORAGE_CLASS}" \ --latest-rhel \ --tb=native \ - --storage-class-matrix="${CNV_STORAGE_CLASS}" \ - -o log_cli=true \ - -m smoke || /bin/true + --data-collector \ + --jira \ + --junit-xml="${ARTIFACT_DIR}/xunit_results.xml" \ + --pytest-log-file="${ARTIFACT_DIR}/pytest-tests.log" \ + --html="${ARTIFACT_DIR}/report.html" \ + --self-contained-html || /bin/true FINISH_TIME=$(date "+%s") DIFF_TIME=$((FINISH_TIME - START_TIME)) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml index f2c3024cbab9d..f613cfdebf7e8 100644 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml @@ -16,7 +16,7 @@ ref: default: "lvms-vg1" - name: CNV_VOLUME_MODE documentation: The volume mode to use for CNV smoke tests - default: "Filesystem" + default: "Block" timeout: 2h0m0s documentation: |- Run CNV smoke tests on a baremetal cluster. From 8060806a3219365cd5eef19fa03787e543ae7361 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 15:09:32 +0530 Subject: [PATCH 03/12] Simplify CNV smoke test pytest command for CI Remove --jira, --data-collector, --html flags that need credentials or setup not available in CI. Use standard global_config.py with --tc overrides for LVMS storage class and volume mode. Co-Authored-By: Claude Opus 4.6 --- .../cnv/smoke/baremetalds-cnv-smoke-commands.sh | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index 2463d7443a2d5..4d067f1b0fce8 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -18,18 +18,14 @@ poetry run pytest tests \ -o log_cli=true \ -o cache_dir=/tmp/cache-pytest \ -m 'smoke and not rwx_default_storage' \ - --tc-file=tests/global_config_lvms.py \ + --tc-file=tests/global_config.py \ --tc "default_storage_class:${CNV_STORAGE_CLASS}" \ --tc "default_volume_mode:${CNV_VOLUME_MODE}" \ --storage-class-matrix="${CNV_STORAGE_CLASS}" \ --latest-rhel \ --tb=native \ - --data-collector \ - --jira \ --junit-xml="${ARTIFACT_DIR}/xunit_results.xml" \ - --pytest-log-file="${ARTIFACT_DIR}/pytest-tests.log" \ - --html="${ARTIFACT_DIR}/report.html" \ - --self-contained-html || /bin/true + --pytest-log-file="${ARTIFACT_DIR}/pytest-tests.log" || /bin/true FINISH_TIME=$(date "+%s") DIFF_TIME=$((FINISH_TIME - START_TIME)) From 0a14721ca050a36cc75b82ccad776612fda09655 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 15:17:49 +0530 Subject: [PATCH 04/12] Add missing OWNERS file for baremetalds/cnv directory Co-Authored-By: Claude Opus 4.6 --- ci-operator/step-registry/baremetalds/cnv/OWNERS | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 ci-operator/step-registry/baremetalds/cnv/OWNERS diff --git a/ci-operator/step-registry/baremetalds/cnv/OWNERS b/ci-operator/step-registry/baremetalds/cnv/OWNERS new file mode 100644 index 0000000000000..f5a3dff63159b --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/OWNERS @@ -0,0 +1,2 @@ +approvers: + - openshift-edge-approvers From aa1956719fda846bcb4851e140871f9a3250489c Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 15:17:49 +0530 Subject: [PATCH 05/12] Add missing OWNERS file for baremetalds/cnv directory Co-Authored-By: Claude Opus 4.6 --- .../baremetalds-two-node-fencing-cnv-smoke-workflow.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml index df94b88f144d7..0e7267bfe119b 100644 --- a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml @@ -24,6 +24,7 @@ workflow: VM_EXTRADISKS=true VM_EXTRADISKS_LIST="vda vdb" VM_EXTRADISKS_SIZE=100G + LVM_CLUSTER_TOLERATE_MASTER: "true" CNV_VERSION: "5.0" documentation: |- This workflow provisions a Two Node OpenShift with Fencing (TNF) cluster, From b7d3f7c7df56260b1e99e570243d4d677d5f98cf Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 16:10:01 +0530 Subject: [PATCH 06/12] Use CNV 4.22 test image (5.0 not available yet) Co-Authored-By: Claude Opus 4.6 --- .../baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml index f613cfdebf7e8..3d9140143f5a1 100644 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml @@ -2,7 +2,7 @@ ref: as: baremetalds-cnv-smoke from_image: namespace: cnv - name: "5.0" + name: "4.22" tag: cnv-ci-src cli: latest commands: baremetalds-cnv-smoke-commands.sh From e4b62099dd72eabcbc5d91f8611a05cb312a4fe7 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 19:00:20 +0530 Subject: [PATCH 07/12] Use internal Konflux catalog and stable-4.22 channel for LVMS - Set LVM_OPERATOR_SUB_SOURCE to lvm-catalogsource (internal Konflux) - Set LVM_OPERATOR_SUB_CHANNEL to stable-4.22 - Use CNV 4.22 test image (5.0 not available yet) Co-Authored-By: Claude Opus 4.6 --- .../baremetalds-two-node-fencing-cnv-smoke-workflow.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml index 0e7267bfe119b..7bfb9627da49e 100644 --- a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml @@ -24,6 +24,8 @@ workflow: VM_EXTRADISKS=true VM_EXTRADISKS_LIST="vda vdb" VM_EXTRADISKS_SIZE=100G + LVM_OPERATOR_SUB_SOURCE: "lvm-catalogsource" + LVM_OPERATOR_SUB_CHANNEL: "stable-4.22" LVM_CLUSTER_TOLERATE_MASTER: "true" CNV_VERSION: "5.0" documentation: |- From bc0f140b2ca93334076540c23d76033b78d388a8 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Mon, 15 Jun 2026 22:28:30 +0530 Subject: [PATCH 08/12] Use stable-5.0 channel for LVMS on Konflux catalog Co-Authored-By: Claude Opus 4.6 --- .../baremetalds-two-node-fencing-cnv-smoke-workflow.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml index 7bfb9627da49e..90de542570275 100644 --- a/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml @@ -25,7 +25,7 @@ workflow: VM_EXTRADISKS_LIST="vda vdb" VM_EXTRADISKS_SIZE=100G LVM_OPERATOR_SUB_SOURCE: "lvm-catalogsource" - LVM_OPERATOR_SUB_CHANNEL: "stable-4.22" + LVM_OPERATOR_SUB_CHANNEL: "stable-5.0" LVM_CLUSTER_TOLERATE_MASTER: "true" CNV_VERSION: "5.0" documentation: |- From acb0c1229218e5ec1992fa358699eb6dae7ff0ed Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Tue, 16 Jun 2026 11:34:27 +0530 Subject: [PATCH 09/12] Use pytest directly instead of poetry run pytest The cnv-ci-src image does not have poetry installed. Co-Authored-By: Claude Opus 4.6 --- .../baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index 4d067f1b0fce8..3ec1c5b988d52 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -13,7 +13,7 @@ oc whoami --show-console START_TIME=$(date "+%s") -poetry run pytest tests \ +pytest tests \ -s \ -o log_cli=true \ -o cache_dir=/tmp/cache-pytest \ From 034461ce5aa2d9ab612ea3db683ac3d131e775f4 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Tue, 16 Jun 2026 11:36:59 +0530 Subject: [PATCH 10/12] Switch to openshift-virtualization-tests image and uv run pytest cnv-ci-src is a Shell/Go repo without Python/pytest. The correct image is openshift-virtualization-tests which uses uv as its package manager and has pytest installed. Co-Authored-By: Claude Opus 4.6 --- .../baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh | 2 +- .../baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index 3ec1c5b988d52..000b0b21203a5 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -13,7 +13,7 @@ oc whoami --show-console START_TIME=$(date "+%s") -pytest tests \ +uv run pytest tests \ -s \ -o log_cli=true \ -o cache_dir=/tmp/cache-pytest \ diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml index 3d9140143f5a1..9f1646258fefc 100644 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-ref.yaml @@ -1,9 +1,9 @@ ref: as: baremetalds-cnv-smoke from_image: - namespace: cnv - name: "4.22" - tag: cnv-ci-src + namespace: ci + name: openshift-virtualization-tests + tag: latest cli: latest commands: baremetalds-cnv-smoke-commands.sh resources: From e677fd06e9feecab0e4fda7281bcf701986f542f Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Tue, 16 Jun 2026 19:11:23 +0530 Subject: [PATCH 11/12] Fix permission errors and use LVMS-specific test config - Set UV_CACHE_DIR=/tmp/uv-cache to avoid write to read-only workdir - Set HOME=/tmp to prevent home directory write failures - Use global_config_lvms.py (TopoLVM, Block, RWO) instead of generic config Co-Authored-By: Claude Opus 4.6 --- .../baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index 000b0b21203a5..7bce24b4ad41f 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -7,6 +7,9 @@ set -o pipefail CNV_STORAGE_CLASS="${CNV_STORAGE_CLASS:-lvms-vg1}" CNV_VOLUME_MODE="${CNV_VOLUME_MODE:-Block}" +export UV_CACHE_DIR=/tmp/uv-cache +export HOME=/tmp + echo "Running CNV smoke tests with storage class: ${CNV_STORAGE_CLASS}, volume mode: ${CNV_VOLUME_MODE}" oc whoami --show-console @@ -18,7 +21,7 @@ uv run pytest tests \ -o log_cli=true \ -o cache_dir=/tmp/cache-pytest \ -m 'smoke and not rwx_default_storage' \ - --tc-file=tests/global_config.py \ + --tc-file=tests/global_config_lvms.py \ --tc "default_storage_class:${CNV_STORAGE_CLASS}" \ --tc "default_volume_mode:${CNV_VOLUME_MODE}" \ --storage-class-matrix="${CNV_STORAGE_CLASS}" \ From ded461ed1d63e743295b8a507599f6e09d9d6429 Mon Sep 17 00:00:00 2001 From: Kasturi Narra Date: Tue, 16 Jun 2026 23:23:38 +0530 Subject: [PATCH 12/12] Unset in-cluster Kubernetes env vars for correct kubeconfig The Python Kubernetes client picks up KUBERNETES_SERVICE_* vars injected by the CI pod and tries in-cluster auth instead of using the KUBECONFIG pointing to the provisioned TNF cluster. Co-Authored-By: Claude Opus 4.6 --- .../cnv/smoke/baremetalds-cnv-smoke-commands.sh | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh index 7bce24b4ad41f..4ea59db64a452 100755 --- a/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -10,6 +10,15 @@ CNV_VOLUME_MODE="${CNV_VOLUME_MODE:-Block}" export UV_CACHE_DIR=/tmp/uv-cache export HOME=/tmp +unset KUBERNETES_SERVICE_PORT_HTTPS +unset KUBERNETES_SERVICE_PORT +unset KUBERNETES_PORT_443_TCP +unset KUBERNETES_PORT_443_TCP_PROTO +unset KUBERNETES_PORT_443_TCP_ADDR +unset KUBERNETES_SERVICE_HOST +unset KUBERNETES_PORT +unset KUBERNETES_PORT_443_TCP_PORT + echo "Running CNV smoke tests with storage class: ${CNV_STORAGE_CLASS}, volume mode: ${CNV_VOLUME_MODE}" oc whoami --show-console