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/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 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..4ea59db64a452 --- /dev/null +++ b/ci-operator/step-registry/baremetalds/cnv/smoke/baremetalds-cnv-smoke-commands.sh @@ -0,0 +1,52 @@ +#!/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:-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 + +START_TIME=$(date "+%s") + +uv run pytest tests \ + -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 \ + --junit-xml="${ARTIFACT_DIR}/xunit_results.xml" \ + --pytest-log-file="${ARTIFACT_DIR}/pytest-tests.log" || /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..9f1646258fefc --- /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: ci + name: openshift-virtualization-tests + tag: latest + 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: "Block" + 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..90de542570275 --- /dev/null +++ b/ci-operator/step-registry/baremetalds/two-node/fencing/cnv-smoke/baremetalds-two-node-fencing-cnv-smoke-workflow.yaml @@ -0,0 +1,35 @@ +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 + LVM_OPERATOR_SUB_SOURCE: "lvm-catalogsource" + LVM_OPERATOR_SUB_CHANNEL: "stable-5.0" + LVM_CLUSTER_TOLERATE_MASTER: "true" + 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.