From a28161dfc3f94bc4ba5cd8ee6fe6c53bf429c54a Mon Sep 17 00:00:00 2001 From: Chai-bot Date: Mon, 3 Aug 2026 11:08:41 -0400 Subject: [PATCH] Add driver-toolkit qualifier for 5.0 nightly verification jobs (#82763) * Add driver-toolkit qualifier for 5.0 nightly verification jobs * Run make release-controllers to regenerate priv 5.0 config Regenerates core-services/release-controller/_releases/priv/release-ocp-5.0.json to include the driver-toolkit qualifier, keeping generated output in sync with the release-qualifiers.yaml and release-ocp-5.0.json changes. --- ...-perfscale-main__aws-4.22-nightly-x86.yaml | 39 ++++ ...p-perfscale-main__aws-5.0-nightly-x86.yaml | 39 ++++ ...hift-eng-ocp-perfscale-main-periodics.yaml | 188 ++++++++++++++++++ .../step-registry/openshift-qe/pqc/OWNERS | 1 + .../pqc/openshift-qe-pqc-chain.metadata.json | 11 + .../pqc/openshift-qe-pqc-chain.yaml | 7 + .../pqc/openshift-qe-pqc-commands.sh | 150 ++++++++++++++ .../pqc/openshift-qe-pqc-ref.metadata.json | 11 + .../pqc/openshift-qe-pqc-ref.yaml | 13 ++ .../_releases/priv/release-ocp-5.0.json | 6 + .../_releases/release-ocp-5.0.json | 6 + .../release-qualifiers.yaml | 6 + 12 files changed, 477 insertions(+) create mode 120000 ci-operator/step-registry/openshift-qe/pqc/OWNERS create mode 100644 ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.metadata.json create mode 100644 ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.yaml create mode 100644 ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-commands.sh create mode 100644 ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.metadata.json create mode 100644 ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.yaml diff --git a/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-4.22-nightly-x86.yaml b/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-4.22-nightly-x86.yaml index 2dafb9d0a9d9f..08a91ba94f131 100644 --- a/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-4.22-nightly-x86.yaml +++ b/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-4.22-nightly-x86.yaml @@ -38,6 +38,45 @@ tests: - ref: openshift-qe-workers-scale - chain: openshift-qe-netpol-v2 workflow: openshift-qe-installer-aws +- as: control-plane-6nodes-pqc + cron: 0 5 * * 2,5 + reporter_config: + channel: '#ocp-qe-scale-ci-results' + job_states_to_report: + - success + - failure + - error + report_template: '{{if eq .Status.State "success"}} :white_check_mark: Job *{{.Spec.Job}}* + ended with *{{.Status.State}}*. <{{.Status.URL}}|View logs> :white_check_mark: + {{else}} :warning: Job *{{.Spec.Job}}* ended with *{{.Status.State}}*. <{{.Status.URL}}|View + logs> :warning: {{end}}' + steps: + cluster_profile: aws-perfscale-qe + env: + ADDITIONAL_WORKER_NODES: "3" + BASE_DOMAIN: qe.devcluster.openshift.com + CD_V2_EXTRA_FLAGS: --churn-duration=20m --pod-ready-threshold=20s --service-latency + CDV2_ITERATION_MULTIPLIER: "15" + ENABLE_LAYER_3: "false" + ES_TYPE: qe + FEATURE: TLSCurvePreferences + IGNORE_JOB_ITERATIONS: "true" + KB_FLAGS: --local-indexing + ND_CNI_EXTRA_FLAGS: --churn-mode=objects --churn-delay=1m --churn-percent=50 + --churn-cycles=2 + ND_EXTRA_FLAGS: --churn-mode=objects --churn-delay=1m --churn-percent=50 --churn-cycles=2 + OUTPUT_FORMAT: JUNIT + RUN_ORION: deferred + UDN_ITERATION_MULTIPLIER: "12" + VERSION: "4.22" + ZONES_COUNT: "3" + test: + - chain: openshift-qe-installer-featuregate + - chain: openshift-qe-pqc + - ref: openshift-qe-workers-scale + - chain: openshift-qe-control-plane + - chain: openshift-qe-orion-consolidated + workflow: openshift-qe-installer-aws - as: payload-control-plane-6nodes cron: '@yearly' reporter_config: diff --git a/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-5.0-nightly-x86.yaml b/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-5.0-nightly-x86.yaml index 480fa6f465815..e98273aaf49cc 100644 --- a/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-5.0-nightly-x86.yaml +++ b/ci-operator/config/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main__aws-5.0-nightly-x86.yaml @@ -75,6 +75,45 @@ tests: - chain: openshift-qe-control-plane - chain: openshift-qe-orion-consolidated workflow: openshift-qe-installer-aws +- as: control-plane-6nodes-pqc + cron: 0 5 * * 2,5 + reporter_config: + channel: '#ocp-qe-scale-ci-results' + job_states_to_report: + - success + - failure + - error + report_template: '{{if eq .Status.State "success"}} :white_check_mark: Job *{{.Spec.Job}}* + ended with *{{.Status.State}}*. <{{.Status.URL}}|View logs> :white_check_mark: + {{else}} :warning: Job *{{.Spec.Job}}* ended with *{{.Status.State}}*. <{{.Status.URL}}|View + logs> :warning: {{end}}' + steps: + cluster_profile: aws-perfscale-qe + env: + ADDITIONAL_WORKER_NODES: "3" + BASE_DOMAIN: qe.devcluster.openshift.com + CD_V2_EXTRA_FLAGS: --churn-duration=20m --pod-ready-threshold=20s --service-latency + CDV2_ITERATION_MULTIPLIER: "15" + ENABLE_LAYER_3: "false" + ES_TYPE: qe + FEATURE: TLSCurvePreferences + IGNORE_JOB_ITERATIONS: "true" + KB_FLAGS: --local-indexing + ND_CNI_EXTRA_FLAGS: --churn-mode=objects --churn-delay=1m --churn-percent=50 + --churn-cycles=2 + ND_EXTRA_FLAGS: --churn-mode=objects --churn-delay=1m --churn-percent=50 --churn-cycles=2 + OUTPUT_FORMAT: JUNIT + RUN_ORION: deferred + UDN_ITERATION_MULTIPLIER: "12" + VERSION: "5.0" + ZONES_COUNT: "3" + test: + - chain: openshift-qe-installer-featuregate + - chain: openshift-qe-pqc + - ref: openshift-qe-workers-scale + - chain: openshift-qe-control-plane + - chain: openshift-qe-orion-consolidated + workflow: openshift-qe-installer-aws - as: control-plane-120nodes cron: 0 6 * * 0,2,4,6 reporter_config: diff --git a/ci-operator/jobs/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main-periodics.yaml b/ci-operator/jobs/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main-periodics.yaml index 6538cc5a56fde..891972a49749e 100644 --- a/ci-operator/jobs/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main-periodics.yaml +++ b/ci-operator/jobs/openshift-eng/ocp-perfscale/openshift-eng-ocp-perfscale-main-periodics.yaml @@ -188,6 +188,100 @@ periodics: - name: result-aggregator secret: secretName: result-aggregator +- agent: kubernetes + cluster: build11 + cron: 0 5 * * 2,5 + decorate: true + decoration_config: + skip_cloning: true + extra_refs: + - base_ref: main + org: openshift-eng + repo: ocp-perfscale + labels: + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: aws-perfscale-qe + ci-operator.openshift.io/variant: aws-4.22-nightly-x86 + ci.openshift.io/generator: prowgen + job-release: "4.22" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-openshift-eng-ocp-perfscale-main-aws-4.22-nightly-x86-control-plane-6nodes-pqc + reporter_config: + slack: + channel: '#ocp-qe-scale-ci-results' + job_states_to_report: + - success + - failure + - error + report_template: '{{if eq .Status.State "success"}} :white_check_mark: Job *{{.Spec.Job}}* + ended with *{{.Status.State}}*. <{{.Status.URL}}|View logs> :white_check_mark: + {{else}} :warning: Job *{{.Spec.Job}}* ended with *{{.Status.State}}*. <{{.Status.URL}}|View + logs> :warning: {{end}}' + 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=control-plane-6nodes-pqc + - --variant=aws-4.22-nightly-x86 + 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: build11 cron: 17 7 * * * @@ -2287,6 +2381,100 @@ periodics: - name: result-aggregator secret: secretName: result-aggregator +- agent: kubernetes + cluster: build11 + cron: 0 5 * * 2,5 + decorate: true + decoration_config: + skip_cloning: true + extra_refs: + - base_ref: main + org: openshift-eng + repo: ocp-perfscale + labels: + ci-operator.openshift.io/cloud: aws + ci-operator.openshift.io/cloud-cluster-profile: aws-perfscale-qe + ci-operator.openshift.io/variant: aws-5.0-nightly-x86 + ci.openshift.io/generator: prowgen + job-release: "5.0" + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-openshift-eng-ocp-perfscale-main-aws-5.0-nightly-x86-control-plane-6nodes-pqc + reporter_config: + slack: + channel: '#ocp-qe-scale-ci-results' + job_states_to_report: + - success + - failure + - error + report_template: '{{if eq .Status.State "success"}} :white_check_mark: Job *{{.Spec.Job}}* + ended with *{{.Status.State}}*. <{{.Status.URL}}|View logs> :white_check_mark: + {{else}} :warning: Job *{{.Spec.Job}}* ended with *{{.Status.State}}*. <{{.Status.URL}}|View + logs> :warning: {{end}}' + 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=control-plane-6nodes-pqc + - --variant=aws-5.0-nightly-x86 + 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: build11 cron: 0 3 * * 3 diff --git a/ci-operator/step-registry/openshift-qe/pqc/OWNERS b/ci-operator/step-registry/openshift-qe/pqc/OWNERS new file mode 120000 index 0000000000000..ec405d65a79df --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/OWNERS @@ -0,0 +1 @@ +../OWNERS \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.metadata.json b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.metadata.json new file mode 100644 index 0000000000000..7bc53735a4e38 --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.metadata.json @@ -0,0 +1,11 @@ +{ + "path": "openshift-qe/pqc/openshift-qe-pqc-chain.yaml", + "owners": { + "approvers": [ + "perfscale-ocp-approvers" + ], + "reviewers": [ + "perfscale-ocp-reviewers" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.yaml b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.yaml new file mode 100644 index 0000000000000..af12074959e0d --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-chain.yaml @@ -0,0 +1,7 @@ + +chain: + as: openshift-qe-pqc + steps: + - ref: openshift-qe-pqc + documentation: |- + This chain executes pqc setup \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-commands.sh b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-commands.sh new file mode 100644 index 0000000000000..a390637e85253 --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-commands.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +set -e + +echo "==> Applying APIServer TLS configuration..." +oc apply -f - < Waiting for kube-apiserver operator to start progressing..." +sleep 5 + +# Wait for the kube-apiserver operator to become progressing +timeout 300 bash -c 'while ! oc get co kube-apiserver -o jsonpath="{.status.conditions[?(@.type==\"Progressing\")].status}" | grep -q "True"; do sleep 5; done' || { + echo "Warning: kube-apiserver did not enter Progressing state within 5 minutes" +} + +echo "==> kube-apiserver is now progressing. Waiting for rollout to complete..." +echo "" + +# Monitor the rollout +start_time=$(date +%s) +while true; do + current_time=$(date +%s) + elapsed=$((current_time - start_time)) + + # Get cluster operator status with timeout handling + progressing=$(oc get co kube-apiserver -o jsonpath='{.status.conditions[?(@.type=="Progressing")].status}' 2>/dev/null || echo "unknown") + available=$(oc get co kube-apiserver -o jsonpath='{.status.conditions[?(@.type=="Available")].status}' 2>/dev/null || echo "unknown") + degraded=$(oc get co kube-apiserver -o jsonpath='{.status.conditions[?(@.type=="Degraded")].status}' 2>/dev/null || echo "unknown") + + # Get the current TLS profile from the apiserver + current_tls=$(oc get apiserver cluster -o jsonpath='{.spec.tlsSecurityProfile.type}' 2>/dev/null || echo "unknown") + + # Display status + echo "[$(date +%H:%M:%S)] Elapsed: ${elapsed}s | Available: $available | Progressing: $progressing | Degraded: $degraded | TLS Profile: $current_tls" + + # Skip checks if we got timeout/errors + if [ "$progressing" = "unknown" ] || [ "$available" = "unknown" ] || [ "$degraded" = "unknown" ]; then + echo " ⚠ API query timeout or error - will retry..." + sleep 10 + continue + fi + + # Check if rollout is complete + if [ "$progressing" = "False" ] && [ "$available" = "True" ] && [ "$degraded" = "False" ]; then + echo "" + echo "==> Rollout complete!" + echo "" + + # Verify the configuration was applied + echo "==> Verifying TLS configuration:" + oc get apiserver cluster -o jsonpath='{.spec.tlsSecurityProfile}' | jq . + + echo "" + echo "==> Checking applied cipher suites and TLS version:" + echo "Expected cipher: ECDHE-ECDSA-AES128-GCM-SHA256" + echo "Expected TLS version: VersionTLS12" + echo "Expected groups: X25519MLKEM768" + echo "" + + # Check actual cipher configuration + actual_ciphers=$(oc get apiserver cluster -o jsonpath='{.spec.tlsSecurityProfile.custom.ciphers[*]}') + actual_tls=$(oc get apiserver cluster -o jsonpath='{.spec.tlsSecurityProfile.custom.minTLSVersion}') + actual_groups=$(oc get apiserver cluster -o jsonpath='{.spec.tlsSecurityProfile.custom.groups[*]}') + + echo "Actual cipher: $actual_ciphers" + echo "Actual TLS: $actual_tls" + echo "Actual groups: $actual_groups" + echo "" + + # Verify settings match + if [[ "$actual_ciphers" == "ECDHE-ECDSA-AES128-GCM-SHA256" ]] && \ + [[ "$actual_tls" == "VersionTLS12" ]] && \ + [[ "$actual_groups" == "X25519MLKEM768" ]]; then + echo "✓ Crypto settings verified correctly!" + else + echo "⚠ Warning: Crypto settings may not match expected values" + fi + + echo "" + echo "==> API Server pods:" + oc get pods -n openshift-kube-apiserver -l app=openshift-kube-apiserver --sort-by=.metadata.creationTimestamp + echo "" + echo "==> Checking kube-apiserver runtime TLS curve configuration:" + KAPI_CONFIG=$(oc get cm config -n openshift-kube-apiserver -o jsonpath='{.data.config\.yaml}' 2>/dev/null || echo "") + if echo "$KAPI_CONFIG" | grep -q "X25519MLKEM768"; then + echo "✓ PQ hybrid (X25519MLKEM768) is present in kube-apiserver runtime config" + else + echo "⚠ X25519MLKEM768 NOT found in kube-apiserver runtime config — may have fallen back to classical" + echo "namedCurves in runtime config:" + echo "$KAPI_CONFIG" | grep -A5 "namedCurves" || echo "(namedCurves not found)" + fi + echo "" + echo "==> Testing actual TLS key exchange negotiation:" + API_ENDPOINT=$(oc whoami --show-server | sed 's|https://||') + OPENSSL_OUT=$(echo Q | timeout 10 openssl s_client \ + -connect "${API_ENDPOINT}" \ + -tls1_3 \ + -curves X25519MLKEM768:X25519 2>&1) || true + SERVER_KEY=$(echo "$OPENSSL_OUT" | grep -i "Server Temp Key" || true) + if echo "$SERVER_KEY" | grep -qi "X25519MLKEM768"; then + echo "✓ PQ hybrid (X25519MLKEM768) negotiated in TLS handshake" + elif echo "$SERVER_KEY" | grep -qi "X25519"; then + echo "⚠ TLS handshake fell back to classical X25519 — PQ not negotiated" + echo "$SERVER_KEY" + else + echo "Note: openssl on this host may not support X25519MLKEM768 — handshake negotiation unverifiable" + echo "Provide an OQS-enabled openssl build to confirm end-to-end PQ negotiation" + fi + break + fi + + # Check for degraded state + if [ "$degraded" = "True" ]; then + echo "" + echo "WARNING: kube-apiserver is in a degraded state!" + echo "Degraded message:" + oc get co kube-apiserver -o jsonpath='{.status.conditions[?(@.type=="Degraded")].message}' + echo "" + fi + + # Timeout after 60 minutes (increased for slow rollouts) + if [ $elapsed -gt 3600 ]; then + echo "" + echo "ERROR: Rollout did not complete within 60 minutes" + echo "" + echo "Final cluster operator status:" + oc get co kube-apiserver -o yaml 2>&1 || echo "Failed to get cluster operator status" + exit 1 + fi + + sleep 10 +done + +echo "" +echo "==> Change successfully applied and rolled out in ${elapsed} seconds" \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.metadata.json b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.metadata.json new file mode 100644 index 0000000000000..fcf518ce4fd7c --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.metadata.json @@ -0,0 +1,11 @@ +{ + "path": "openshift-qe/pqc/openshift-qe-pqc-ref.yaml", + "owners": { + "approvers": [ + "perfscale-ocp-approvers" + ], + "reviewers": [ + "perfscale-ocp-reviewers" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.yaml b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.yaml new file mode 100644 index 0000000000000..e475ffc6e233c --- /dev/null +++ b/ci-operator/step-registry/openshift-qe/pqc/openshift-qe-pqc-ref.yaml @@ -0,0 +1,13 @@ +ref: + as: openshift-qe-pqc + from_image: + namespace: ci + name: ocp-qe-perfscale-ci + tag: latest + cli: latest + commands: openshift-qe-pqc-commands.sh + resources: + requests: + cpu: 100m + memory: 100Mi + timeout: 1h \ No newline at end of file diff --git a/core-services/release-controller/_releases/priv/release-ocp-5.0.json b/core-services/release-controller/_releases/priv/release-ocp-5.0.json index d4b5e5f593878..9f6c76c2c2f28 100644 --- a/core-services/release-controller/_releases/priv/release-ocp-5.0.json +++ b/core-services/release-controller/_releases/priv/release-ocp-5.0.json @@ -316,6 +316,9 @@ "optional": true, "prowJob": { "name": "periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-driver-toolkit-priv" + }, + "qualifiers": { + "driver-toolkit": {} } }, "driver-toolkit-rhel10": { @@ -324,6 +327,9 @@ "optional": true, "prowJob": { "name": "periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-driver-toolkit-10-priv" + }, + "qualifiers": { + "driver-toolkit": {} } }, "fips-scan": { diff --git a/core-services/release-controller/_releases/release-ocp-5.0.json b/core-services/release-controller/_releases/release-ocp-5.0.json index 93bddef85f5d2..a8df0efd2a703 100644 --- a/core-services/release-controller/_releases/release-ocp-5.0.json +++ b/core-services/release-controller/_releases/release-ocp-5.0.json @@ -138,6 +138,9 @@ "maxRetries": 2, "prowJob": { "name": "periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-driver-toolkit" + }, + "qualifiers": { + "driver-toolkit": {} } }, "driver-toolkit-rhel10": { @@ -145,6 +148,9 @@ "maxRetries": 2, "prowJob": { "name": "periodic-ci-openshift-release-main-nightly-5.0-e2e-aws-driver-toolkit-10" + }, + "qualifiers": { + "driver-toolkit": {} } }, "install-analysis-all": { diff --git a/core-services/release-controller/release-qualifiers.yaml b/core-services/release-controller/release-qualifiers.yaml index 5f3172409536d..47e3bfb40388e 100644 --- a/core-services/release-controller/release-qualifiers.yaml +++ b/core-services/release-controller/release-qualifiers.yaml @@ -124,3 +124,9 @@ qualifiers: summary: "TRT Approval" description: "TRT approved this ReleasePayload to become a Engineering (EC) or Release Candidate (RC)" payloadBadgeStatus: "Yes" + driver-toolkit: + enabled: true + badgeName: "dtk" + summary: "Driver Toolkit Validation" + description: "Driver Toolkit Validation" + payloadBadgeStatus: "Yes"