From 2879abf90a85730656859c458774037ef75d7f55 Mon Sep 17 00:00:00 2001 From: Oren Cohen Date: Mon, 10 Aug 2026 09:38:14 +0300 Subject: [PATCH] Add readiness checks before running ocp-virt-validation-checkup Wait for ODF StorageClass and HCO CLI download route to be ready before starting the validation Job. The StorageCluster can report Ready before all storage classes are created, and the HCO CLI download route may not be serving when the checkup tries to download virtctl, both causing immediate Job failures. Signed-off-by: Oren Cohen --- ...nnected-run-validation-checkup-commands.sh | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/ci-operator/step-registry/agent-qe/baremetal/install/ove/disconnected/run-validation-checkup/agent-qe-baremetal-install-ove-disconnected-run-validation-checkup-commands.sh b/ci-operator/step-registry/agent-qe/baremetal/install/ove/disconnected/run-validation-checkup/agent-qe-baremetal-install-ove-disconnected-run-validation-checkup-commands.sh index 9608832ba21bf..f8cf6de402c04 100644 --- a/ci-operator/step-registry/agent-qe/baremetal/install/ove/disconnected/run-validation-checkup/agent-qe-baremetal-install-ove-disconnected-run-validation-checkup-commands.sh +++ b/ci-operator/step-registry/agent-qe/baremetal/install/ove/disconnected/run-validation-checkup/agent-qe-baremetal-install-ove-disconnected-run-validation-checkup-commands.sh @@ -2,11 +2,41 @@ set -euo pipefail +echo "=== Waiting for ODF StorageClass ${STORAGE_CLASS} ===" +COUNTER=0 +while [ $COUNTER -lt 300 ]; do + if oc get storageclass "${STORAGE_CLASS}" &>/dev/null; then + echo "StorageClass ${STORAGE_CLASS} found" + break + fi + sleep 10 + COUNTER=$((COUNTER + 10)) + echo "Waiting ${COUNTER}s for StorageClass ${STORAGE_CLASS}..." +done + echo "=== Setting ODF StorageClass as default ===" oc patch storageclass "${STORAGE_CLASS}" \ -p '{"metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}' echo "StorageClass ${STORAGE_CLASS} set as default" +echo "=== Waiting for HCO CLI download route ===" +CLI_ROUTE=$(oc get route hyperconverged-cluster-cli-download -n "${TARGET_NAMESPACE}" \ + -o jsonpath='{.status.ingress[0].host}' 2>/dev/null || echo "") +if [[ -n "${CLI_ROUTE}" ]]; then + COUNTER=0 + while [ $COUNTER -lt 120 ]; do + if curl -sk -o /dev/null -w '%{http_code}' "https://${CLI_ROUTE}/" 2>/dev/null | grep -qE '^(200|301|302)'; then + echo "HCO CLI download route is ready" + break + fi + sleep 10 + COUNTER=$((COUNTER + 10)) + echo "Waiting ${COUNTER}s for HCO CLI route to respond..." + done +else + echo "WARNING: HCO CLI download route not found, skipping readiness check" +fi + echo "=== Discovering validation image from CNV CSV ===" CSV_NAME=$(oc get csv -n "${TARGET_NAMESPACE}" -o json | \ jq -r '.items[] | select(.metadata.name | startswith("kubevirt-hyperconverged")).metadata.name')