Offline procedure preparations, p2

    Related-PROD: PROD-36856

Change-Id: I9228941dfbc84451abf803ab3a4b3e9e5579b70f
diff --git a/k8s/workspace/create-rally-deployments.sh b/k8s/workspace/create-rally-deployments.sh
new file mode 100644
index 0000000..942c81f
--- /dev/null
+++ b/k8s/workspace/create-rally-deployments.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+##
+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"
+	exit 1
+fi
+
+###
+if [ ! -z $(kubectl exec -n qa-space --stdin rally -- rally env list | grep openstack | cut -d' ' -f2) ]; then
+        echo "# Openstack env already created"
+	kubectl exec -n qa-space --stdin rally -- rally env list
+else
+        echo "# Creating openstack env"
+	kubectl exec -n qa-space --stdin rally -- bash -c "bash /rally/rally-files/init-rally-openstack.sh"
+fi
+echo " "
+###
+if [ ! -z $(kubectl exec -n qa-space --stdin rally -- rally env list | grep kubernetes | cut -d' ' -f2) ]; then
+        echo "# Kubernetes env already created"
+        kubectl exec -n qa-space --stdin rally -- rally env list
+else
+        echo "# Creating kubernetes env"
+	kubectl exec -n qa-space --stdin rally -- sudo chown rally /artifacts
+        kubectl cp $MY_PROJFOLDER/envs/mos-kubeconfig.yaml qa-space/rally:/artifacts/mos-kubeconfig.yaml
+        kubectl exec -n qa-space --stdin rally -- bash -c "bash /rally/rally-files/init-rally-kube.sh"
+fi
diff --git a/k8s/workspace/init-resources.sh b/k8s/workspace/init-resources.sh
new file mode 100644
index 0000000..95e1880
--- /dev/null
+++ b/k8s/workspace/init-resources.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+# Check vars
+if [ -z ${MY_CLIENTNAME+x} ]; then
+	echo "# Source ${MY_PROJFOLDER}/env.sh prior to running this script"
+	exit 1
+fi
+# Prepare qa namespace and resources
+echo "# Sourcing mosrc"
+. ${MY_PROJFOLDER}/envs/mosrc
+# check that kubeconfig present
+if [ -z ${KUBECONFIG} ]; then
+	exit 1
+fi
+
+# ns and storages
+echo "# Creating resources"
+kubectl apply -f ${MY_PROJFOLDER}/yamls/qa-res.yaml
+# keystone
+if [ -z $(kubectl -n qa-space get secret keystone-keystone-admin --no-headers | cut -d' ' -f1) ]; then
+    echo "# Copy keystone vars"
+    kubectl get secret keystone-keystone-admin -n openstack -o yaml | sed 's/namespace: openstack/namespace: qa-space/g' | kubectl apply -n qa-space -f -
+fi
+# start toolset
+echo "# Starting toolset pod"
+kubectl apply -f ${MY_PROJFOLDER}/yamls/qa-toolset.yaml
+echo "# Starting rally pod"
+kubectl apply -f ${MY_PROJFOLDER}/yamls/qa-rally.yaml
+
diff --git a/k8s/workspace/init-workspace.sh b/k8s/workspace/init-workspace.sh
index 92de28c..6b889c2 100644
--- a/k8s/workspace/init-workspace.sh
+++ b/k8s/workspace/init-workspace.sh
@@ -2,6 +2,11 @@
 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}'
+}
 
 export MY_PROJFOLDER=/artifacts
 echo "# Using folder '$MY_PROJFOLDER'"
@@ -36,39 +41,37 @@
 ewriteln "export MY_PROJFOLDER=/artifacts"
 
 # NS & CLUSTER
-cls=$(kubectl get cluster -A --no-headers | grep -v default)
-declare nn=()
-tifs=$IFS
-IFS=" "
-echo $cls | cut -d" " -f1-2 | while read -r -a nn; 
-do 
-    ewriteln "export MOS_NS=$(echo ${nn[0]})"
-    ewriteln "export MOS_CLUSTER=$(echo ${nn[1]})"
-done
-IFS=$tifs
-ewriteln "export MOS_SC=kubernetes-nvme"
-ewriteln "export OSH_DEPLOYMENT_NAME='avt-openstack'"
+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[0]}"
+vCLUSTER="${nn[1]}"
+ewriteln "export MOS_NS=${vNS}"
+ewriteln "export MOS_CLUSTER=${vCLUSTER}"
+echo "# Extracted NS: '${vNS}'"
+echo "# Extracted CLUSTER: '${vCLUSTER}'"
+
+printf "\n\n# Writing additional options"
 ewriteln "export SI_BINARIES_DIR=$(which helm | rev | cut -d'/' -f2- | rev)"
 ewriteln "export HELM_BINARY_PATH=$(which helm)"
-ewriteln "export TEMPEST_CUSTOM_PUBLIC_NET=public"
-ewriteln "export TEMPEST_CUSTOM_IMAGE=cvp.cirros.51"
-ewriteln "export TEMPEST_CUSTOM_IMAGE_ALT=cvp.cirros.52"
 
 # extract MOS kubeconfig
 echo " "
-echo "Extracting mos-kubeconfig.yaml"
-if [[ ! -z ${MOS_CLUSTER+x} ]]; then
-	kubectl --kubeconfig $MY_PROJFOLDER/envs/mcc-kubeconfig.yaml -n ${MOS_NS} get secrets ${MOS_CLUSTER}-kubeconfig -o jsonpath='{.data.admin\.conf}'  | base64 -d | sed 's/:5443/:443/g' | tee $MY_PROJFOLDER/envs/mos-kubeconfig.yaml
+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: '$MOS_CLUSTER'"
+	echo "MOS_CLUSTER variable empty/invalid: '${vCLUSTER}'"
 fi
 
 # generate additional files
-echo "Preparing additional files"
+printf "\n\nPreparing additional files"
 # copy files
 cp -v /opt/res-files/k8s/workspace/* $MY_PROJFOLDER/envs/
-mkdir $MY_PROJFOLDER/scripts
-mv $MY_PROJFOLDER/envs/*.sh $MY_PROJFOLDER/scripts/
+[ ! -d $MY_PROJFOLDER/scripts ] && mkdir $MY_PROJFOLDER/scripts
+mv -v $MY_PROJFOLDER/envs/*.sh $MY_PROJFOLDER/scripts/
+# 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}"
@@ -78,11 +81,37 @@
     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}"
+
+    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 " "
+    echo "# Extracting network"
+    keystone_pod=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml get pod -n openstack -o=custom-columns=NAME:.metadata.name | grep keystone-client)
+    cmd="openstack network list --external -c Name -f value"
+    echo "# Running 'kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- "${cmd}"'"
+    vPUBNET=$(kubectl --kubeconfig $MY_PROJFOLDER/envs/mos-kubeconfig.yaml -n openstack exec ${keystone_pod} -c keystone-client --stdin -- ${cmd})
+    echo "-> 'openstack network list --external -c Name -f value': '${vPUBNET}'"
+    ewriteln "export TEMPEST_CUSTOM_PUBLIC_NET=${vPUBNET}"
+
+    ewriteln "export TEMPEST_CUSTOM_IMAGE=cvp.cirros.51"
+    ewriteln "export TEMPEST_CUSTOM_IMAGE_ALT=cvp.cirros.52"
     #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
 
+# Aliases
+ewriteln 'alias k=kubectl'
+
 # end
 echo " "
 echo "# Done!"
diff --git a/k8s/workspace/run-ceph-info-mos.sh b/k8s/workspace/run-ceph-info-mos.sh
new file mode 100644
index 0000000..6139daa
--- /dev/null
+++ b/k8s/workspace/run-ceph-info-mos.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+. /opt/cfg-checker/.checkervenv/bin/activate
+mos-checker ceph info --client-name $MY_CLIENTNAME --project-name $MY_PROJNAME --html $MY_PROJFOLDER/reports/$MY_CLIENTSHORTNAME-mos-ceph-info-01.html
+deactivate
diff --git a/k8s/workspace/run-conformance-mcc.sh b/k8s/workspace/run-conformance-mcc.sh
new file mode 100644
index 0000000..fab3edc
--- /dev/null
+++ b/k8s/workspace/run-conformance-mcc.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+tenv=mcc
+. /opt/si-tests/.sivenv/bin/activate
+cd $MY_PROJFOLDER/tmp
+. $MY_PROJFOLDER/${tenv}rc
+. $MY_PROJFOLDER/target-${tenv}
+pytest /opt/si-tests/si_tests/tests/deployment/test_k8s_conformance.py
+unset TARGET_CLUSTER
+unset TARGET_NAMESPACE
+deactivate
+# report
+if [ -d $MY_PROJFOLDER/reports/${tenv}-conformance ]; then
+	echo "# Generating repors"
+	yes | rm $MY_PROJFOLDER/reports/${tenv}-conformance/*
+else
+	mkdir $MY_PROJFOLDER/reports/${tenv}-conformance
+fi
+cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-conformance/
+cd $MY_PROJFOLDER/reports/
+tparser -f r_xml --omit-status SKIP --force-single -d -r $MY_CLIENTSHORTNAME-${tenv}-conformance-latest.html $MY_PROJFOLDER/reports/${tenv}-conformance/
+cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-conformance-mos.sh b/k8s/workspace/run-conformance-mos.sh
new file mode 100644
index 0000000..bc352a3
--- /dev/null
+++ b/k8s/workspace/run-conformance-mos.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+tenv=mos
+. /opt/si-tests/.sivenv/bin/activate
+cd $MY_PROJFOLDER/tmp
+. $MY_PROJFOLDER/${tenv}rc
+. $MY_PROJFOLDER/target-${tenv}
+pytest /opt/si-tests/si_tests/tests/deployment/test_k8s_conformance.py
+unset TARGET_CLUSTER
+unset TARGET_NAMESPACE
+deactivate
+# report
+if [ -d $MY_PROJFOLDER/reports/${tenv}-conformance ]; then
+	echo "# Generating repors"
+	yes | rm $MY_PROJFOLDER/reports/${tenv}-conformance/*
+else
+	mkdir $MY_PROJFOLDER/reports/${tenv}-conformance
+fi
+cp ./artifacts/*.xml $MY_PROJFOLDER/reports/${tenv}-conformance/
+cd $MY_PROJFOLDER/reports/
+tparser -f r_xml --omit-status SKIP --force-single -d -r $MY_CLIENTSHORTNAME-${tenv}-conformance-latest.html $MY_PROJFOLDER/reports/${tenv}-conformance/
+cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-openstack-end-to-end.sh b/k8s/workspace/run-openstack-end-to-end.sh
new file mode 100644
index 0000000..169f879
--- /dev/null
+++ b/k8s/workspace/run-openstack-end-to-end.sh
@@ -0,0 +1,19 @@
+#!/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-smoke.sh b/k8s/workspace/run-openstack-func-smoke.sh
new file mode 100644
index 0000000..3d044e5
--- /dev/null
+++ b/k8s/workspace/run-openstack-func-smoke.sh
@@ -0,0 +1,54 @@
+#!/bin/bash
+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
+
+# 
+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 " "
+#
+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 -v /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/
+tparser -f r_xml -d -r $MY_CLIENTSHORTNAME-${tenv}-openstack-func-smoke-latest.html $MY_PROJFOLDER/reports/${tenv}-func/
+cd $MY_PROJFOLDER
diff --git a/k8s/workspace/run-packages-mcc.sh b/k8s/workspace/run-packages-mcc.sh
new file mode 100644
index 0000000..4840a5e
--- /dev/null
+++ b/k8s/workspace/run-packages-mcc.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+. /opt/cfg-checker/.checkervenv/bin/activate
+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 $MY_CLIENTSHORTNAME-mcc-packages-01.html
+deactivate
diff --git a/k8s/workspace/run-packages-mos.sh b/k8s/workspace/run-packages-mos.sh
new file mode 100644
index 0000000..45048cc
--- /dev/null
+++ b/k8s/workspace/run-packages-mos.sh
@@ -0,0 +1,4 @@
+#!/bin/bash
+. /opt/cfg-checker/.checkervenv/bin/activate
+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 $MY_CLIENTSHORTNAME-mos-packages-01.html
+deactivate
diff --git a/k8s/workspace/run-perf-k8s.sh b/k8s/workspace/run-perf-k8s.sh
new file mode 100644
index 0000000..919bf36
--- /dev/null
+++ b/k8s/workspace/run-perf-k8s.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+##
+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
+
+###
+if [ -z $(kubectl exec -n qa-space --stdin rally -- rally env list | grep kubernetes | cut -d' ' -f2) ]; then
+        echo "# Kubernetes env not found. Please, run 'create-rally-deployments.sh'"
+        kubectl exec -n qa-space --stdin rally -- rally env list
+else
+        echo "# Running k8s performance tests"
+        #kubectl exec -n qa-space --stdin rally -- rally task start /rally/rally-files/k8s-mos-scn-i100c5.yaml
+	# generate report
+	echo "# Generating report"
+	fname=$MY_CLIENTSHORTNAME-mos-k8s-perf-latest.html
+	kubectl exec -n qa-space --stdin rally -- rally task report $(kubectl exec -n qa-space --stdin rally -- rally task list | grep kubernetes | cut -d' ' -f2 | tail -1) --html-static --out ${fname}
+	kubectl cp qa-space/rally:/rally/${fname} $MY_PROJFOLDER/reports/${fname}
+fi
diff --git a/k8s/workspace/update-openstack-resources.sh b/k8s/workspace/update-openstack-resources.sh
new file mode 100644
index 0000000..9c9b36c
--- /dev/null
+++ b/k8s/workspace/update-openstack-resources.sh
@@ -0,0 +1,46 @@
+#!/bin/bash
+if [ -z ${TEMPEST_CUSTOM_PUBLIC_NET+x} ]; then
+	echo "# WARNING: Public network is empty"
+fi
+# mosrc
+. $MY_PROJFOLDER/envs/mosrc
+
+##
+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
+if [ ! -z $(kubectl exec toolset --stdin -n qa-space -- bash -c "openstack user show cvp.admin -c id -f value") ]; then
+        echo "# Resources already created"
+	echo " "
+	kubectl exec toolset --stdin -n qa-space -- bash -c "cat /artifacts/cmp-check/cvp.manifest"
+else
+        echo "# Creating openstack resources"
+	echo " "
+	kubectl exec toolset --stdin -n qa-space -- bash -c "mkdir /artifacts/cmp-check"
+        kubectl exec toolset --stdin -n qa-space -- bash -c "cd /artifacts/cmp-check; bash /opt/cmp-check/prepare.sh"
+fi
+
+#
+echo " "
+echo "# Filling tempest_custom.yaml"
+cp -v /opt/res-files/k8s/yamls/tempest_custom.yaml.clean $MY_PROJFOLDER/yamls/tempest_custom.yaml
+declare $(kubectl exec toolset --stdin -n qa-space -- bash -c "cat /artifacts/cmp-check/cvp.manifest")
+echo "# Getting network details"
+netid=$(kubectl exec toolset --stdin -n qa-space -- openstack network show ${TEMPEST_CUSTOM_PUBLIC_NET} -c id -f value)
+subnetid=$(kubectl exec toolset --stdin -n qa-space -- openstack subnet list -f value | grep ${TEMPEST_CUSTOM_PUBLIC_NET} | cut -d' ' -f1)
+echo "# image_ref_uuid -> ${cirros51_id}"
+sed -i "s/image_ref_uuid/${cirros51_id}/g" $MY_PROJFOLDER/yamls/tempest_custom.yaml
+echo "# image_ref_alt_uuid -> ${cirros52_id}"
+sed -i "s/image_ref_alt_uuid/${cirros52_id}/g" $MY_PROJFOLDER/yamls/tempest_custom.yaml
+echo "# s/public_subnet_uuid/ -> ${subnetid}"
+sed -i "s/public_subnet_uuid/${subnetid}/g" $MY_PROJFOLDER/yamls/tempest_custom.yaml
+echo "# s/public_net_uuid/ -> ${netid}"
+sed -i "s/public_net_uuid/${netid}/g" $MY_PROJFOLDER/yamls/tempest_custom.yaml
+echo "# s/public_net_name/ -> ${TEMPEST_CUSTOM_PUBLIC_NET}"
+sed -i "s/public_net_name/${TEMPEST_CUSTOM_PUBLIC_NET}/g" $MY_PROJFOLDER/yamls/tempest_custom.yaml
+
+# 
+echo "# Done!"
diff --git a/k8s/yamls/qa-toolset-bare.yaml b/k8s/yamls/qa-toolset-bare.yaml
new file mode 100644
index 0000000..146dee9
--- /dev/null
+++ b/k8s/yamls/qa-toolset-bare.yaml
@@ -0,0 +1,17 @@
+apiVersion: v1
+kind: Pod
+metadata:
+  name: toolset
+  namespace: qa-space
+spec:
+  containers:
+  - command:
+    - /bin/sleep
+    - infinity
+    imagePullPolicy: IfNotPresent
+    name: toolset
+    image: savex13/toolset:latest
+  dnsPolicy: ClusterFirst
+  volumes:
+  - emptyDir: {}
+    name: pod-tmp
diff --git a/k8s/yamls/qa-ubuntu.yaml b/k8s/yamls/qa-toolset.yaml
similarity index 97%
rename from k8s/yamls/qa-ubuntu.yaml
rename to k8s/yamls/qa-toolset.yaml
index d3f3541..5a53ba3 100644
--- a/k8s/yamls/qa-ubuntu.yaml
+++ b/k8s/yamls/qa-toolset.yaml
@@ -1,7 +1,7 @@
 apiVersion: v1
 kind: Pod
 metadata:
-  name: ubuntu
+  name: toolset
   namespace: qa-space
 spec:
   containers:
@@ -64,7 +64,7 @@
           key: OS_DEFAULT_DOMAIN
           name: keystone-keystone-admin
     imagePullPolicy: IfNotPresent
-    name: ubuntu
+    name: toolset
     #image: 127.0.0.1:44301/general/external/docker.io/library/ubuntu:bionic-20201119
     image: savex13/toolset:latest
     volumeMounts:
diff --git a/k8s/yamls/toolset.yaml b/k8s/yamls/toolset.yaml
deleted file mode 100644
index 6c2df64..0000000
--- a/k8s/yamls/toolset.yaml
+++ /dev/null
@@ -1,78 +0,0 @@
-apiVersion: v1
-kind: Pod
-metadata:
-  name: toolset
-  namespace: qa-space
-spec:
-  containers:
-  - command:
-    - /bin/sleep
-    - infinity
-    env:
-    - name: LANG
-      value: C.UTF-8
-    - name: OS_IDENTITY_API_VERSION
-      value: "3"
-    - name: OS_AUTH_URL
-      valueFrom:
-        secretKeyRef:
-          key: OS_AUTH_URL
-          name: keystone-keystone-admin
-    - name: OS_REGION_NAME
-      valueFrom:
-        secretKeyRef:
-          key: OS_REGION_NAME
-          name: keystone-keystone-admin
-    - name: OS_INTERFACE
-      valueFrom:
-        secretKeyRef:
-          key: OS_INTERFACE
-          name: keystone-keystone-admin
-    - name: OS_ENDPOINT_TYPE
-      valueFrom:
-        secretKeyRef:
-          key: OS_INTERFACE
-          name: keystone-keystone-admin
-    - name: OS_PROJECT_DOMAIN_NAME
-      valueFrom:
-        secretKeyRef:
-          key: OS_PROJECT_DOMAIN_NAME
-          name: keystone-keystone-admin
-    - name: OS_PROJECT_NAME
-      valueFrom:
-        secretKeyRef:
-          key: OS_PROJECT_NAME
-          name: keystone-keystone-admin
-    - name: OS_USER_DOMAIN_NAME
-      valueFrom:
-        secretKeyRef:
-          key: OS_USER_DOMAIN_NAME
-          name: keystone-keystone-admin
-    - name: OS_USERNAME
-      valueFrom:
-        secretKeyRef:
-          key: OS_USERNAME
-          name: keystone-keystone-admin
-    - name: OS_PASSWORD
-      valueFrom:
-        secretKeyRef:
-          key: OS_PASSWORD
-          name: keystone-keystone-admin
-    - name: OS_DEFAULT_DOMAIN
-      valueFrom:
-        secretKeyRef:
-          key: OS_DEFAULT_DOMAIN
-          name: keystone-keystone-admin
-    imagePullPolicy: IfNotPresent
-    name: toolset
-    image: savex13/toolset:0.4
-    volumeMounts:
-    - mountPath: /artifacts
-      name: qa-pv-a
-  dnsPolicy: ClusterFirst
-  volumes:
-  - emptyDir: {}
-    name: pod-tmp
-  - name: qa-pv-a
-    persistentVolumeClaim:
-      claimName: qa-pvc-a