Modify teardown script to make it safer 67/59467/2
authoreHanan <eoin.hanan@ericsson.com>
Tue, 7 Aug 2018 13:09:26 +0000 (14:09 +0100)
committereHanan <eoin.hanan@ericsson.com>
Wed, 8 Aug 2018 08:57:47 +0000 (09:57 +0100)
I made it so the teardown script would not destroy everything it possible could. A quiet teardown option was added and unused variable removed.

Change-Id: If4c3be7937441a58236b641ef7d171b52ba61c1d
Issue-ID: INT-610
Signed-off-by: eHanan <eoin.hanan@ericsson.com>
deployment/heat/onap-oom/scripts/deploy.sh
test/ete/scripts/teardown-onap.sh

index 8a41a78..11b2938 100755 (executable)
@@ -9,16 +9,61 @@
 #     http://www.apache.org/licenses/LICENSE-2.0
 #
 
+install_name="onap-oom"
+full_deletion=false
+
 if [ -z "$WORKSPACE" ]; then
     export WORKSPACE=`git rev-parse --show-toplevel`
 fi
 
+usage() { echo "Usage: $0 [-n <number of VMs {2-15}>] [ -r ] <env-name>" 1>&2; exit 1; }
+
 if [ "$#" -ne 1 ]; then
-    echo "Usage: $0 <env-name>"
-    exit 1
+   usage
 fi
 ENV_FILE=$1
 
+while getopts ":n:s:" o; do
+    case "${o}" in
+        n)
+            if [[ ${OPTARG} =~ ^[0-9]+$ ]];then
+                vm_num=${OPTARG}
+                if [ ${OPTARG} > 15 ] || [ ${OPTARG} < 2 ]; then 
+                    usage
+                fi
+            else
+                usage
+            fi
+            ;;
+        r)
+            echo "The following command will delete all information relating to onap within your enviroment"
+            read -p "Are you certain this is what you want? (type y to confirm):" answer
+
+            if [ $answer = "y" ] || [ $answer = "Y" ] || [ $answer = "yes" ] || [ $answer = "Yes"]; then
+                echo "This may delete the work of other colleages within the same enviroment"
+                read -p "Are you certain this is what you want? (type y to confirm):" answer2
+                
+                if [ $answer2 = "y" ] || [ $answer2 = "Y" ] || [ $answer2 = "yes" ] || [ $answer2 = "Yes"]; then
+                    full_deletion=true
+                else 
+                    echo "Ending program"
+                    exit 1
+                fi
+            else 
+                echo "Ending program"
+                exit 1
+            fi
+            ;;
+        q)
+            full_deletion=true
+            ;;
+        *)
+            usage
+            ;;
+    esac
+done
+shift $((OPTIND-1))
+
 SSH_KEY=~/.ssh/onap_key
 
 source $WORKSPACE/test/ete/scripts/install_openstack_cli.sh
@@ -27,20 +72,24 @@ SO_ENCRYPTION_KEY=aa3871669d893c7fb8abbcda31b88b4f
 export OS_PASSWORD_ENCRYPTED=$(echo -n "$OS_PASSWORD" | openssl aes-128-ecb -e -K "$SO_ENCRYPTION_KEY" -nosalt | xxd -c 256 -p)
 
 for n in $(seq 1 5); do
-    $WORKSPACE/test/ete/scripts/teardown-onap.sh
+    if [ $full_deletion = true ] ; then 
+        $WORKSPACE/test/ete/scripts/teardown-onap.sh -n $install_name -q
+    else 
+        $WORKSPACE/test/ete/scripts/teardown-onap.sh -n $install_name
+    fi
 
     cd $WORKSPACE/deployment/heat/onap-oom
     envsubst < $ENV_FILE > $ENV_FILE~
 
-    if ! openstack stack create -t ./onap-oom.yaml -e $ENV_FILE~ onap-oom; then
+    if ! openstack stack create -t ./$install_name.yaml -e $ENV_FILE~ $install_name; then
         break
     fi
 
-    while [ "CREATE_IN_PROGRESS" == "$(openstack stack show -c stack_status -f value onap-oom)" ]; do
+    while [ "CREATE_IN_PROGRESS" == "$(openstack stack show -c stack_status -f value $install_name)" ]; do
         sleep 20
     done
 
-    STATUS=$(openstack stack show -c stack_status -f value onap-oom)
+    STATUS=$(openstack stack show -c stack_status -f value $install_name)
     echo $STATUS
     if [ "CREATE_COMPLETE" != "$STATUS" ]; then
         break
@@ -48,8 +97,8 @@ for n in $(seq 1 5); do
 
     for i in $(seq 1 30); do
        sleep 30
-       RANCHER_IP=$(openstack stack output show onap-oom rancher_vm_ip -c output_value -f value)
-        K8S_IP=$(openstack stack output show onap-oom k8s_1_vm_ip -c output_value -f value)
+       RANCHER_IP=$(openstack stack output show $install_name rancher_vm_ip -c output_value -f value)
+        K8S_IP=$(openstack stack output show $install_name k8s_1_vm_ip -c output_value -f value)
        timeout 1 ping -c 1 "$RANCHER_IP" && break
     done
 
index 9080e20..61e643b 100755 (executable)
 #!/bin/bash -x
 
+full_deletion=false
+
+usage() { echo "Usage: $0 [-n <string>] [-r]" 1>&2; exit 1; }
+
+while getopts ":rqn:" o; do
+    case "${o}" in
+
+        r)
+            echo "The following command will delete all information relating to onap within your enviroment"
+            read -p "Are you certain this is what you want? (type y to confirm):" answer
+
+            if [ $answer = "y" ] || [ $answer = "Y" ] || [ $answer = "yes" ] || [ $answer = "Yes"]; then
+                echo "This may delete the work of other colleages within the same enviroment"
+                read -p "Are you certain this is what you want? (type y to confirm):" answer2
+                
+                if [ $answer2 = "y" ] || [ $answer2 = "Y" ] || [ $answer2 = "yes" ] || [ $answer2 = "Yes"]; then
+                    full_deletion=true
+                else 
+                    echo "Ending program"
+                    exit 1
+                fi
+            else 
+                echo "Ending program"
+                exit 1
+            fi
+            ;;
+        q)
+            full_deletion=true
+            ;;
+        n)
+            install_name=${OPTARG}
+            ;;
+
+        *)
+            usage
+            ;;
+    esac
+done
+shift $((OPTIND-1))
+
 if [ -z "$WORKSPACE" ]; then
     export WORKSPACE=`git rev-parse --show-toplevel`
 fi
 
 source $WORKSPACE/test/ete/scripts/install_openstack_cli.sh
 
-# delete all instances
-openstack server delete $(openstack server list -c ID -f value)
-sleep 1
-
-# miscellaneous cleanup
-openstack floating ip delete $(openstack floating ip list -c ID -f value)
-sleep 1
-
-ROUTERS=$(openstack router list -c ID -f value)
-echo $ROUTERS
-for ROUTER in $ROUTERS; do
-    echo $ROUTER;
-    PORTS=$(openstack router show $ROUTER  -c "interfaces_info" -f "value" | jq -r '.[].port_id')
-    for PORT in $PORTS; do
-        openstack router remove port $ROUTER $PORT
+if [ "$full_deletion" = true ];then 
+    echo "Commencing delete, press CRTL-C to stop"
+    sleep 10
+
+    # delete all instances
+    openstack server delete $(openstack server list -c ID -f value)
+    sleep 1
+
+    # miscellaneous cleanup
+    openstack floating ip delete $(openstack floating ip list -c ID -f value)
+    sleep 1
+
+    ROUTERS=$(openstack router list -c ID -f value)
+    echo $ROUTERS
+    for ROUTER in $ROUTERS; do
+        echo $ROUTER;
+        PORTS=$(openstack router show $ROUTER  -c "interfaces_info" -f "value" | jq -r '.[].port_id')
+        for PORT in $PORTS; do
+            openstack router remove port $ROUTER $PORT
+        done
+        openstack router delete $ROUTER
     done
-    openstack router delete $ROUTER
-done
 
-openstack port delete $(openstack port list -f value -c ID)
-openstack volume delete $(openstack volume list -f value -c ID)
+    openstack port delete $(openstack port list -f value -c ID)
+    openstack volume delete $(openstack volume list -f value -c ID)
+
+    # delete all except "default" security group
+    SECURITY_GROUPS=$(openstack security group list -c ID -f value | grep -v default)
+    openstack security group delete $SECURITY_GROUPS
+    sleep 1
 
-# delete all except "default" security group
-SECURITY_GROUPS=$(openstack security group list -c ID -f value | grep -v default)
-openstack security group delete $SECURITY_GROUPS
-sleep 1
 
+    # Delete all existing stacks
+    STACKS=$(openstack stack list -c "Stack Name" -f value)
 
-# Delete all existing stacks
-STACKS=$(openstack stack list -c "Stack Name" -f value)
+    if [ ! -z "${STACKS}" ]; then
+        openstack stack delete -y $STACKS
+        for STACK in ${STACKS}; do
+            until [ "DELETE_IN_PROGRESS" != "$(openstack stack show -c stack_status -f value $STACK)" ]; do
+                sleep 2
+            done
+        done
+    else
+        echo "No existing stacks to delete."
+    fi
+
+else 
+    #Restrained teardown 
+    echo "Restrained teardown"
+    
+    STACK=$install_name
 
-if [ ! -z "${STACKS}" ]; then
-    openstack stack delete -y $STACKS
-    for STACK in ${STACKS}; do
+    if [ ! -z "${STACK}" ]; then
+        openstack stack delete $STACK
+        
         until [ "DELETE_IN_PROGRESS" != "$(openstack stack show -c stack_status -f value $STACK)" ]; do
-            sleep 2
+        sleep 2
         done
-    done
-else
-    echo "No existing stacks to delete."
-fi
+    else
+        echo "No existing stack with the name $install_name."
+    fi
+fi
\ No newline at end of file