+#Wait for addons to be ready
+# The deployment intent group status reports instantiated before all
+# Pods are ready, so wait for the instance label (.spec.version) of
+# the deployment intent group instead.
+status="Pending"
+for try in {0..19}; do
+ printf "Waiting for KUD addons to be ready\n"
+ sleep 30s
+ if KUBECONFIG=${CLUSTER_KUBECONFIG} kubectl wait pod -l app.kubernetes.io/instance=r1 --for=condition=Ready --all-namespaces --timeout=0s 2>/dev/null >/dev/null; then
+ status="Ready"
+ break
+ fi
+done
+[[ $status == "Ready" ]]
+
+#Install addon resources
+printf "Installing KUD addon resources\n"
+pushd /opt/kud/multi-cluster/${CLUSTER_NAME}/artifacts/addons
+/opt/kud/multi-cluster/${CLUSTER_NAME}/artifacts/emcoctl.sh apply -f composite-app.yaml -v values-resources.yaml
+popd
+
+#Wait for addon resources to be ready
+status="Pending"
+for try in {0..9}; do
+ printf "Waiting for KUD addon resources to be ready\n"
+ sleep 30s
+ if KUBECONFIG=${CLUSTER_KUBECONFIG} kubectl wait pod -l app.kubernetes.io/instance=r1 --for=condition=Ready --all-namespaces --timeout=0s 2>/dev/null >/dev/null; then
+ status="Ready"
+ break
+ fi
+done
+[[ $status == "Ready" ]]
+
+#Test addons
+printf "Testing KUD addons\n"
+pushd /opt/kud/multi-cluster/addons/tests
+failed_kud_tests=""
+for addon in multus ovn4nfv nfd sriov-network qat cmk; do
+ KUBECONFIG=${CLUSTER_KUBECONFIG} bash ${addon}.sh || failed_kud_tests="${failed_kud_tests} ${addon}"
+done
+if [[ ! -z "$failed_kud_tests" ]]; then
+ printf "Test cases failed:${failed_kud_tests}\n"
+ exit 1
+fi
+popd
+printf "All test cases passed\n"