Skip to content

Commit 396d4ff

Browse files
committed
Add version-specific operator validation for ISO_NO_REGISTRY mode
This commit adds a new validation function to verify that expected operators are installed after cluster deployment in ISO_NO_REGISTRY mode. Key features: - Version-specific operator lists for OCP 4.20 and 4.21 - Automatic version detection using openshift_version function - Clear error reporting for missing operators - 4.20 validates 7 operators - 4.21 validates 12 operators The validation runs after the API server is available and helps ensure that the virtualization bundle and other operators were properly installed during cluster creation.
1 parent 5901c75 commit 396d4ff

1 file changed

Lines changed: 75 additions & 0 deletions

File tree

agent/agent_post_install_validation.sh

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,78 @@ set -euxo pipefail
44
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"
55

66
source $SCRIPTDIR/common.sh
7+
source $SCRIPTDIR/release_info.sh
8+
9+
function validate_installed_operators() {
10+
echo "Validating installed operators..."
11+
12+
# Define expected operators per version
13+
expected_operators_4_20=(
14+
"cluster-kube-descheduler-operator"
15+
"fence-agents-remediation"
16+
"kubernetes-nmstate-operator"
17+
"kubevirt-hyperconverged"
18+
"mtv-operator"
19+
"node-healthcheck-operator"
20+
"node-maintenance-operator"
21+
)
22+
23+
expected_operators_4_21=(
24+
"cluster-kube-descheduler-operator"
25+
"cluster-observability-operator"
26+
"fence-agents-remediation"
27+
"kubernetes-nmstate-operator"
28+
"kubevirt-hyperconverged"
29+
"local-storage-operator"
30+
"metallb-operator"
31+
"mtv-operator"
32+
"node-healthcheck-operator"
33+
"node-maintenance-operator"
34+
"numaresources-operator"
35+
"redhat-oadp-operator"
36+
)
37+
38+
# Determine OCP version and select appropriate operator list
39+
ocp_version=$(openshift_version ${OCP_DIR})
40+
echo "Detected OpenShift version: ${ocp_version}"
41+
42+
case "${ocp_version}" in
43+
"4.20")
44+
expected_operators=("${expected_operators_4_20[@]}")
45+
;;
46+
"4.21")
47+
expected_operators=("${expected_operators_4_21[@]}")
48+
;;
49+
*)
50+
echo "Using 4.21 operator list as default"
51+
expected_operators=("${expected_operators_4_21[@]}")
52+
;;
53+
esac
54+
55+
# Get list of installed operators (just the names, first column)
56+
installed_operators=$(oc get operators -o custom-columns=NAME:.metadata.name --no-headers)
57+
58+
missing_operators=()
59+
for expected_op in "${expected_operators[@]}"; do
60+
if ! echo "$installed_operators" | grep -q "^${expected_op}\."; then
61+
missing_operators+=("$expected_op")
62+
fi
63+
done
64+
65+
if [ ${#missing_operators[@]} -gt 0 ]; then
66+
echo "ERROR: The following expected operators are not installed:"
67+
for missing_op in "${missing_operators[@]}"; do
68+
echo " - $missing_op"
69+
done
70+
echo ""
71+
echo "Installed operators:"
72+
oc get operators
73+
exit 1
74+
else
75+
echo "SUCCESS: All expected operators are installed."
76+
oc get operators
77+
fi
78+
}
779

880
if [[ "${AGENT_E2E_TEST_BOOT_MODE}" == "ISO_NO_REGISTRY" ]]; then
981
MAX_ATTEMPTS=120
@@ -29,6 +101,9 @@ if [[ "${AGENT_E2E_TEST_BOOT_MODE}" == "ISO_NO_REGISTRY" ]]; then
29101
echo "SUCCESS: API server connection established and ClusterVersion is available."
30102
# Run subsequent commands after successful cluster setup
31103
oc get packagemanifests -n openshift-marketplace
104+
105+
# Validate expected operators are installed
106+
validate_installed_operators
32107
fi
33108

34109
installed_control_plane_nodes=$(oc get nodes --selector=node-role.kubernetes.io/master | grep -v AGE | wc -l)

0 commit comments

Comments
 (0)