1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
|
#!/bin/bash
. $(dirname "$0")/setenv.bash
delete_namespace() {
kubectl delete namespace $1
}
delete_service_account() {
kubectl delete clusterrolebinding $1-$2-admin-binding
printf "Service account $1-$2-admin-binding deleted.\n\n"
}
delete_registry_key() {
kubectl --namespace $1-$2 delete secret ${1}-docker-registry-key
}
delete_app_helm() {
helm delete $1-$2 --purge
}
wait_terminate() {
printf "Waiting for namespaces termination...\n"
while true; do
declare -i _STATUS=0
for i in ${HELM_APPS[@]}; do
kubectl get pods --namespace $1 | grep -w " $i" > /dev/null 2>&1
if [ "$?" -ne "0" ]; then
_STATUS=1
break
fi
done
if [ "$SINGLE_COMPONENT" == "false" ]; then
kubectl get namespaces $1 > /dev/null 2>&1
_STATUS=$?
fi
if [ "$_STATUS" -ne "0" ]; then
break
fi
sleep 2
done
}
usage() {
cat <<EOF
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
sdnc, portal, policy, appc, multicloud, clamp, consul, vnfsdk
-N : Do not wait for deletion of namespace and its objects
EOF
}
#MAINs
NS=
INCL_SVC=false
APP=
WAIT_TERMINATE=true
SKIP_INTERACTIVE_CONFIRMATION=no
KUBECTL_CONTEXT=
SINGLE_COMPONENT=false
while getopts ":c:n:u:s:a:yN" PARAM; do
case $PARAM in
u)
usage
exit 1
;;
n)
NS=${OPTARG}
;;
a)
APP=${OPTARG}
if [[ -z $APP ]]; then
usage
exit 1
fi
SINGLE_COMPONENT=true
;;
N)
WAIT_TERMINATE=false
;;
y)
SKIP_INTERACTIVE_CONFIRMATION=yes
;;
c)
KUBECTL_CONTEXT=${OPTARG}
;;
?)
usage
exit
;;
esac
done
if [[ -z $NS ]]; then
usage
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
printf "\n********** Cleaning up ONAP: ${ONAP_APPS[*]}\n"
for i in ${HELM_APPS[@]}; do
delete_app_helm $NS $i
delete_service_account $NS $i
done
if [ "$SINGLE_COMPONENT" == "false" ]
then
delete_app_helm $NS "config"
delete_namespace $NS
fi
if $WAIT_TERMINATE; then
wait_terminate $NS
fi
printf "\n********** Gone **********\n"
|