Wrapped the execution of the k0rdent Sanity tests

Related-PROD: K0RQA-15
Change-Id: I89e19bf3b005e9c5446469bd6ac7a213d1a10663
diff --git a/k8s/docker-container-toolset-full b/k8s/docker-container-toolset-full
index 4308ee4..6cf066f 100644
--- a/k8s/docker-container-toolset-full
+++ b/k8s/docker-container-toolset-full
@@ -27,11 +27,12 @@
 
 RUN export TZ="America/Chicago" && \
     ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
-    add-apt-repository ppa:rmescandon/yq && \
     add-apt-repository ppa:deadsnakes/ppa && \
     apt-get clean && apt-get update && \
-    apt-get install -y python3-pip python3-venv vim git iperf3 iperf mtr htop iputils-ping traceroute tcpdump wget iproute2 curl screen qemu-utils jq yq && \
+    apt-get install -y python3-pip python3-venv vim git iperf3 iperf mtr htop iputils-ping traceroute tcpdump wget iproute2 curl screen qemu-utils jq && \
     apt-get install -y python3.12 python3.12-venv python3.12-dev && \
+    wget -qO /usr/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 && \
+    chmod a+x /usr/bin/yq && \
     rm -rf /var/lib/apt/lists/*
 
 RUN apt-get update && \
diff --git a/k8s/workspace/run-k0rdent-sanity-for-child.sh b/k8s/workspace/run-k0rdent-sanity-for-child.sh
new file mode 100644
index 0000000..becfdf9
--- /dev/null
+++ b/k8s/workspace/run-k0rdent-sanity-for-child.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
+cd $MY_PROJFOLDER/tmp
+source $MY_PROJFOLDER/env.sh
+source $MY_PROJFOLDER/envs/mgmtrc
+source /opt/ksi/.ksivenv/bin/activate
+
+
+if [[ $# -lt 1 ]]; then
+  echo -e "\nError: No cluster name provided."
+  echo "Usage: $0 <cluster-name>"
+  echo ""
+  exit 1
+fi
+
+if [[ $# -lt 2 ]]; then
+  echo -e "\nError: No cluster namespace provided."
+  echo "Usage: $0 <cluster-name> <cluster-namespace>"
+  echo ""
+  exit 1
+fi
+
+TARGET_CLD="$1"
+TARGET_NAMESPACE="$2"
+
+echo ""
+echo "Checking if ClusterDeployment '$TARGET_CLD' exists..."
+if ! kubectl get cld -n $TARGET_NAMESPACE -o name | grep -q "/$TARGET_CLD$"; then
+  echo -e "Error: ClusterDeployment '$TARGET_CLD' not found in '$TARGET_NAMESPACE' namespace"
+  exit 1
+fi
+echo -e "ClusterDeployment '$TARGET_CLD' found in $TARGET_NAMESPACE namespace"
+echo ""
+
+fname="$MY_PROJFOLDER/reports/$MY_CLIENTSHORTNAME-k0rdent-sanity-$TARGET_CLD-$(get_timestamp).html"
+
+# Cleaning up
+echo "# Cleaning up '$MY_PROJFOLDER/tmp/artifacts/'"
+[ -d "$MY_PROJFOLDER/tmp/artifacts/" ] && rm -rf "$MY_PROJFOLDER/tmp/artifacts/"
+[ -f "$MY_PROJFOLDER/tmp/nosetests.xml" ]  && rm "$MY_PROJFOLDER/tmp/nosetests.xml"
+mkdir "$MY_PROJFOLDER/tmp/artifacts/"
+
+# recreate the sanity reports dir to have fresh artifacts
+sanity_reports_dir="$MY_PROJFOLDER/reports/sanity"
+if [ -d $sanity_reports_dir ]; then
+	yes | rm $sanity_reports_dir/*
+else
+	mkdir $sanity_reports_dir
+fi
+
+# exporting envs
+export TARGET_NAMESPACE=$TARGET_NAMESPACE
+export TARGET_CLD=$TARGET_CLD
+
+# Run the sanity tests
+pytest -m sanity_targeted \
+  -p pytest_subtests \
+  -v \
+  --tb=short \
+  --color=yes \
+  -p no:warnings \
+  -p no:sugar \
+  --junitxml=$sanity_reports_dir/sanity-checks-results-$TARGET_CLD.xml \
+  --html=$sanity_reports_dir/sanity-checks-results-$TARGET_CLD.html \
+  --self-contained-html \
+  -r s /opt/ksi/test_sanity_checks.py
+
+if [ "$(ls -A "$MY_PROJFOLDER/tmp/artifacts" 2>/dev/null)" ]; then
+    cp "$MY_PROJFOLDER/tmp/artifacts/"* "$sanity_reports_dir"
+fi
+
+cp $sanity_reports_dir/sanity-checks-results-$TARGET_CLD.html ${fname}
+update_latest_report_to "${fname}"
+
+deactivate
\ No newline at end of file
diff --git a/k8s/workspace/run-k0rdent-sanity.sh b/k8s/workspace/run-k0rdent-sanity.sh
new file mode 100644
index 0000000..4037697
--- /dev/null
+++ b/k8s/workspace/run-k0rdent-sanity.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
+cd $MY_PROJFOLDER/tmp
+source $MY_PROJFOLDER/env.sh
+source $MY_PROJFOLDER/envs/mgmtrc
+source /opt/ksi/.ksivenv/bin/activate
+
+fname="$MY_PROJFOLDER/reports/$MY_CLIENTSHORTNAME-k0rdent-sanity-$(get_timestamp).html"
+
+# Cleaning up
+echo "# Cleaning up '$MY_PROJFOLDER/tmp/artifacts/'"
+[ -d "$MY_PROJFOLDER/tmp/artifacts/" ] && rm -rf "$MY_PROJFOLDER/tmp/artifacts/"
+[ -f "$MY_PROJFOLDER/tmp/nosetests.xml" ]  && rm "$MY_PROJFOLDER/tmp/nosetests.xml"
+mkdir "$MY_PROJFOLDER/tmp/artifacts/"
+
+# recreate the sanity reports dir to have fresh artifacts
+sanity_reports_dir="$MY_PROJFOLDER/reports/sanity"
+if [ -d $sanity_reports_dir ]; then
+	yes | rm $sanity_reports_dir/*
+else
+	mkdir $sanity_reports_dir
+fi
+
+# Run the sanity tests
+pytest -m sanity \
+ -p pytest_subtests \
+ -v \
+ --tb=short \
+ --color=yes \
+ -p no:warnings \
+ -p no:sugar \
+ --junitxml=$sanity_reports_dir/sanity-checks-results.xml \
+ --html=$sanity_reports_dir/sanity-checks-results.html \
+ --self-contained-html \
+ -r s \
+ /opt/ksi/test_sanity_checks.py
+
+if [ "$(ls -A "$MY_PROJFOLDER/tmp/artifacts" 2>/dev/null)" ]; then
+    cp "$MY_PROJFOLDER/tmp/artifacts/"* "$sanity_reports_dir"
+fi
+
+cp $sanity_reports_dir/sanity-checks-results.html ${fname}
+update_latest_report_to "${fname}"
+
+deactivate
\ No newline at end of file