Initial version of the k0rdent toolset

Main changes:
* fixed init-workspace.sh to be executed on k0rdent
* fixed running of cfg-checker for nets and pings
* removed some openstack-related scripts
* created the Dockerfile docker-container-toolset-full

Related-PROD: K0RQA-15
Change-Id: Ib57a3b2a1d47e3a0f48951eb3def71839322a46d
diff --git a/k8s/docker-container-toolset-full b/k8s/docker-container-toolset-full
new file mode 100644
index 0000000..a41cc3b
--- /dev/null
+++ b/k8s/docker-container-toolset-full
@@ -0,0 +1,81 @@
+FROM ubuntu:18.04 AS download-packages-1804
+RUN mkdir /opt/packages-1804 && cd /opt/packages-1804 && \
+    apt-get update && \
+    apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances iperf3 iperf fio nfs-utils | grep "^\w" | sort -u) || true && \
+    rm -rf /var/lib/apt/lists/*
+
+FROM ubuntu:20.04 AS download-packages-2004
+RUN mkdir /opt/packages && cd /opt/packages && \
+    apt-get update && \
+    apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances iperf3 iperf fio nfs-utils | grep "^\w" | sort -u) || true && \
+    rm -rf /var/lib/apt/lists/*
+
+FROM ubuntu:22.04
+
+LABEL maintainer="qa-ps@mirantis.com"
+
+ADD k8s/src/ksi.tgz /opt/ksi/
+ADD k8s/src/mos-checker.tgz /opt/cfg-checker/
+WORKDIR /opt
+
+COPY --from=download-packages-2004 /opt/packages /opt/packages
+COPY --from=download-packages-1804 /opt/packages-1804 /opt/packages-1804
+
+RUN apt-get clean && apt-get update && \
+    apt-get install -y make gcc g++ git libaio-dev libaio1 zlib1g-dev software-properties-common fio && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN export TZ="America/Chicago" && \
+    ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
+    add-apt-repository ppa:rmescandon/yq && \
+    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 && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN apt-get update && \
+    apt-get install curl gpg apt-transport-https --yes && \
+    curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null && \
+    echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | tee /etc/apt/sources.list.d/helm-stable-debian.list && \
+    apt-get update && \
+    apt-get install -y helm && \
+    rm -rf /var/lib/apt/lists/*
+
+RUN pip3 install --no-cache-dir pyghmi tempestparser
+
+RUN git clone --single-branch https://gerrit.mcp.mirantis.com/mcp/cvp-configuration -b k0rdent /opt/res-files && \
+    cd /opt/cfg-checker && \
+    python3 -m venv .checkervenv && \
+    . .checkervenv/bin/activate && \
+    pip3 install --no-cache-dir -r requirements.txt && \
+    python3 setup.py develop && \
+    deactivate && \
+    mkdir /opt/cmp-check && cd /opt/cmp-check && \
+    cp /opt/res-files/scripts/prepare.sh ./ && \
+    cp /opt/res-files/scripts/cmp_check.sh ./ && \
+    cp /opt/res-files/cleanup.sh ./ && \
+    rm -rf /opt/res-files/.git && \
+    rm -rf /opt/cfg-checker/.git
+
+RUN cd /opt/ksi/ && \
+    python3 -m venv .ksivenv && \
+    . .ksivenv/bin/activate && \
+    pip3 install --no-cache-dir -r si_tests/requirements.txt && \
+    deactivate
+
+RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" && \
+    install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl && \
+    rm kubectl
+
+RUN git clone "https://gerrit.mcp.mirantis.com/mcp/mos-spt" /opt/mos-spt && \
+    cd /opt/mos-spt && \
+    python3 -m venv .venv && \
+    . .venv/bin/activate && \
+    pip3 install --no-cache-dir -r requirements.txt && \
+    deactivate
+
+RUN printf "LABELS:\n  IMAGE_TAG: k0rdent" > /dockerimage_metadata
+
+WORKDIR /artifacts
+
+ENTRYPOINT ["sleep infinite"]
+
diff --git a/k8s/docker-mos-toolset-full b/k8s/docker-mos-toolset-full
index 6e17739..7f2bd4c 100644
--- a/k8s/docker-mos-toolset-full
+++ b/k8s/docker-mos-toolset-full
@@ -10,11 +10,11 @@
     apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances iperf3 iperf fio nfs-utils | grep "^\w" | sort -u) || true && \
     rm -rf /var/lib/apt/lists/*
 
-FROM mirantis.azurecr.io/openstack/heat:caracal-jammy-20250314195424
+FROM ubuntu:22.04
 
 LABEL maintainer="qa-ps@mirantis.com"
 
-ADD k8s/src/si-tests.tgz /opt/si-tests/
+ADD k8s/src/ksi.tgz /opt/ksi/
 ADD k8s/src/mos-checker.tgz /opt/cfg-checker/
 WORKDIR /opt
 
@@ -22,27 +22,27 @@
 COPY --from=download-packages-1804 /opt/packages-1804 /opt/packages-1804
 
 RUN apt-get clean && apt-get update && \
-    apt-get install -y make gcc g++ git libaio-dev libaio1 zlib1g-dev fio && \
-    mkdir /opt/density && \
+    apt-get install -y make gcc g++ git libaio-dev libaio1 zlib1g-dev software-properties-common fio && \
     rm -rf /var/lib/apt/lists/*
 
 RUN export TZ="America/Chicago" && \
     ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
+    add-apt-repository ppa:rmescandon/yq && \
     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 && \
+    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 && \
     rm -rf /var/lib/apt/lists/*
 
 RUN apt-get update && \
-    curl https://baltocdn.com/helm/signing.asc | apt-key add - && \
-    apt-get install apt-transport-https --yes && \
-    echo "deb https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list && \
+    apt-get install curl gpg apt-transport-https --yes && \
+    curl -fsSL https://packages.buildkite.com/helm-linux/helm-debian/gpgkey | gpg --dearmor | tee /usr/share/keyrings/helm.gpg > /dev/null && \
+    echo "deb [signed-by=/usr/share/keyrings/helm.gpg] https://packages.buildkite.com/helm-linux/helm-debian/any/ any main" | tee /etc/apt/sources.list.d/helm-stable-debian.list && \
     apt-get update && \
     apt-get install -y helm && \
     rm -rf /var/lib/apt/lists/*
 
 RUN pip3 install --no-cache-dir pyghmi tempestparser
 
-RUN git clone https://gerrit.mcp.mirantis.com/mcp/cvp-configuration -b 25.1-caracal /opt/res-files && \
+RUN git clone --single-branch https://gerrit.mcp.mirantis.com/mcp/cvp-configuration -b k0rdent /opt/res-files && \
     cd /opt/cfg-checker && \
     python3 -m venv .checkervenv && \
     . .checkervenv/bin/activate && \
@@ -56,9 +56,9 @@
     rm -rf /opt/res-files/.git && \
     rm -rf /opt/cfg-checker/.git
 
-RUN cd /opt/si-tests/ && \
-    python3 -m venv .sivenv && \
-    . .sivenv/bin/activate && \
+RUN cd /opt/ksi/ && \
+    python3 -m venv .ksivenv && \
+    . .ksivenv/bin/activate && \
     pip3 install --no-cache-dir -r si_tests/requirements.txt && \
     deactivate
 
@@ -73,17 +73,7 @@
     pip3 install --no-cache-dir -r requirements.txt && \
     deactivate
 
-ADD k8s/src/openstack-refapp.tgz /opt/density/openstack-refapp/
-
-RUN cd /opt/density/openstack-refapp/ && \
-    python3 -m venv .refapp-venv && \
-    . .refapp-venv/bin/activate && \
-    pip3 install --no-cache-dir -r requirements.txt && \
-    deactivate && \
-    cp /opt/res-files/scripts/prepare-refapp.sh /opt/density/openstack-refapp/ && \
-    cp /opt/res-files/scripts/run-refapp-density.sh /opt/density/openstack-refapp/
-
-RUN printf "LABELS:\n  IMAGE_TAG: 25.1-caracal" > /dockerimage_metadata
+RUN printf "LABELS:\n  IMAGE_TAG: k0rdent" > /dockerimage_metadata
 
 ENTRYPOINT ["sleep infinite"]
 
diff --git a/k8s/src/ksi.tgz b/k8s/src/ksi.tgz
new file mode 100644
index 0000000..1016f53
--- /dev/null
+++ b/k8s/src/ksi.tgz
Binary files differ
diff --git a/k8s/src/mos-checker.tgz b/k8s/src/mos-checker.tgz
index fa7f30c..b95a33e 100644
--- a/k8s/src/mos-checker.tgz
+++ b/k8s/src/mos-checker.tgz
Binary files differ
diff --git a/k8s/workspace/mcc-checker.env b/k8s/workspace/child-checker.env
similarity index 91%
rename from k8s/workspace/mcc-checker.env
rename to k8s/workspace/child-checker.env
index 0d16295..667fcfb 100644
--- a/k8s/workspace/mcc-checker.env
+++ b/k8s/workspace/child-checker.env
@@ -5,12 +5,12 @@
 # please, use ~/.ssh/config
 # SSH hostname of salt/k8s master node
 MCP_SSH_KEY=/artifacts/envs/node.key
-MCP_SSH_USER=mcc-user
+MCP_SSH_USER=ubuntu
 MCP_SSH_HOST=ip_address
 MCP_ENV_HOST=ip_address
 ### K8s section
 # All vars start with KUBE
 KUBE_CONFIG_ROOT=/root
 KUBE_SCRIPTS_FOLDER=cfg-checker-scripts
-KUBE_NODE_USER=mcc-user
+KUBE_NODE_USER=ubuntu
 KUBE_NODE_KEYPATH=/artifacts/envs/node.key
diff --git a/k8s/workspace/functions.sh b/k8s/workspace/functions.sh
index e6c6a1a..a1f3f10 100644
--- a/k8s/workspace/functions.sh
+++ b/k8s/workspace/functions.sh
@@ -7,4 +7,92 @@
 
 update_latest_report_to() {
   cp "$1" "$(echo $1|sed s/20[0-9]\\{2\\}.*/latest.html/)"
-}
\ No newline at end of file
+}
+
+check_cluster_deployment_exists() {
+    local cluster_name="$1"
+    echo ""
+    echo "Checking if ClusterDeployment '$cluster_name' exists..."
+    if ! kubectl get cld -A -o name | grep -q "/$cluster_name$"; then
+        echo "Error: ClusterDeployment '$cluster_name' not found in any namespace"
+        return 1
+    fi
+    echo -e "ClusterDeployment '$cluster_name' found"
+    return 0
+}
+
+check_file_exists() {
+    local path="$1"
+    local desc="$2"
+    if [[ ! -f "$path" ]]; then
+        echo "Error: $desc file not found at $path"
+        return 1
+    fi
+}
+
+txt2html_net_ping_report() {
+    local in="$1"
+    local cluster_name="$2"
+    local out="$3"
+
+    [[ -z "$in" ]] && { echo "Usage: txt2html_net_ping_report <input.txt> [cluster_name] [output.html]"; return 2; }
+    [[ ! -f "$in" ]] && { echo "No such file: $in"; return 2; }
+
+    if [[ -z "$out" ]]; then
+        out="${in%.txt}.html"
+        [[ "$out" == "$in" ]] && out="$in.html"
+    fi
+    mkdir -p "$(dirname "$out")" || return 1
+
+    local ts
+    ts="$(get_timestamp)"
+    local cluster_esc_name="$cluster_name"
+    cluster_esc_name="${cluster_esc_name//&/&amp;}"
+    cluster_esc_name="${cluster_esc_name//</&lt;}"
+    cluster_esc_name="${cluster_esc_name//>/&gt;}"
+    local title="Network Ping Report"
+    [[ -n "$cluster_esc_name" ]] && title="Network Ping Report [$cluster_esc_name]"
+
+    {
+
+    cat <<EOF
+<!doctype html>
+<html lang="en"><head>
+<meta charset="utf-8">
+<title>$title</title>
+<style>
+  body { font:14px/1.45 system-ui, -apple-system, Segoe UI, Roboto, sans-serif; margin:20px; }
+  .summary { font-weight:600; margin:0 0 8px; }
+  .net     { color:#0366d6; font-weight:600; }
+  .from    { color:#555; font-weight:600; display:block; margin-top: 18px; margin-bottom: -12px; }
+  .pass    { color:#1a7f37; font-weight:600; }
+  .fail    { color:#e53935; font-weight:600; }
+  pre      { background:#fafafa; border:1px solid #e5e5e5; padding:12px; overflow:auto; }
+</style>
+</head><body>
+<h2>$title</h2>
+<p style="color: gray; font-style: italic; font-size: 10px;">Generated at $ts</p>
+<pre>
+EOF
+
+    awk '
+    function esc(s){ gsub("&","&amp;",s); gsub("<","&lt;"); gsub(">","&gt;"); return s }
+    {
+      raw=$0
+      line=esc(raw)
+      gsub(/\+ PASS:/,"<span class=\"pass\">+ PASS:</span>",line)
+      gsub(/\- FAIL:/,"<span class=\"fail\">- FAIL:</span>",line)
+      if (raw ~ /^# Summary/) { print "<span class=\"summary\">" line "</span>"; next }
+      if (raw ~ /^--->/)      { print "<span class=\"net\">"     line "</span>";   next }
+      if (raw ~ /^=+/)        { print "<span class=\"from\">"    line "</span>";   next }
+      print line
+    }' "$in"
+
+    cat <<'EOF'
+</pre>
+</body></html>
+EOF
+    } > "$out"
+
+    echo "Done: $out"
+}
diff --git a/k8s/workspace/init-workspace.sh b/k8s/workspace/init-workspace.sh
index e85b0c3..f8ec98a 100644
--- a/k8s/workspace/init-workspace.sh
+++ b/k8s/workspace/init-workspace.sh
@@ -3,56 +3,27 @@
 function ewriteln() {
 	echo ${1} | tee -a $MY_PROJFOLDER/env.sh
 }
-function qkeystone() {
-	keystone_pod=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml get pod -n openstack -o=custom-columns=NAME:.metadata.name | grep keystone-client)
-	# echo "# Running 'kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec {} -c keystone-client --stdin -- "${1}"'"
-	kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- '${1}'
-}
-function get_conformance_image_tag() {
-    kubeconfig_path=$1
-    k8s_server_version=$(kubectl --kubeconfig="$kubeconfig_path" version -o json 2>/dev/null | jq -r '.serverVersion.gitVersion')
-    k8s_short_version=${k8s_server_version:1:4}
-    image_tag=""
-    case $k8s_short_version in
-        "1.18")
-            image_tag="1.18.9-16"
-            ;;
-        "1.19")
-            image_tag="1.19.2-1"
-            ;;
-        "1.20")
-            image_tag="1.20.6-4"
-            ;;
-        "1.21")
-            image_tag="1.21.9-4"
-            ;;
-        "1.24")
-            image_tag="1.24.4-2"
-            ;;
-        "1.27")
-            image_tag="1.27.16-4"
-            ;;
-    esac
-    echo "$image_tag"
-}
 
+exec 2> >(while read line; do echo -e "\033[0;31m$line\033[0m" >&2; done)
 export MY_PROJFOLDER=/artifacts
 echo "# Using folder '$MY_PROJFOLDER'"
 cd $MY_PROJFOLDER
 [ ! -d envs ] && mkdir envs
+[ ! -d envs/checkers ] && mkdir envs/checkers
+[ ! -d envs/kubeconfigs ] && mkdir envs/kubeconfigs
 [ ! -d yamls ] && mkdir yamls
 [ ! -d reports ] && mkdir reports
 [ ! -d tmp ] && mkdir tmp
 
-# move mcc konfig to default place
-if [ -f $MY_PROJFOLDER/mcc-kubeconfig.yaml ]; then
-    mv $MY_PROJFOLDER/mcc-kubeconfig.yaml $MY_PROJFOLDER/envs/mcc-kubeconfig.yaml
+# move mgmt (k0rdent mothership) k8s konfig to default place
+if [ -f $MY_PROJFOLDER/mgmt-kubeconfig.yaml ]; then
+    mv $MY_PROJFOLDER/mgmt-kubeconfig.yaml $MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml
 fi
 if [ -f $MY_PROJFOLDER/node.key ]; then
     mv $MY_PROJFOLDER/node.key $MY_PROJFOLDER/envs/node.key
 fi
-if [ ! -f $MY_PROJFOLDER/envs/mcc-kubeconfig.yaml ]; then
-	echo "ERROR: MCC kubeconfig not found either at '$MY_PROJFOLDER/mcc-kubeconfig.yaml' or '$MY_PROJFOLDER/envs/mcc-kubeconfig.yaml'"
+if [ ! -f $MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml ]; then
+	echo "ERROR: k0rdent mgmt cluster (mothership) kubeconfig was not found either at '$MY_PROJFOLDER/mgmt-kubeconfig.yaml' or '$MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml'"
 	exit 1
 fi
 echo " "
@@ -60,7 +31,7 @@
 ### prepare needed variables
 echo "# Updating '$MY_PROJFOLDER/env.sh'"
 
-export KUBECONFIG=$MY_PROJFOLDER/envs/mcc-kubeconfig.yaml
+export KUBECONFIG=$MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml
 if [ ! -f $MY_PROJFOLDER/env.sh ]; then
 	touch $MY_PROJFOLDER/env.sh
 else
@@ -71,57 +42,46 @@
 ### Edit the following lines to set the client name, floating network name, IAM writer password
 ewriteln "export MY_CLIENTNAME='ClientName'"
 ewriteln "export MY_CLIENTSHORTNAME='clname'"
-ewriteln "export MY_PROJNAME='MOS_DEPLOY'"
-CUSTOM_PUBLIC_NET_NAME=""
-ewriteln "export WRITER_PASSWORD=''" # IAM (Keycloak) writer password
+ewriteln "export MY_PROJNAME='K0RDENT_DEPLOY'"
 
 ### Setting the project directory
 ewriteln "export MY_PROJFOLDER=/artifacts"
 
-# NS & CLUSTER
-printf "\n\n# Getting namespace and cluster"
-nn=( $(kubectl get cluster -A --no-headers -o=custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace | grep -v default) )
-echo "# Extracted data: '${nn[@]}'"
-vNS="${nn[1]}"
-vCLUSTER="${nn[0]}"
-ewriteln "export MOS_NS=${vNS}"
-ewriteln "export MOS_CLUSTER=${vCLUSTER}"
-echo "# Extracted NS: '${vNS}'"
-echo "# Extracted CLUSTER: '${vCLUSTER}'"
+printf "\n\n# Getting ready ClusterDeployments"
+printf "\n# For each ready cld, getting namespace and cluster"
+kubectl get cld -A --no-headers | awk '$3 == "True" {print $1, $2}' | while read -r namespace name; do
+    echo "   -> Processing $name in namespace $namespace..."
+    kubeconfig_secret="${name}-kubeconfig"
+    kubeconfig_file="$MY_PROJFOLDER/envs/kubeconfigs/${name}-kubeconfig.yaml"
 
-printf "\n\n# Writing additional options"
+    echo "   -> Fetching kubeconfig to $kubeconfig_file"
+    kubectl -n "$namespace" get secret "$kubeconfig_secret" \
+      -o jsonpath='{.data.value}' | base64 -d > "$kubeconfig_file"
+
+    rc_file="$MY_PROJFOLDER/envs/${name}rc"
+    echo "   -> Generating RC file at $rc_file"
+    cat <<EOF > "$rc_file"
+#!/bin/bash
+export KUBECONFIG=$MY_PROJFOLDER/envs/kubeconfigs/${name}-kubeconfig.yaml
+export CHILD_CLUSTER_NAME=${name}
+export CHILD_CLUSTER_NS=${namespace}
+EOF
+
+    chmod +x "$rc_file"
+done
+
+printf "\n\n# Writing additional options\n"
 ewriteln "export SI_BINARIES_DIR=$(which helm | rev | cut -d'/' -f2- | rev)"
 ewriteln "export HELM_BINARY_PATH=$(which helm)"
-ewriteln "export K8S_CONFORMANCE_CONCURRENCY=10"
 
-printf "\n\n# Writing additional options for K8S conformance tests for MCC cluster...\n"
-mcc_kubeconfig_path="$MY_PROJFOLDER/envs/mcc-kubeconfig.yaml"
-mcc_conformance_image_tag=$(get_conformance_image_tag "$mcc_kubeconfig_path")
-if [ -z "$mcc_conformance_image_tag" ]; then
-    echo "Could not identify K8S_CONFORMANCE_IMAGE_VERSION for MCC."
-fi
-mcc_conformance_image_url="mirantis.azurecr.io/lcm/kubernetes/k8s-conformance:v${mcc_conformance_image_tag}"
-ewriteln "export MCC_K8S_CONFORMANCE_IMAGE_VERSION='${mcc_conformance_image_tag}'"
-ewriteln "export MCC_K8S_CONFORMANCE_IMAGE_URL='${mcc_conformance_image_url}'"
-
-# getting IAM Keycloak URL
-ewriteln "export KEYCLOAK_URL=$(kubectl get cluster kaas-mgmt -o jsonpath='{.status.providerStatus.helm.releases.iam.keycloak.url}')"
-
-# extract MOS kubeconfig
-echo " "
-printf "\n\nExtracting mos-kubeconfig.yaml"
-if [[ ! -z ${vCLUSTER+x} ]]; then
-	kubectl --kubeconfig $MY_PROJFOLDER/envs/mcc-kubeconfig.yaml -n ${vNS} get secrets ${vCLUSTER}-kubeconfig -o jsonpath='{.data.admin\.conf}'  | base64 -d | sed 's/:5443/:443/g' | tee $MY_PROJFOLDER/envs/mos-kubeconfig.yaml
-else
-	echo "MOS_CLUSTER variable empty/invalid: '${vCLUSTER}'"
-fi
 
 # generate additional files
-printf "\n\nPreparing additional files"
+printf "\n\n# Preparing additional files\n"
 # copy files
 cp -v /opt/res-files/k8s/workspace/* $MY_PROJFOLDER/envs/
 [ ! -d $MY_PROJFOLDER/scripts ] && mkdir $MY_PROJFOLDER/scripts
 mv -v $MY_PROJFOLDER/envs/*.sh $MY_PROJFOLDER/scripts/
+mv -v $MY_PROJFOLDER/envs/*.env $MY_PROJFOLDER/envs/checkers
 
 cp -v /opt/res-files/k8s/yamls/qa-rally.yaml $MY_PROJFOLDER/yamls
 cp -v /opt/res-files/k8s/yamls/qa-res.yaml $MY_PROJFOLDER/yamls
@@ -131,81 +91,51 @@
 # remove duplicate init
 rm -v $MY_PROJFOLDER/scripts/init-workspace.sh
 # update IP Addresses
-mccip=$(cat $MY_PROJFOLDER/envs/mcc-kubeconfig.yaml | grep server | cut -d':' -f3 | cut -d'/' -f3)
-echo "-> MCC Server IP is: ${mccip}"
-sed -i "s/ip_address/$mccip/g" $MY_PROJFOLDER/envs/mcc-checker.env
+mgmt_ip=$(cat $MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml | grep server | cut -d':' -f3 | cut -d'/' -f3)
+echo "   -> MGMT (Mothership) Server IP is: ${mgmt_ip}"
+sed -i "s/ip_address/$mgmt_ip/g" $MY_PROJFOLDER/envs/checkers/mgmt-checker.env
 
-if [ -f $MY_PROJFOLDER/envs/mos-kubeconfig.yaml ]; then
-    mosip=$(cat $MY_PROJFOLDER/envs/mos-kubeconfig.yaml | grep server | cut -d':' -f3 | cut -d'/' -f3)
-    echo "-> MOS Server IP is: ${mosip}"
-    sed -i "s/ip_address/$mosip/g" $MY_PROJFOLDER/envs/mos-checker.env
 
-    vSC="$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml get sc | grep default | cut -d' ' -f1)"
-    echo "-> Storage class is ${vSC}"
-    echo "# Updating resources yaml "
-    sed -i "s/storage_class/${vSC}/g" $MY_PROJFOLDER/yamls/qa-res.yaml
-    echo " "
-    ewriteln "export MOS_SC=${vSC}"
+printf "\n\n# Preparing checker.env files for each child cluster, getting default SC...\n"
+ENV_DIR="$MY_PROJFOLDER/envs"
+CHECKERS_DIR="$MY_PROJFOLDER/envs/checkers"
+for kubeconfig_path in "$ENV_DIR"/kubeconfigs/*-kubeconfig.yaml; do
+    [[ -e "$kubeconfig_path" ]] || continue
+    name=$(basename "$kubeconfig_path" -kubeconfig.yaml)
 
-    ewriteln "export OSH_DEPLOYMENT_NAME=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack get openstackdeployment --no-headers | cut -d' ' -f1)"
-    ewriteln "export SI_BINARIES_DIR=$(which helm | rev | cut -d'/' -f2- | rev)"
-    ewriteln "export HELM_BINARY_PATH=$(which helm)"
+    echo "# Processing cluster - getting K8S IP: $name"
+    child_ip=$(grep server "$kubeconfig_path" | cut -d':' -f3 | cut -d'/' -f3)
+    echo "   -> Cluster ${name} Server IP is: ${child_ip}"
 
-    printf "\n\n# Writing additional options for K8S conformance tests for MOS cluster...\n"
-    mos_kubeconfig_path="$MY_PROJFOLDER/envs/mos-kubeconfig.yaml"
-    mos_conformance_image_tag=$(get_conformance_image_tag "$mos_kubeconfig_path")
-    if [ -z "$mos_conformance_image_tag" ]; then
-        echo "Could not identify K8S_CONFORMANCE_IMAGE_VERSION for MOS."
-    fi
-    mos_conformance_image_url="mirantis.azurecr.io/lcm/kubernetes/k8s-conformance:v${mos_conformance_image_tag}"
-    ewriteln "export MOS_K8S_CONFORMANCE_IMAGE_VERSION='${mos_conformance_image_tag}'"
-    ewriteln "export MOS_K8S_CONFORMANCE_IMAGE_URL='${mos_conformance_image_url}'"
+    checker_env="$CHECKERS_DIR/${name}-checker.env"
+    cp $CHECKERS_DIR/child-checker.env ${checker_env}
+    echo "   -> Generating checker.env for $name"
+    sed -i "s/ip_address/${child_ip}/g" "$checker_env"
 
-    echo " "
-    keystone_pod=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml get pod -n openstack -o=custom-columns=NAME:.metadata.name | grep keystone-client)
-    if [ -n "${CUSTOM_PUBLIC_NET_NAME:-}" ]; then
-      # if CUSTOM_PUBLIC_NET_NAME is set to some specific net, check it is present on the cloud
-      echo "# Checking that the external network ${CUSTOM_PUBLIC_NET_NAME} is present on the cloud"
-      cmd="openstack network show ${CUSTOM_PUBLIC_NET_NAME} -c id -f value 2>/dev/null"
-      echo "# Running 'kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- sh -c '${cmd}'"
-      network_exists=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec "${keystone_pod}" -c keystone-client --stdin -- sh -c "${cmd}")
-      if [ -n "$network_exists" ]; then
-        echo "# Setting TEMPEST_CUSTOM_PUBLIC_NET to ${CUSTOM_PUBLIC_NET_NAME}"
-        ewriteln "export TEMPEST_CUSTOM_PUBLIC_NET=${CUSTOM_PUBLIC_NET_NAME}"
-      else
-        echo "The custom external (floating) network ${CUSTOM_PUBLIC_NET_NAME} is not found on the cloud. Set CUSTOM_PUBLIC_NET_NAME=\"\" to automatically pick some public network."
-        exit 1
-      fi
+    default_sc=$(kubectl --kubeconfig "$kubeconfig_path" get sc 2>/dev/null | grep 'default' || true)
+
+    if [[ -n "$default_sc" ]]; then
+        vSC=$(echo "$default_sc" | awk '{print $1}')
+        echo "   -> Default storage class: $vSC"
     else
-      # else if it is not set by the QA engineer, let's extract the first external network and use it
-      echo "# Extracting network: taking the first found external network"
-      cmd="openstack network list --external -c Name -f value | head -n1"
-      echo "# Running 'kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- sh -c '${cmd}'"
-      vPUBNET=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- sh -c "${cmd}")
-      echo "-> 'openstack network list --external -c Name -f value | head -n1': '${vPUBNET}'"
-      ewriteln "export TEMPEST_CUSTOM_PUBLIC_NET=${vPUBNET}"
+        vSC=""
+        echo "   -> No default storage class found."
     fi
 
-    echo "# Extracting volume types"
-    cmd_all="openstack volume type list -f value -c Name"
-    vVOLTYPES=( $(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- ${cmd_all}) )
-    echo "# Volume types available: ${vVOLTYPES[@]}"
-    cmd_default="openstack volume type list -f value -c Name --default"
-    vVOLTYPE=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- ${cmd_default})
-    echo "# Default volume type used: ${vVOLTYPE}"
-    ewriteln "export TEMPEST_CUSTOM_VOLUME_TYPE=${vVOLTYPE}"
-    # hardcoded values
-    ewriteln "# export TEMPEST_CUSTOM_FLAVOR=cvp.tiny"
-    ewriteln "# export TEMPEST_CUSTOM_IMAGE=cvp.cirros.61"
-    ewriteln "# export TEMPEST_CUSTOM_IMAGE_ALT=cvp.cirros.62"
-    #prepare tempest custom yaml
-    cp /opt/res-files/k8s/yamls/tempest_custom.yaml.clean $MY_PROJFOLDER/yamls/tempest_custom.yaml
-    ewriteln 'export TEMPEST_CUSTOM_PARAMETERS=$(cat $MY_PROJFOLDER/yamls/tempest_custom.yaml)'
-fi
+    rc_file="$ENV_DIR/${name}rc"
+
+    if [[ -f "$rc_file" ]]; then
+        echo "   -> Updating RC file: $rc_file"
+        echo "export CHILD_SC=${vSC}" >> "$rc_file"
+    else
+        echo "# RC file not found for $name — skipping."
+    fi
+
+done
 
 # Aliases
 ewriteln 'alias k=kubectl'
 
 # end
 echo " "
-echo "# Done!"
+echo "# ✅ Done!"
diff --git a/k8s/workspace/mccrc b/k8s/workspace/mccrc
deleted file mode 100644
index 45f408e..0000000
--- a/k8s/workspace/mccrc
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-export KUBECONFIG=$MY_PROJFOLDER/envs/mcc-kubeconfig.yaml
diff --git a/k8s/workspace/mcc-checker.env b/k8s/workspace/mgmt-checker.env
similarity index 91%
copy from k8s/workspace/mcc-checker.env
copy to k8s/workspace/mgmt-checker.env
index 0d16295..667fcfb 100644
--- a/k8s/workspace/mcc-checker.env
+++ b/k8s/workspace/mgmt-checker.env
@@ -5,12 +5,12 @@
 # please, use ~/.ssh/config
 # SSH hostname of salt/k8s master node
 MCP_SSH_KEY=/artifacts/envs/node.key
-MCP_SSH_USER=mcc-user
+MCP_SSH_USER=ubuntu
 MCP_SSH_HOST=ip_address
 MCP_ENV_HOST=ip_address
 ### K8s section
 # All vars start with KUBE
 KUBE_CONFIG_ROOT=/root
 KUBE_SCRIPTS_FOLDER=cfg-checker-scripts
-KUBE_NODE_USER=mcc-user
+KUBE_NODE_USER=ubuntu
 KUBE_NODE_KEYPATH=/artifacts/envs/node.key
diff --git a/k8s/workspace/mgmtrc b/k8s/workspace/mgmtrc
new file mode 100644
index 0000000..615236c
--- /dev/null
+++ b/k8s/workspace/mgmtrc
@@ -0,0 +1,2 @@
+#!/bin/bash
+export KUBECONFIG=$MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml
diff --git a/k8s/workspace/mos-checker.env b/k8s/workspace/mos-checker.env
deleted file mode 100644
index 0d16295..0000000
--- a/k8s/workspace/mos-checker.env
+++ /dev/null
@@ -1,16 +0,0 @@
-# Main log file of the tests
-MCP_LOGFILE = 'client-cfg-check.log'
-# SSH is used when environment is not local to get salt password
-# in order set options and user for the ssh, 
-# please, use ~/.ssh/config
-# SSH hostname of salt/k8s master node
-MCP_SSH_KEY=/artifacts/envs/node.key
-MCP_SSH_USER=mcc-user
-MCP_SSH_HOST=ip_address
-MCP_ENV_HOST=ip_address
-### K8s section
-# All vars start with KUBE
-KUBE_CONFIG_ROOT=/root
-KUBE_SCRIPTS_FOLDER=cfg-checker-scripts
-KUBE_NODE_USER=mcc-user
-KUBE_NODE_KEYPATH=/artifacts/envs/node.key
diff --git a/k8s/workspace/mosrc b/k8s/workspace/mosrc
deleted file mode 100644
index 80d8cf9..0000000
--- a/k8s/workspace/mosrc
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-export KUBECONFIG=$MY_PROJFOLDER/envs/mos-kubeconfig.yaml
diff --git a/k8s/workspace/run-networks-child.sh b/k8s/workspace/run-networks-child.sh
new file mode 100644
index 0000000..973cdcd
--- /dev/null
+++ b/k8s/workspace/run-networks-child.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+set -euo pipefail
+
+. "$(dirname "$0")/functions.sh"
+cd /artifacts
+. env.sh
+. envs/mgmtrc
+. /opt/cfg-checker/.checkervenv/bin/activate
+
+if [[ $# -lt 1 ]]; then
+  echo -e "\nError: No cluster name provided."
+  echo "Usage: $0 <cluster-name>"
+  echo ""
+  exit 1
+fi
+
+CLUSTER_NAME="$1"
+
+echo ""
+echo "Checking if ClusterDeployment '$CLUSTER_NAME' exists..."
+
+if ! kubectl get cld -A -o name | grep -q "/$CLUSTER_NAME$"; then
+  echo -e "Error: ClusterDeployment '$CLUSTER_NAME' not found in any namespace"
+  exit 1
+fi
+
+echo -e "ClusterDeployment '$CLUSTER_NAME' found"
+
+KUBECONFIG_PATH="$MY_PROJFOLDER/envs/kubeconfigs/${CLUSTER_NAME}-kubeconfig.yaml"
+CHECKER_ENV_PATH="$MY_PROJFOLDER/envs/checkers/${CLUSTER_NAME}-checker.env"
+
+if [[ ! -f "$KUBECONFIG_PATH" ]]; then
+  echo -e "Error: kubeconfig file not found at $KUBECONFIG_PATH"
+  exit 1
+fi
+
+if [[ ! -f "$CHECKER_ENV_PATH" ]]; then
+  echo -e "Error: checker.env file not found at $CHECKER_ENV_PATH"
+  exit 1
+fi
+
+echo -e "Cluster configuration files found\n"
+
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-${CLUSTER_NAME}-networks-$(get_timestamp).html"
+
+mos-checker --env-name $MY_CLIENTSHORTNAME-child --env-config $CHECKER_ENV_PATH --kube-config $KUBECONFIG_PATH network check
+mos-checker --env-name $MY_CLIENTSHORTNAME-child --env-config $CHECKER_ENV_PATH --kube-config $KUBECONFIG_PATH network report --html "${fname}"
+
+update_latest_report_to "${fname}"
+deactivate
diff --git a/k8s/workspace/run-networks-mcc.sh b/k8s/workspace/run-networks-mcc.sh
deleted file mode 100644
index d3aadc1..0000000
--- a/k8s/workspace/run-networks-mcc.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mcc-networks-$(get_timestamp).html"
-mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network check
-mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network report --html "${fname}"
-update_latest_report_to "${fname}"
-
-deactivate
diff --git a/k8s/workspace/run-networks-mgmt.sh b/k8s/workspace/run-networks-mgmt.sh
new file mode 100644
index 0000000..e7965f6
--- /dev/null
+++ b/k8s/workspace/run-networks-mgmt.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
+cd /artifacts
+. env.sh
+. /opt/cfg-checker/.checkervenv/bin/activate
+
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mgmt-networks-$(get_timestamp).html"
+
+CHECKER_ENV="$MY_PROJFOLDER/envs/checkers/mgmt-checker.env"
+KUBECONF="$MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml"
+
+mos-checker --env-name $MY_CLIENTSHORTNAME-mgmt --env-config $CHECKER_ENV --kube-config $KUBECONF network check
+mos-checker --env-name $MY_CLIENTSHORTNAME-mgmt --env-config $CHECKER_ENV --kube-config $KUBECONF network report --html "${fname}"
+update_latest_report_to "${fname}"
+
+deactivate
diff --git a/k8s/workspace/run-networks-mos.sh b/k8s/workspace/run-networks-mos.sh
deleted file mode 100644
index d538ae0..0000000
--- a/k8s/workspace/run-networks-mos.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mos-networks-$(get_timestamp).html"
-mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network check
-mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network report --html "${fname}"
-update_latest_report_to "${fname}"
-deactivate
diff --git a/k8s/workspace/run-networks-ping-child.sh b/k8s/workspace/run-networks-ping-child.sh
new file mode 100644
index 0000000..1b5b106
--- /dev/null
+++ b/k8s/workspace/run-networks-ping-child.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+set -euo pipefail
+. "$(dirname "$0")/functions.sh"
+cd /artifacts
+. env.sh
+. envs/mgmtrc
+. /opt/cfg-checker/.checkervenv/bin/activate
+
+if [[ $# -lt 1 ]]; then
+  echo -e "\nError: No cluster name provided."
+  echo "Usage: $0 <cluster-name>" && echo ""
+  exit 1
+fi
+
+CLUSTER_NAME="$1"
+if ! check_cluster_deployment_exists "$CLUSTER_NAME"; then
+    exit 1
+fi
+
+
+KUBECONFIG_PATH="$MY_PROJFOLDER/envs/kubeconfigs/${CLUSTER_NAME}-kubeconfig.yaml"
+CHECKER_ENV_PATH="$MY_PROJFOLDER/envs/checkers/${CLUSTER_NAME}-checker.env"
+check_file_exists "$KUBECONFIG_PATH" "kubeconfig file" || exit 1
+check_file_exists "$CHECKER_ENV_PATH" "checker.env file" || exit 1
+echo -e "Cluster configuration files found\n"
+
+
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-${CLUSTER_NAME}-networks-ping-$(get_timestamp)"
+nets=$(mos-checker --env-name $MY_CLIENTSHORTNAME-child --env-config $CHECKER_ENV_PATH --kube-config $KUBECONFIG_PATH network list 2>&1 | grep -A20 "# Runtime networks list" | grep "\:" | grep -v 'o-hm0' | awk '{print $1}')
+nets=$(echo "$nets" | tr ' ' '\n' | grep -v '/32' | grep -v '10.99.')
+
+echo "The following CIRDs will be pinged:"
+printf "%s\n\n" "$nets"
+
+cidr_options=""
+for net in $nets; do
+    cidr_options+="--cidr $net "  # Append each network to the list
+done
+
+summary=$(mos-checker --env-name $MY_CLIENTSHORTNAME-child --env-config $CHECKER_ENV_PATH --kube-config $KUBECONFIG_PATH network ping --detailed $cidr_options 2>&1 | awk '/Summary/ {flag=1} flag')
+
+
+printf "%s\n" "$summary"
+printf "%s\n" "$summary" > $fname.txt
+
+txt2html_net_ping_report $fname.txt $CLUSTER_NAME $fname.html
+
+echo ""
+echo "The raw txt output is saved to $fname.txt"
+echo "The HTML report is saved to $fname.html"
+deactivate
diff --git a/k8s/workspace/run-networks-ping-mcc.sh b/k8s/workspace/run-networks-ping-mcc.sh
deleted file mode 100644
index 769c437..0000000
--- a/k8s/workspace/run-networks-ping-mcc.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mcc-networks-ping-$(get_timestamp).txt"
-nets=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network list 2>&1 | grep -A20 "# Runtime networks list" | grep "\:" | awk '{print $1}')
-nets=$(echo "$nets" | tr ' ' '\n' | grep -v '/32' | grep -v '10.99.')
-
-echo "The following CIRDs will be pinged:"
-printf "%s\n\n" "$nets"
-
-cidr_options=""
-for net in $nets; do
-    cidr_options+="--cidr $net "  # Append each network to the list
-done
-
-summary=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env --kube-config /artifacts/envs/mcc-kubeconfig.yaml network ping --detailed $cidr_options 2>&1 | awk '/Summary/ {flag=1} flag')
-
-printf "%s\n" "$summary"
-printf "%s\n" "$summary" > $fname
-echo ""
-echo "The report is saved to $fname"
-
-deactivate
diff --git a/k8s/workspace/run-networks-ping-mgmt.sh b/k8s/workspace/run-networks-ping-mgmt.sh
new file mode 100644
index 0000000..d75f6c5
--- /dev/null
+++ b/k8s/workspace/run-networks-ping-mgmt.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+. "$(dirname "$0")/functions.sh"
+cd /artifacts
+. env.sh
+. /opt/cfg-checker/.checkervenv/bin/activate
+
+fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mgmt-networks-ping-$(get_timestamp)"
+
+CHECKER_ENV="$MY_PROJFOLDER/envs/checkers/mgmt-checker.env"
+KUBECONF="$MY_PROJFOLDER/envs/kubeconfigs/mgmt-kubeconfig.yaml"
+
+nets=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mgmt --env-config $CHECKER_ENV --kube-config $KUBECONF network list 2>&1 | grep -A20 "# Runtime networks list" | grep "\:" | awk '{print $1}')
+nets=$(echo "$nets" | tr ' ' '\n' | grep -v '/32' | grep -v '10.99.')
+
+echo "The following CIRDs will be pinged:"
+printf "%s\n\n" "$nets"
+
+cidr_options=""
+for net in $nets; do
+    cidr_options+="--cidr $net "  # Append each network to the list
+done
+
+summary=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mgmt --env-config $CHECKER_ENV --kube-config $KUBECONF network ping --detailed $cidr_options 2>&1 | awk '/Summary/ {flag=1} flag')
+
+printf "%s\n" "$summary"
+printf "%s\n" "$summary" > $fname.txt
+
+CLUSTER_NAME=mgmt
+txt2html_net_ping_report $fname.txt $CLUSTER_NAME $fname.html
+
+echo ""
+echo "The raw txt output is saved to $fname.txt"
+echo "The HTML report is saved to $fname.html"
+
+deactivate
diff --git a/k8s/workspace/run-networks-ping-mos.sh b/k8s/workspace/run-networks-ping-mos.sh
deleted file mode 100644
index 093d699..0000000
--- a/k8s/workspace/run-networks-ping-mos.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mos-networks-ping-$(get_timestamp).txt"
-nets=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network list 2>&1 | grep -A20 "# Runtime networks list" | grep "\:" | grep -v 'o-hm0' | awk '{print $1}')
-nets=$(echo "$nets" | tr ' ' '\n' | grep -v '/32' | grep -v '10.99.')
-
-echo "The following CIRDs will be pinged:"
-printf "%s\n\n" "$nets"
-
-cidr_options=""
-for net in $nets; do
-    cidr_options+="--cidr $net "  # Append each network to the list
-done
-
-summary=$(mos-checker --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env --kube-config /artifacts/envs/mos-kubeconfig.yaml network ping --detailed $cidr_options 2>&1 | awk '/Summary/ {flag=1} flag')
-
-printf "%s\n" "$summary"
-printf "%s\n" "$summary" > $fname
-
-echo ""
-echo "The report is saved to $fname"
-deactivate
diff --git a/k8s/workspace/run-openstack-end-to-end.sh b/k8s/workspace/run-openstack-end-to-end.sh
deleted file mode 100644
index 169f879..0000000
--- a/k8s/workspace/run-openstack-end-to-end.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-tenv=mos
-. $MY_PROJFOLDER/envs/${tenv}rc
-##
-echo "### Checking openstack resources"
-status=$(kubectl -n qa-space get pod | grep toolset | tr -s " " | cut -d' ' -f3)
-if [ ${status} != "Running" ]; then
-	echo "# 'toolset' container is not Running"
-	exit 1
-fi
-admin_uuid=$(kubectl exec toolset --stdin -n qa-space -- bash -c "openstack user show cvp.admin -c id -f value")
-if [ ! -z admin_uuid ]; then
-        echo "# Running check"
-	echo " "
-	kubectl exec toolset --stdin -n qa-space -- bash -c "cd /artifacts/cmp-check; bash /opt/cmp-check/cmp_check.sh -a"
-else
-        echo "# Consider creating resources using 'create-openstack-resources.sh'"
-	exit 1
-fi
diff --git a/k8s/workspace/run-openstack-func-full.sh b/k8s/workspace/run-openstack-func-full.sh
deleted file mode 100644
index a567ab2..0000000
--- a/k8s/workspace/run-openstack-func-full.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-tenv=mos
-. /opt/si-tests/.sivenv/bin/activate
-cd $MY_PROJFOLDER/tmp
-. $MY_PROJFOLDER/env.sh
-. $MY_PROJFOLDER/envs/${tenv}rc
-
-if grep -q "public_subnet_uuid" "$MY_PROJFOLDER/yamls/tempest_custom.yaml"; then
-    echo "The ${MY_PROJFOLDER}/yamls/tempest_custom.yaml file is not updated, it has the placeholders. Please run '. $MY_PROJFOLDER/env.sh && . $MY_PROJFOLDER/envs/mosrc && bash $MY_PROJFOLDER/scripts/update-openstack-resources.sh' before running tempest."
-    exit 1
-fi
-
-# Just in case
-unset TARGET_CLUSTER
-unset TARGET_NAMESPACE
-# Cleaning up
-echo "# Cleaning up '/artifacts/tmp/artifacts/'"
-[ -d "/artifacts/tmp/artifacts/" ] && rm -rf "/artifacts/tmp/artifacts/"
-[ -f "/artifacts/tmp/nosetests.xml" ]  && rm "/artifacts/tmp/nosetests.xml"
-mkdir "/artifacts/tmp/artifacts/"
-
-# 
-echo "# Creating schema"
-[ -f "/artifacts/tmp/artifacts/test_scheme.yaml" ] && rm -v $MY_PROJFOLDER/tmp/artifacts/test_scheme.yaml
-cat <<'EOF' >artifacts/test_scheme.yaml
----
-smoke: false
-concurrency: 4
-blacklist-file: /etc/tempest/test-blacklist
-enabled: true
-fail_on_test: true
-type: tempest
-# regex: test
-EOF
-cat artifacts/test_scheme.yaml
-echo " "
-env | grep TEMPEST_
-echo " "
-#
-echo "# Checking auto-allocation"
-cmd="openstack network auto allocated topology create --check-resources"
-kubectl -n qa-space exec toolset --stdin -- $cmd
-if [ $? -ne 0 ]; then
-	cmd="openstack network set --default --external ${TEMPEST_CUSTOM_PUBLIC_NET}"
-	echo "# Trying to set network: '${cmd}'"
-        kubectl -n qa-space exec toolset --stdin -- $cmd
-	echo "# Checking again"
-	cmd="openstack network auto allocated topology create --check-resources"
-        kubectl -n qa-space exec toolset --stdin -- $cmd
-	[ $? -ne 0 ] && printf "\n\n# WARNING: Check functional tests pod for errors on test init\n\n"
-fi
-
-# run tests
-pytest -vv /opt/si-tests/si_tests/tests/lcm/test_run_tempest.py
-deactivate
-
-# report
-if [ -d $MY_PROJFOLDER/reports/${tenv}-func ]; then
-	echo "# Generating repors"
-	yes | rm $MY_PROJFOLDER/reports/${tenv}-func/*
-else
-	mkdir $MY_PROJFOLDER/reports/${tenv}-func
-fi
-cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-func/
-cd $MY_PROJFOLDER/reports/
-fname="$MY_CLIENTSHORTNAME-${tenv}-openstack-func-full-$(get_timestamp).html"
-tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-func/
-update_latest_report_to "${fname}"
-cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-openstack-func-smoke.sh b/k8s/workspace/run-openstack-func-smoke.sh
deleted file mode 100644
index 1119b28..0000000
--- a/k8s/workspace/run-openstack-func-smoke.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-tenv=mos
-. /opt/si-tests/.sivenv/bin/activate
-cd $MY_PROJFOLDER/tmp
-. $MY_PROJFOLDER/env.sh
-. $MY_PROJFOLDER/envs/${tenv}rc
-
-if grep -q "public_subnet_uuid" "$MY_PROJFOLDER/yamls/tempest_custom.yaml"; then
-    echo "The ${MY_PROJFOLDER}/yamls/tempest_custom.yaml file is not updated, it has the placeholders. Please run '. $MY_PROJFOLDER/env.sh && . $MY_PROJFOLDER/envs/mosrc && bash $MY_PROJFOLDER/scripts/update-openstack-resources.sh' before running tempest."
-    exit 1
-fi
-
-# Just in case
-unset TARGET_CLUSTER
-unset TARGET_NAMESPACE
-# Cleaning up
-echo "# Cleaning up '/artifacts/tmp/artifacts/'"
-[ -d "/artifacts/tmp/artifacts/" ] && rm -rf "/artifacts/tmp/artifacts/"
-[ -f "/artifacts/tmp/nosetests.xml" ]  && rm "/artifacts/tmp/nosetests.xml"
-mkdir "/artifacts/tmp/artifacts/"
-
-# 
-echo "# Creating schema"
-[ -f "/artifacts/tmp/artifacts/test_scheme.yaml" ] && rm -v $MY_PROJFOLDER/tmp/artifacts/test_scheme.yaml
-cat <<'EOF' >artifacts/test_scheme.yaml
----
-smoke: true
-concurrency: 4
-blacklist-file: /etc/tempest/test-blacklist
-enabled: true
-fail_on_test: true
-type: tempest
-# regex: test
-EOF
-cat artifacts/test_scheme.yaml
-echo " "
-env | grep TEMPEST_
-echo " "
-#
-echo "# Checking auto-allocation"
-cmd="openstack network auto allocated topology create --check-resources"
-kubectl -n qa-space exec toolset --stdin -- $cmd
-if [ $? -ne 0 ]; then
-	cmd="openstack network set --default --external ${TEMPEST_CUSTOM_PUBLIC_NET}"
-	echo "# Trying to set network: '${cmd}'"
-        kubectl -n qa-space exec toolset --stdin -- $cmd
-	echo "# Checking again"
-	cmd="openstack network auto allocated topology create --check-resources"
-        kubectl -n qa-space exec toolset --stdin -- $cmd
-	[ $? -ne 0 ] && printf "\n\n# WARNING: Check functional tests pod for errors on test init\n\n"
-fi
-
-# run tests
-pytest -vv /opt/si-tests/si_tests/tests/lcm/test_run_tempest.py
-deactivate
-
-# report
-if [ -d $MY_PROJFOLDER/reports/${tenv}-func ]; then
-	echo "# Generating repors"
-	yes | rm $MY_PROJFOLDER/reports/${tenv}-func/*
-else
-	mkdir $MY_PROJFOLDER/reports/${tenv}-func
-fi
-cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-func/
-cd $MY_PROJFOLDER/reports/
-fname="$MY_CLIENTSHORTNAME-${tenv}-openstack-func-smoke-$(get_timestamp).html"
-tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-func/
-update_latest_report_to "${fname}"
-cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-openstack-perf.sh b/k8s/workspace/run-openstack-perf.sh
deleted file mode 100644
index 3f0cdba..0000000
--- a/k8s/workspace/run-openstack-perf.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-function kexec() {
-	kubectl exec -n qa-space --tty --stdin rally -- bash -c "${1}"
-}
-
-# consts
-concurrency=10
-run_times=200
-
-tenv=mos
-. /opt/si-tests/.sivenv/bin/activate
-cd $MY_PROJFOLDER/tmp
-. $MY_PROJFOLDER/env.sh
-. $MY_PROJFOLDER/envs/${tenv}rc
-# Just in case
-unset TARGET_CLUSTER
-unset TARGET_NAMESPACE
-dryrun=0
-#
-if [ ! -z ${1+x} ]; then
-	echo "# Using Dry-run mode"
-	dryrun=1
-fi
-
-##
-echo "### Checking rally environments"
-status=$(kubectl -n qa-space get pod | grep rally | tr -s " " | cut -d' ' -f3)
-if [ ${status} != "Running" ]; then
-	echo "# 'rally' container is not Running"
-	echo "# Consider creating resources and/or creating environments"
-	exit 1
-fi
-
-###
-uuid=$(kubectl exec -n qa-space --stdin rally -- rally env list | grep openstack | cut -d' ' -f2)
-if [ -z ${uuid} ]; then
-        echo "# Openstack env not found. Please, run 'create-rally-deployments.sh'"
-        kubectl exec -n qa-space --stdin rally -- rally env list
-else
-        echo "# Running Openstack performance tests"
-	if [ ${dryrun} == 1 ]; then
-		scenario=/rally/rally-files/openstack-mos-scn-i1.json
-	else
-		scenario=/rally/rally-files/openstack-mos-scn.json.clean
-	fi
-	task_scn=/artifacts/openstack-scenario.json
-  # prepare scenario
-  kexec "cp -v ${scenario} ${task_scn}"
-  default_az=$(kubectl exec toolset --stdin -n qa-space -- bash -c "openstack compute service list --service nova-compute  -c Zone -f value | uniq | head -n 1")
-	declare $(kubectl exec toolset --stdin -n qa-space -- bash -c "cat /artifacts/cmp-check/cvp.manifest")
-	echo "# Updating network UUID to ${fixed_net_left_id}"
-	kexec "sed -i \"s/fixed-net-id/${fixed_net_left_id}/g\" ${task_scn}"
-	echo "# Updating AZ name to ${default_az}"
-	kexec "sed -i \"s/default-az-name/${default_az}/g\" ${task_scn}"
-	echo "# Updating concurrency to ${concurrency}"
-	kexec "sed -i \"s/concurrent-threads/${concurrency}/g\" ${task_scn}"
-	echo "# Updating running times to ${run_times}"
-	kexec "sed -i \"s/run-times-number/${run_times}/g\" ${task_scn}"
-	# run
-	kexec "rally env use ${uuid}; rally task start ${task_scn}"
-	# generate report
-	echo "# Generating report"
-	fname="$MY_CLIENTSHORTNAME-mos-openstack-perf-$(get_timestamp).html"
-	kubectl exec -n qa-space --stdin rally -- rally task report $(kubectl exec -n qa-space --stdin rally -- rally task list | grep openstack | cut -d' ' -f2 | tail -1) --html-static --out ${fname}
-	kubectl cp qa-space/rally:/rally/${fname} $MY_PROJFOLDER/reports/${fname}
-	update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
-fi
diff --git a/k8s/workspace/run-openstack-spt.sh b/k8s/workspace/run-openstack-spt.sh
deleted file mode 100644
index 13a0e2b..0000000
--- a/k8s/workspace/run-openstack-spt.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-tenv=mos
-. $MY_PROJFOLDER/envs/${tenv}rc
-##
-echo "### Checking openstack resources"
-status=$(kubectl -n qa-space get pod | grep toolset | tr -s " " | cut -d' ' -f3)
-if [ ${status} != "Running" ]; then
-	echo "# 'toolset' container is not Running"
-	exit 1
-fi
-
-echo "# Copying mos-kubeconfig.yaml and node.key from /artifacts/envs/"
-kubectl cp /artifacts/envs/mos-kubeconfig.yaml qa-space/toolset:/opt/mos-spt/mos-kubeconfig.yaml
-kubectl cp /artifacts/envs/node.key qa-space/toolset:/opt/mos-spt/node.key
-
-admin_uuid=$(kubectl exec toolset --stdin -n qa-space -- bash -c "openstack user show cvp.admin -c id -f value")
-if [ ! -z ${TEMPEST_CUSTOM_PUBLIC_NET+x} ]; then
-        echo "# Copying global_config.yaml"
-        kubectl cp $MY_PROJFOLDER/yamls/global_config.yaml qa-space/toolset:/opt/mos-spt/global_config.yaml
-    echo " "
-    echo "# Running spt checks"
-	echo " "
-	kubectl exec toolset --stdin --tty -n qa-space -- bash -c "cd /opt/mos-spt; . .venv/bin/activate; pytest -rs -o log_cli=true --tb=short tests/"
-else
-        echo "# Public network not set: TEMPEST_CUSTOM_PUBLIC_NET=${TEMPEST_CUSTOM_PUBLIC_NET}"
-	exit 1
-fi
-
-echo "# Copying SPT HTML test report"
-mkdir -p /artifacts/reports/mos-spt
-kubectl exec toolset --stdin --tty -n qa-space -- bash -c "mkdir -p /opt/mos-spt/html_reports && cp /opt/mos-spt/*.html /opt/mos-spt/html_reports"
-kubectl cp qa-space/toolset:/opt/mos-spt/html_reports/ /artifacts/reports/mos-spt/
\ No newline at end of file
diff --git a/k8s/workspace/run-packages-mcc.sh b/k8s/workspace/run-packages-mcc.sh
deleted file mode 100644
index c3b16fc..0000000
--- a/k8s/workspace/run-packages-mcc.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mcc-packages-$(get_timestamp).html"
-mos-checker --ssh-direct --kube-config /artifacts/envs/mcc-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mcc --env-config /artifacts/envs/mcc-checker.env packages report --html "${fname}"
-update_latest_report_to "${fname}"
-deactivate
diff --git a/k8s/workspace/run-packages-mos.sh b/k8s/workspace/run-packages-mos.sh
deleted file mode 100644
index a2fa3a2..0000000
--- a/k8s/workspace/run-packages-mos.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-cd /artifacts
-. env.sh
-. /opt/cfg-checker/.checkervenv/bin/activate
-fname="/artifacts/reports/$MY_CLIENTSHORTNAME-mos-packages-$(get_timestamp).html"
-mos-checker --ssh-direct --kube-config /artifacts/envs/mos-kubeconfig.yaml --env-name $MY_CLIENTSHORTNAME-mos --env-config /artifacts/envs/mos-checker.env packages report --html "${fname}"
-update_latest_report_to "${fname}"
-deactivate
diff --git a/k8s/workspace/run-stacklight-mcc.sh b/k8s/workspace/run-stacklight-mcc.sh
deleted file mode 100644
index a235370..0000000
--- a/k8s/workspace/run-stacklight-mcc.sh
+++ /dev/null
@@ -1,82 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-tenv=mcc
-. /opt/si-tests/.sivenv/bin/activate
-cd $MY_PROJFOLDER/tmp
-. $MY_PROJFOLDER/env.sh
-. $MY_PROJFOLDER/envs/${tenv}rc
-
-if [ -z "$WRITER_PASSWORD" ]; then
-    echo -e "\nWRITER_PASSWORD is not exported or is empty.\nPlease export WRITER_PASSWORD or edit the /artifacts/env.sh file to set the writer keycloak user password in WRITER_PASSWORD\nExiting...\n"
-    exit 1
-fi
-
-# Configuring the env variables
-echo "# Configuring env variables"
-unset TARGET_CLUSTER
-unset TARGET_NAMESPACE
-export TARGET_CLUSTER=kaas-mgmt
-export TARGET_NAMESPACE=default
-
-si_config_file="$MY_PROJFOLDER/envs/si-config.yaml"
-
-if [ ! -f "$si_config_file" ]; then
-    echo -e "\nFile '$si_config_file' does not exist, creating it..."
-    touch "$si_config_file"
-else
-    echo "File '$si_config_file' already exists."
-fi
-
-cat <<EOF > "$si_config_file"
-keycloak_users:
-  writer: $WRITER_PASSWORD
-EOF
-
-export SI_CONFIG=$MY_PROJFOLDER/envs/si-config.yaml
-export SI_CONFIG_PATH=$SI_CONFIG
-
-cat $SI_CONFIG
-
-if [ -z "$KEYCLOAK_URL" ]; then
-    echo "KEYCLOAK_URL is not exported in the environment variables, getting it from:"
-    echo "kubectl get cluster kaas-mgmt -o jsonpath='{.status.providerStatus.helm.releases.iam.keycloak.url}'"
-    KEYCLOAK_URL=$(kubectl get cluster kaas-mgmt -o jsonpath='{.status.providerStatus.helm.releases.iam.keycloak.url}')
-else
-  echo "KEYCLOAK_URL is manually set to $KEYCLOAK_URL"
-fi
-export KEYCLOAK_URL=$KEYCLOAK_URL
-
-# Cleaning up
-echo "# Cleaning up '/artifacts/tmp/artifacts/'"
-[ -d "/artifacts/tmp/artifacts/" ] && rm -rf "/artifacts/tmp/artifacts/"
-[ -f "/artifacts/tmp/nosetests.xml" ]  && rm "/artifacts/tmp/nosetests.xml"
-mkdir "/artifacts/tmp/artifacts/"
-
-# Show the exported envs
-echo "# Exported envs"
-env | grep TARGET
-env | grep BIN
-env | grep KUBE
-env | grep K8S | grep -v CONFORMANCE
-env | grep SI_CONFIG
-env | grep KEYC
-
-# Run tests
-echo "# Running the tests"
-pytest -vv /opt/si-tests/si_tests/tests/deployment/test_sl_test.py
-deactivate
-
-# Report
-if [ -d $MY_PROJFOLDER/reports/${tenv}-stacklight ]; then
-	echo "# Generating repors"
-	yes | rm $MY_PROJFOLDER/reports/${tenv}-stacklight/*
-else
-	mkdir $MY_PROJFOLDER/reports/${tenv}-stacklight
-fi
-cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-stacklight/
-cd $MY_PROJFOLDER/reports/
-fname="$MY_CLIENTSHORTNAME-${tenv}-stacklight-$(get_timestamp).html"
-tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-stacklight/
-update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
-cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-stacklight-mos.sh b/k8s/workspace/run-stacklight-mos.sh
deleted file mode 100644
index 8a1cc71..0000000
--- a/k8s/workspace/run-stacklight-mos.sh
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/bin/bash
-
-. "$(dirname "$0")/functions.sh"
-tenv=mos
-. /opt/si-tests/.sivenv/bin/activate
-cd $MY_PROJFOLDER/tmp
-. $MY_PROJFOLDER/env.sh
-. $MY_PROJFOLDER/envs/mccrc
-
-if [ -z "$WRITER_PASSWORD" ]; then
-    echo -e "\nWRITER_PASSWORD is not exported or is empty.\nPlease export WRITER_PASSWORD or edit the /artifacts/env.sh file to set the writer keycloak user password in WRITER_PASSWORD\nExiting...\n"
-    exit 1
-fi
-
-# Configuring the env variables
-echo "# Configuring env variables"
-unset TARGET_CLUSTER
-unset TARGET_NAMESPACE
-unset ENV_NAME
-export TARGET_NAMESPACE=${MOS_NS}
-export TARGET_CLUSTER=${MOS_CLUSTER}
-export COMPONENT_TEST_RUN_ON_TARGET_CLUSTER=True
-export ENV_NAME=${MOS_CLUSTER}
-
-public_domain_name=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack get osdpl -o jsonpath='{.items[0].spec.public_domain_name}')
-export OS_KEYSTONE_URL="https://keystone.${public_domain_name}/v3"
-export SL_TESTS_OS_KEYSTONE_URL=$OS_KEYSTONE_URL
-export OS_DOMAIN_NAME=$public_domain_name
-export SL_TESTS_OS_DOMAIN_NAME=$public_domain_name
-
-si_config_file="$MY_PROJFOLDER/envs/si-config.yaml"
-if [ ! -f "$si_config_file" ]; then
-    echo -e "\nFile '$si_config_file' does not exist, creating it..."
-    touch "$si_config_file"
-else
-    echo "File '$si_config_file' already exists."
-fi
-cat <<EOF > "$si_config_file"
-keycloak_users:
-  writer: $WRITER_PASSWORD
-EOF
-export SI_CONFIG=$MY_PROJFOLDER/envs/si-config.yaml
-export SI_CONFIG_PATH=$SI_CONFIG
-cat $SI_CONFIG
-
-if [ -z "$KEYCLOAK_URL" ]; then
-    echo "KEYCLOAK_URL is not exported in the environment variables, getting it from:"
-    echo "kubectl get cluster kaas-mgmt -o jsonpath='{.status.providerStatus.helm.releases.iam.keycloak.url}'"
-    KEYCLOAK_URL=$(kubectl get cluster kaas-mgmt -o jsonpath='{.status.providerStatus.helm.releases.iam.keycloak.url}')
-else
-  echo "KEYCLOAK_URL is manually set to $KEYCLOAK_URL"
-fi
-export KEYCLOAK_URL=$KEYCLOAK_URL
-
-# Cleaning up
-echo "# Cleaning up '/artifacts/tmp/artifacts/'"
-[ -d "/artifacts/tmp/artifacts/" ] && rm -rf "/artifacts/tmp/artifacts/"
-[ -f "/artifacts/tmp/nosetests.xml" ]  && rm "/artifacts/tmp/nosetests.xml"
-mkdir "/artifacts/tmp/artifacts/"
-
-# Show the exported envs
-echo "# Exported envs"
-env | grep TARGET
-env | grep BIN
-env | grep KUBE
-env | grep K8S | grep -v CONFORMANCE
-env | grep SI_CONFIG
-env | grep KEYCLOAK
-env | grep OS_
-env | grep SL_TESTS
-env | grep COMPONENT_TEST_RUN_ON_TARGET_CLUSTER
-
-# Run tests
-echo "# Running the tests"
-pytest -vv /opt/si-tests/si_tests/tests/deployment/test_sl_test.py
-deactivate
-
-# Report
-if [ -d $MY_PROJFOLDER/reports/${tenv}-stacklight ]; then
-	echo "# Generating repors"
-	yes | rm $MY_PROJFOLDER/reports/${tenv}-stacklight/*
-else
-	mkdir $MY_PROJFOLDER/reports/${tenv}-stacklight
-fi
-cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-stacklight/
-cd $MY_PROJFOLDER/reports/
-fname="$MY_CLIENTSHORTNAME-${tenv}-stacklight-$(get_timestamp).html"
-tparser -f r_xml -d -r "${fname}" $MY_PROJFOLDER/reports/${tenv}-stacklight/
-update_latest_report_to "$MY_PROJFOLDER/reports/${fname}"
-cd $MY_PROJFOLDER
diff --git a/k8s/workspace/target-child b/k8s/workspace/target-child
new file mode 100644
index 0000000..b45b039
--- /dev/null
+++ b/k8s/workspace/target-child
@@ -0,0 +1,4 @@
+#!/bin/bash
+export TARGET_NAMESPACE=${CHILD_CLUSTER_NS}
+export TARGET_CLUSTER=${CHILD_CLUSTER_NAME}
+export TARGET_CLD=${CHILD_CLUSTER_NAME}
diff --git a/k8s/workspace/target-mcc b/k8s/workspace/target-mcc
deleted file mode 100644
index 4c05923..0000000
--- a/k8s/workspace/target-mcc
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/bash
-export TARGET_CLUSTER=kaas-mgmt
-export TARGET_NAMESPACE=default
-
diff --git a/k8s/workspace/target-mos b/k8s/workspace/target-mos
deleted file mode 100644
index fe5278e..0000000
--- a/k8s/workspace/target-mos
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-export TARGET_NAMESPACE=${MOS_NS}
-export TARGET_CLUSTER=${MOS_CLUSTER}