Run all components in one namespace
[oom.git] / kubernetes / oneclick / deleteAll.bash
index b41679b..52748bc 100755 (executable)
@@ -3,8 +3,7 @@
 . $(dirname "$0")/setenv.bash
 
 delete_namespace() {
-  _NS=$1-$2
-  kubectl delete namespace $_NS
+  kubectl delete namespace $1
 }
 
 delete_service_account() {
@@ -25,13 +24,18 @@ wait_terminate() {
   while true; do
     declare -i _STATUS=0
     for i in ${HELM_APPS[@]}; do
-      kubectl get namespaces $1-$i > /dev/null 2>&1
-      if [ "$?" -eq "0" ]; then
+      kubectl get pods --namespace $1 | grep -w " $i" > /dev/null 2>&1
+      if [ "$?" -ne "0" ]; then
         _STATUS=1
         break
       fi
     done
-    if [ "$_STATUS" -eq "0" ]; then
+
+    if [ "$SINGLE_COMPONENT" == "false" ]; then
+      kubectl get namespaces $1 > /dev/null 2>&1
+      _STATUS=$?
+    fi
+    if [ "$_STATUS" -ne "0" ]; then
       break
     fi
     sleep 2
@@ -43,6 +47,8 @@ usage() {
 Usage: $0 [PARAMs]
 -u                  : Display usage
 -n [NAMESPACE]      : Kubernetes namespace (required)
+-c                  : kubectl context (default: current context)
+-y                  : Skip interactive confirmation (default: no)
 -a [APP]            : Specify a specific ONAP component (default: all)
                       from the following choices:
                       sdc, aai ,mso, message-router, robot, vid, aaf, uui
@@ -56,8 +62,10 @@ NS=
 INCL_SVC=false
 APP=
 WAIT_TERMINATE=true
-
-while getopts ":n:u:s:a:N" PARAM; do
+SKIP_INTERACTIVE_CONFIRMATION=no
+KUBECTL_CONTEXT=
+SINGLE_COMPONENT=false
+while getopts ":c:n:u:s:a:yN" PARAM; do
   case $PARAM in
     u)
       usage
@@ -72,10 +80,17 @@ while getopts ":n:u:s:a:N" PARAM; do
         usage
         exit 1
       fi
+      SINGLE_COMPONENT=true
       ;;
     N)
       WAIT_TERMINATE=false
       ;;
+    y)
+      SKIP_INTERACTIVE_CONFIRMATION=yes
+      ;;
+    c)
+      KUBECTL_CONTEXT=${OPTARG}
+      ;;
     ?)
       usage
       exit
@@ -88,6 +103,29 @@ if [[ -z $NS ]]; then
   exit 1
 fi
 
+if [[ "$SKIP_INTERACTIVE_CONFIRMATION" != yes ]]; then
+  current_kubectl_context=$(kubectl config get-contexts |grep "*" |awk '{print $2}')
+  if test "$KUBECTL_CONTEXT" != "$current_kubectl_context"; then
+    printf "Current kubectl context does not match context specified:\x1b[31m $current_kubectl_context\x1b[0m\n"
+    if [ ! -z "$KUBECTL_CONTEXT" -a "$KUBECTL_CONTEXT" != " " ]; then
+      read -p "Do you wish to switch context to $KUBECTL_CONTEXT and continue?" yn
+      case $yn in
+        [Yy]* ) kubectl config use-context $KUBECTL_CONTEXT;;
+        * ) printf "Skipping delete...\n"; exit;;
+      esac
+    else
+      printf "You are about to delete deployment from:\x1b[31m $current_kubectl_context\x1b[0m\n"
+      read -p "To continue enter context name: " response
+
+      if test "$response" != "$current_kubectl_context"
+      then
+        printf "Your response does not match current context! Skipping delete ...\n"
+        exit 1
+      fi
+    fi
+  fi
+fi
+
 if [[ ! -z "$APP" ]]; then
   HELM_APPS=($APP)
 fi
@@ -95,15 +133,15 @@ fi
 printf "\n********** Cleaning up ONAP: ${ONAP_APPS[*]}\n"
 
 for i in ${HELM_APPS[@]}; do
-
   delete_app_helm $NS $i
-  delete_namespace $NS $i
   delete_service_account $NS $i
-
 done
 
-delete_app_helm $NS "config"
-kubectl delete namespace $NS
+if [ "$SINGLE_COMPONENT" == "false" ]
+then
+    delete_app_helm $NS "config"
+    delete_namespace $NS
+fi
 
 if $WAIT_TERMINATE; then
   wait_terminate $NS