Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions agent/agent_post_install_validation.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,78 @@ set -euxo pipefail
SCRIPTDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )"

source $SCRIPTDIR/common.sh
source $SCRIPTDIR/release_info.sh

function validate_installed_operators() {
echo "Validating installed operators..."

# Define expected operators per version
expected_operators_4_20=(
"cluster-kube-descheduler-operator"
"fence-agents-remediation"
"kubernetes-nmstate-operator"
"kubevirt-hyperconverged"
"mtv-operator"
"node-healthcheck-operator"
"node-maintenance-operator"
)

expected_operators_4_21=(
"cluster-kube-descheduler-operator"
"cluster-observability-operator"
"fence-agents-remediation"
"kubernetes-nmstate-operator"
"kubevirt-hyperconverged"
"local-storage-operator"
"metallb-operator"
"mtv-operator"
"node-healthcheck-operator"
"node-maintenance-operator"
"numaresources-operator"
"redhat-oadp-operator"
)

# Determine OCP version and select appropriate operator list
ocp_version=$(openshift_version ${OCP_DIR})
echo "Detected OpenShift version: ${ocp_version}"

case "${ocp_version}" in
"4.20")
expected_operators=("${expected_operators_4_20[@]}")
;;
"4.21")
expected_operators=("${expected_operators_4_21[@]}")
;;
*)
echo "Using 4.21 operator list as default"
expected_operators=("${expected_operators_4_21[@]}")
;;
esac

# Get list of installed operators (just the names, first column)
installed_operators=$(oc get operators -o custom-columns=NAME:.metadata.name --no-headers)

missing_operators=()
for expected_op in "${expected_operators[@]}"; do
if ! echo "$installed_operators" | grep -q "^${expected_op}\."; then
missing_operators+=("$expected_op")
fi
done

if [ ${#missing_operators[@]} -gt 0 ]; then
echo "ERROR: The following expected operators are not installed:"
for missing_op in "${missing_operators[@]}"; do
echo " - $missing_op"
done
echo ""
echo "Installed operators:"
oc get operators
exit 1
else
echo "SUCCESS: All expected operators are installed."
oc get operators
fi
}

if [[ "${AGENT_E2E_TEST_BOOT_MODE}" == "ISO_NO_REGISTRY" ]]; then
MAX_ATTEMPTS=120
Expand All @@ -29,6 +101,9 @@ if [[ "${AGENT_E2E_TEST_BOOT_MODE}" == "ISO_NO_REGISTRY" ]]; then
echo "SUCCESS: API server connection established and ClusterVersion is available."
# Run subsequent commands after successful cluster setup
oc get packagemanifests -n openshift-marketplace

# Validate expected operators are installed
validate_installed_operators
fi

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