diff --git a/kubernetes/robot/demo-k8s.sh b/kubernetes/robot/demo-k8s.sh
index 0d30557..37631bc 100755
--- a/kubernetes/robot/demo-k8s.sh
+++ b/kubernetes/robot/demo-k8s.sh
@@ -19,46 +19,46 @@
 #
 usage ()
 {
-	echo "Usage: demo-k8s.sh <namespace> <command> [<parameters>] [execscript]"
-	echo " "
-	echo "       demo-k8s.sh <namespace> init"
-	echo "               - Execute both init_customer + distribute"
-	echo " "
-	echo "       demo-k8s.sh <namespace> init_customer"
-	echo "               - Create demo customer (Demonstration) and services, etc."
-	echo " "
-	echo "       demo-k8s.sh <namespace> distribute  [<prefix>]"
-	echo "               - Distribute demo models (demoVFW and demoVLB)"
-	echo " "
-	echo "       demo-k8s.sh <namespace> preload <vnf_name> <module_name>"
-	echo "               - Preload data for VNF for the <module_name>"
-	echo " "
-	echo "       demo-k8s.sh <namespace> appc <module_name>"
-	echo "               - provide APPC with vFW module mount point for closed loop"
-	echo " "
-	echo "       demo-k8s.sh <namespace> init_robot [ <etc_hosts_prefix> ]"
-	echo "               - Initialize robot after all ONAP VMs have started"
-	echo " "
-	echo "       demo-k8s.sh <namespace> instantiateVFW"
-	echo "               - Instantiate vFW module for the demo customer (DemoCust<uuid>)"
-	echo " "
-	echo "       demo-k8s.sh <namespace> instantiateVFWdirectso  csar_filename"
-	echo "               - Instantiate vFW module using direct SO interface using previously distributed model "
+    echo "Usage: demo-k8s.sh <namespace> <command> [<parameters>] [execscript]"
+    echo " "
+    echo "       demo-k8s.sh <namespace> init"
+    echo "               - Execute both init_customer + distribute"
+    echo " "
+    echo "       demo-k8s.sh <namespace> init_customer"
+    echo "               - Create demo customer (Demonstration) and services, etc."
+    echo " "
+    echo "       demo-k8s.sh <namespace> distribute  [<prefix>]"
+    echo "               - Distribute demo models (demoVFW and demoVLB)"
+    echo " "
+    echo "       demo-k8s.sh <namespace> preload <vnf_name> <module_name>"
+    echo "               - Preload data for VNF for the <module_name>"
+    echo " "
+    echo "       demo-k8s.sh <namespace> appc <module_name>"
+    echo "               - provide APPC with vFW module mount point for closed loop"
+    echo " "
+    echo "       demo-k8s.sh <namespace> init_robot [ <etc_hosts_prefix> ]"
+    echo "               - Initialize robot after all ONAP VMs have started"
+    echo " "
+    echo "       demo-k8s.sh <namespace> instantiateVFW"
+    echo "               - Instantiate vFW module for the demo customer (DemoCust<uuid>)"
+    echo " "
+    echo "       demo-k8s.sh <namespace> instantiateVFWdirectso  csar_filename"
+    echo "               - Instantiate vFW module using direct SO interface using previously distributed model "
         echo "                 that is in /tmp/csar in robot container"
-	echo " "
+    echo " "
         echo "       demo-k8s.sh <namespace> instantiateVLB_CDS"
         echo "               - Instantiate vLB module using CDS with a preloaded CBA "
         echo " "
-	echo "       demo-k8s.sh <namespace> deleteVNF <module_name from instantiateVFW>"
-	echo "               - Delete the module created by instantiateVFW"
-	echo " "
-	echo "       demo-k8s.sh <namespace> vfwclosedloop <pgn-ip-address>"
+    echo "       demo-k8s.sh <namespace> deleteVNF <module_name from instantiateVFW>"
+    echo "               - Delete the module created by instantiateVFW"
+    echo " "
+    echo "       demo-k8s.sh <namespace> vfwclosedloop <pgn-ip-address>"
         echo "               - vFWCL: Sets the packet generator to high and low rates, and checks whether the policy "
         echo "                 kicks in to modulate the rates back to medium"
-	echo " "
-	echo "       demo-k8s.sh <namespace> <command> [<parameters>] execscript"
-	echo "               - Optional parameter to execute user custom scripts located in scripts/demoscript directory"
-	echo " "
+    echo " "
+    echo "       demo-k8s.sh <namespace> <command> [<parameters>] execscript"
+    echo "               - Optional parameter to execute user custom scripts located in scripts/demoscript directory"
+    echo " "
 }
 
 # Check if execscript flag is used and drop it from input arguments
@@ -74,8 +74,8 @@
 echo $#
 
 if [ $# -lt 2 ];then
-	usage
-	exit
+    usage
+    exit
 fi
 
 NAMESPACE=$1
@@ -86,80 +86,80 @@
 ##
 while [ $# -gt 0 ]
 do
-	key="$1"
+    key="$1"
         echo "KEY:"
         echo $key
 
-	case $key in
-    	init_robot)
-			TAG="UpdateWebPage"
-			echo "WEB Site Password for user 'test': "
-			stty -echo
-			read WEB_PASSWORD
-			stty echo
-			if [ "$WEB_PASSWORD" = "" ]; then
-				echo ""
-				echo "WEB Password is required for user 'test'"
-				exit
-			fi
-			VARIABLES="$VARIABLES -v WEB_PASSWORD:$WEB_PASSWORD"
-			shift
-			if [ $# -eq 2 ];then
-				VARIABLES="$VARIABLES -v HOSTS_PREFIX:$1"
-			fi
-			shift
-			;;
-    	init)
-			TAG="InitDemo"
-			shift
-			;;
-	    vescollector)
-			TAG="vescollector"
-			shift
-			;;
+    case $key in
+        init_robot)
+            TAG="UpdateWebPage"
+            echo "WEB Site Password for user 'test': "
+            stty -echo
+            read WEB_PASSWORD
+            stty echo
+            if [ "$WEB_PASSWORD" = "" ]; then
+                echo ""
+                echo "WEB Password is required for user 'test'"
+                exit
+            fi
+            VARIABLES="$VARIABLES -v WEB_PASSWORD:$WEB_PASSWORD"
+            shift
+            if [ $# -eq 2 ];then
+                VARIABLES="$VARIABLES -v HOSTS_PREFIX:$1"
+            fi
+            shift
+            ;;
+        init)
+            TAG="InitDemo"
+            shift
+            ;;
+        vescollector)
+            TAG="vescollector"
+            shift
+            ;;
         distribute_vcpe)
-			TAG="distributeVCPE"
-			shift
-			;;
-    	init_customer)
-			TAG="InitCustomer"
-			shift
-			;;
-    	distribute)
-			TAG="InitDistribution"
-			shift
-			if [ $# -eq 1 ];then
-				VARIABLES="$VARIABLES -v DEMO_PREFIX:$1"
-			fi
-			shift
-			;;
-    	preload)
-			TAG="PreloadDemo"
-			shift
-			if [ $# -ne 2 ];then
-				echo "Usage: demo-k8s.sh <namespace> preload <vnf_name> <module_name>"
-				exit
-			fi
-			VARIABLES="$VARIABLES -v VNF_NAME:$1"
-			shift
-			VARIABLES="$VARIABLES -v MODULE_NAME:$1"
-			shift
-			;;
-    	appc)
-			TAG="APPCMountPointDemo"
-			shift
-			if [ $# -ne 1 ];then
-					echo "Usage: demo-k8s.sh <namespace> appc <module_name>"
-					exit
-				fi
-			VARIABLES="$VARIABLES -v MODULE_NAME:$1"
-			shift
-			;;
-    	instantiateVFW)
-			TAG="instantiateVFW"
-			VARIABLES="$VARIABLES -v GLOBAL_BUILD_NUMBER:$$"
-			shift
-			;;
+            TAG="distributeVCPE"
+            shift
+            ;;
+        init_customer)
+            TAG="InitCustomer"
+            shift
+            ;;
+        distribute)
+            TAG="InitDistribution"
+            shift
+            if [ $# -eq 1 ];then
+                VARIABLES="$VARIABLES -v DEMO_PREFIX:$1"
+            fi
+            shift
+            ;;
+        preload)
+            TAG="PreloadDemo"
+            shift
+            if [ $# -ne 2 ];then
+                echo "Usage: demo-k8s.sh <namespace> preload <vnf_name> <module_name>"
+                exit
+            fi
+            VARIABLES="$VARIABLES -v VNF_NAME:$1"
+            shift
+            VARIABLES="$VARIABLES -v MODULE_NAME:$1"
+            shift
+            ;;
+        appc)
+            TAG="APPCMountPointDemo"
+            shift
+            if [ $# -ne 1 ];then
+                    echo "Usage: demo-k8s.sh <namespace> appc <module_name>"
+                    exit
+                fi
+            VARIABLES="$VARIABLES -v MODULE_NAME:$1"
+            shift
+            ;;
+        instantiateVFW)
+            TAG="instantiateVFW"
+            VARIABLES="$VARIABLES -v GLOBAL_BUILD_NUMBER:$$"
+            shift
+            ;;
         instantiateVFWdirectso)
                         TAG="instantiateVFWdirectso"
                         shift
@@ -175,21 +175,21 @@
                         VARIABLES="$VARIABLES -v GLOBAL_BUILD_NUMBER:$$"
                         shift
                         ;;
-    	deleteVNF)
-			TAG="deleteVNF"
-			shift
-			if [ $# -ne 1 ];then
-				echo "Usage: demo-k8s.sh <namespace> deleteVNF <module_name from instantiateVFW>"
-				exit
-			fi
-			VARFILE=$1.py
-			VARIABLES="$VARIABLES -V /share/${VARFILE}"
-			shift
-			;;
-    	cds)
-			TAG="cds"
-			shift
-			;;
+        deleteVNF)
+            TAG="deleteVNF"
+            shift
+            if [ $# -ne 1 ];then
+                echo "Usage: demo-k8s.sh <namespace> deleteVNF <module_name from instantiateVFW>"
+                exit
+            fi
+            VARFILE=$1.py
+            VARIABLES="$VARIABLES -V /share/${VARFILE}"
+            shift
+            ;;
+        cds)
+            TAG="cds"
+            shift
+            ;;
         distributeVFWNG)
                         TAG="distributeVFWNG"
                         shift
@@ -208,10 +208,10 @@
                         VARIABLES="$VARIABLES -v PACKET_GENERATOR_HOST:$1 -v pkg_host:$1"
                         shift
                         ;;
-    	*)
-			usage
-			exit
-	esac
+        *)
+            usage
+            exit
+    esac
 done
 
 set -x
diff --git a/kubernetes/robot/scripts/etescript/hvves-etescript.sh b/kubernetes/robot/scripts/etescript/hvves-etescript.sh
index 63e90cd..eb04e07 100755
--- a/kubernetes/robot/scripts/etescript/hvves-etescript.sh
+++ b/kubernetes/robot/scripts/etescript/hvves-etescript.sh
@@ -24,46 +24,46 @@
 
 
 generate_ca_key_cert () {
-	openssl genrsa -out $1/ca.key 2048
-	openssl req -new -x509 -days 36500 -key $1/ca.key -out $1/ca.pem -subj /CN=dcae-hv-ves-ca.onap
+    openssl genrsa -out $1/ca.key 2048
+    openssl req -new -x509 -days 36500 -key $1/ca.key -out $1/ca.pem -subj /CN=dcae-hv-ves-ca.onap
 }
 
 generate_server_key_csr () {
-	openssl genrsa -out $1/server.key 2048
-	openssl req -new -key $1/server.key -out $1/server.csr -subj /CN=dcae-hv-ves-collector.onap
+    openssl genrsa -out $1/server.key 2048
+    openssl req -new -key $1/server.key -out $1/server.csr -subj /CN=dcae-hv-ves-collector.onap
 }
 
 generate_client_key_csr () {
-	openssl genrsa -out $1/client.key 2048
-	openssl req -new -key $1/client.key -out $1/client.csr -subj /CN=dcae-hv-ves-client.onap
+    openssl genrsa -out $1/client.key 2048
+    openssl req -new -key $1/client.key -out $1/client.csr -subj /CN=dcae-hv-ves-client.onap
 }
 
 sign_server_and_client_cert () {
-	openssl x509 -req -days 36500 -in $1/server.csr -CA $1/ca.pem -CAkey $1/ca.key -out $1/server.pem -set_serial 00
-	openssl x509 -req -days 36500 -in $1/client.csr -CA $1/ca.pem -CAkey $1/ca.key -out $1/client.pem -set_serial 00
+    openssl x509 -req -days 36500 -in $1/server.csr -CA $1/ca.pem -CAkey $1/ca.key -out $1/server.pem -set_serial 00
+    openssl x509 -req -days 36500 -in $1/client.csr -CA $1/ca.pem -CAkey $1/ca.key -out $1/client.pem -set_serial 00
 }
 
 create_pkcs12_ca_and_server () {
-	openssl pkcs12 -export -out $1/ca.p12 -inkey $1/ca.key -in $1/ca.pem -passout pass:
-	openssl pkcs12 -export -out $1/server.p12 -inkey $1/server.key -in $1/server.pem -passout pass:
+    openssl pkcs12 -export -out $1/ca.p12 -inkey $1/ca.key -in $1/ca.pem -passout pass:
+    openssl pkcs12 -export -out $1/server.p12 -inkey $1/server.key -in $1/server.pem -passout pass:
 }
 
 copy_server_certs_to_hvves () {
-	for f in ca.p12 server.p12
-	do
-		kubectl cp $1/$f $2/$3:$4
-	done
+    for f in ca.p12 server.p12
+    do
+        kubectl cp $1/$f $2/$3:$4
+    done
 }
 
 copy_client_certs_to_robot () {
-	for f in ca.pem client.key client.pem
-	do
+    for f in ca.pem client.key client.pem
+    do
                 kubectl cp $1/$f $2/$3:$4
         done
 }
 
 cleanup () {
-	rm -f $1/ca.??? $1/server.??? s$1/client.???
+    rm -f $1/ca.??? $1/server.??? s$1/client.???
 }
 
 
diff --git a/kubernetes/robot/scripts/etescript/security-etescript.sh b/kubernetes/robot/scripts/etescript/security-etescript.sh
index 1cd911c..bf51329 100755
--- a/kubernetes/robot/scripts/etescript/security-etescript.sh
+++ b/kubernetes/robot/scripts/etescript/security-etescript.sh
@@ -25,29 +25,29 @@
 CSV2JSON='import csv; import json; import sys; print(json.dumps({i[0]: i[1] for i in csv.reader(sys.stdin)}))'
 FILTER="$(tr -d [:space:] <<TEMPLATE
 {{range .items}}
-	{{range.spec.ports}}
-		{{if .nodePort}}
-			{{.nodePort}}{{','}}{{.name}}{{'\n'}}
-		{{end}}
-	{{end}}
+    {{range.spec.ports}}
+        {{if .nodePort}}
+            {{.nodePort}}{{','}}{{.name}}{{'\n'}}
+        {{end}}
+    {{end}}
 {{end}}
 TEMPLATE)"
 
 
 setup () {
-	export NODEPORTS_FILE="$(mktemp -p ${TMPDIR} ${TMPTPL}XXX)"
+    export NODEPORTS_FILE="$(mktemp -p ${TMPDIR} ${TMPTPL}XXX)"
 }
 
 create_actual_nodeport_json () {
-	kubectl get svc -n $NAMESPACE -o go-template="$FILTER" | python3 -c "$CSV2JSON" > "$NODEPORTS_FILE"
+    kubectl get svc -n $NAMESPACE -o go-template="$FILTER" | python3 -c "$CSV2JSON" > "$NODEPORTS_FILE"
 }
 
 copy_actual_nodeport_json_to_robot () {
-	kubectl cp "$1" "$2/$3:$4"
+    kubectl cp "$1" "$2/$3:$4"
 }
 
 cleanup () {
-	rm "$NODEPORTS_FILE"
+    rm "$NODEPORTS_FILE"
 }
 
 
