Move lcm certificate to lcm folder in OSM helm chart
[osm/devops.git] / installers / uninstall_osm.sh
1 #!/bin/bash
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 #
15
16 #removes osm deployments and services
17 function remove_k8s_namespace() {
18 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
19 kubectl delete ns $1
20 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
21 }
22
23 function remove_volumes() {
24 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
25 k8_volume=$1
26 echo "Removing ${k8_volume}"
27 sudo rm -rf ${k8_volume}
28 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
29 }
30
31 function remove_crontab_job() {
32 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
33 crontab -l | grep -v '${OSM_DEVOPS}/installers/update-juju-lxc-images' | crontab -
34 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
35 }
36
37 function uninstall_k8s_monitoring() {
38 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
39 # uninstall OSM monitoring
40 sudo $OSM_DEVOPS/installers/k8s/uninstall_osm_k8s_monitoring.sh
41 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
42 }
43
44 #Uninstall osmclient
45 function uninstall_osmclient() {
46 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
47 sudo apt-get remove --purge -y python3-osmclient
48 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
49 }
50
51 #Uninstall OSM: remove deployments and services
52 function uninstall_osm() {
53 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
54 echo -e "\nUninstalling OSM"
55 if [ -n "$INSTALL_K8S_MONITOR" ]; then
56 # uninstall OSM MONITORING
57 uninstall_k8s_monitoring
58 fi
59 remove_k8s_namespace $OSM_STACK_NAME
60 echo "Now osm docker images and volumes will be deleted"
61 # TODO: clean-up of images should take into account if other tags were used for specific modules
62 newgrp docker << EONG
63 for module in ro lcm keystone nbi mon pol pla osmclient; do
64 docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/${module}:${OSM_DOCKER_TAG}
65 done
66 EONG
67
68 sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
69
70 OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_STACK_NAME}"
71 remove_volumes $OSM_NAMESPACE_VOL
72
73 echo "Removing $OSM_DOCKER_WORK_DIR"
74 sudo rm -rf $OSM_DOCKER_WORK_DIR
75 [ -z "$CONTROLLER_NAME" ] && sg lxd -c "juju kill-controller -t 0 -y $OSM_STACK_NAME"
76
77 remove_crontab_job
78
79 # Cleanup Openstack installer venv
80 if [ -d "$OPENSTACK_PYTHON_VENV" ]; then
81 rm -r $OPENSTACK_PYTHON_VENV
82 fi
83
84 [ -z "$INSTALL_NOHOSTCLIENT" ] && uninstall_osmclient
85 echo "Some docker images will be kept in case they are used by other docker stacks"
86 echo "To remove them, just run 'docker image prune' in a terminal"
87 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
88 return 0
89 }
90
91 function ask_user(){
92 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
93 # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive
94 # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed
95 # Return: true(0) if user type 'yes'; false (1) if user type 'no'
96 read -e -p "$1" USER_CONFIRMATION
97 while true ; do
98 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
99 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
100 [ "${USER_CONFIRMATION,,}" == "yes" ] || [ "${USER_CONFIRMATION,,}" == "y" ] && return 0
101 [ "${USER_CONFIRMATION,,}" == "no" ] || [ "${USER_CONFIRMATION,,}" == "n" ] && return 1
102 read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
103 done
104 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
105 }
106
107 LXD_VERSION=4.0
108 JUJU_VERSION=2.9
109 UNINSTALL=""
110 DEVELOP=""
111 UPDATE=""
112 RECONFIGURE=""
113 TEST_INSTALLER=""
114 INSTALL_LXD=""
115 SHOWOPTS=""
116 COMMIT_ID=""
117 ASSUME_YES=""
118 APT_PROXY_URL=""
119 INSTALL_FROM_SOURCE=""
120 DEBUG_INSTALL=""
121 RELEASE="ReleaseTEN"
122 REPOSITORY="stable"
123 INSTALL_VIMEMU=""
124 INSTALL_PLA=""
125 LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd"
126 LXD_REPOSITORY_PATH=""
127 INSTALL_LIGHTWEIGHT="y"
128 INSTALL_TO_OPENSTACK=""
129 OPENSTACK_OPENRC_FILE_OR_CLOUD=""
130 OPENSTACK_PUBLIC_NET_NAME=""
131 OPENSTACK_ATTACH_VOLUME="false"
132 OPENSTACK_SSH_KEY_FILE=""
133 OPENSTACK_USERDATA_FILE=""
134 OPENSTACK_VM_NAME="server-osm"
135 OPENSTACK_PYTHON_VENV="$HOME/.virtual-envs/osm"
136 INSTALL_ONLY=""
137 TO_REBUILD=""
138 INSTALL_NOLXD=""
139 INSTALL_NODOCKER=""
140 INSTALL_NOJUJU=""
141 INSTALL_K8S_MONITOR=""
142 INSTALL_NOHOSTCLIENT=""
143 INSTALL_CACHELXDIMAGES=""
144 OSM_DEVOPS=
145 OSM_VCA_HOST=
146 OSM_VCA_SECRET=
147 OSM_VCA_PUBKEY=
148 OSM_VCA_CLOUDNAME="localhost"
149 OSM_VCA_K8S_CLOUDNAME="k8scloud"
150 OSM_STACK_NAME=osm
151 NO_HOST_PORTS=""
152 DOCKER_NOBUILD=""
153 REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
154 REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
155 OSM_WORK_DIR="/etc/osm"
156 OSM_DOCKER_WORK_DIR="/etc/osm/docker"
157 OSM_K8S_WORK_DIR="${OSM_DOCKER_WORK_DIR}/osm_pods"
158 OSM_HOST_VOL="/var/lib/osm"
159 OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_STACK_NAME}"
160 OSM_DOCKER_TAG=latest
161 DOCKER_USER=opensourcemano
162 PULL_IMAGES="y"
163 KAFKA_TAG=2.11-1.0.2
164 PROMETHEUS_TAG=v2.4.3
165 GRAFANA_TAG=latest
166 PROMETHEUS_NODE_EXPORTER_TAG=0.18.1
167 PROMETHEUS_CADVISOR_TAG=latest
168 KEYSTONEDB_TAG=10
169 OSM_DATABASE_COMMONKEY=
170 ELASTIC_VERSION=6.4.2
171 ELASTIC_CURATOR_VERSION=5.5.4
172 POD_NETWORK_CIDR=10.244.0.0/16
173 K8S_MANIFEST_DIR="/etc/kubernetes/manifests"
174 RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
175 DOCKER_REGISTRY_URL=
176 DOCKER_PROXY_URL=
177 MODULE_DOCKER_TAG=
178
179 while getopts ":a:b:r:n:k:u:R:D:o:O:m:N:H:S:s:t:U:P:A:l:L:K:d:p:T:f:F:-: hy" o; do
180 case "${o}" in
181 a)
182 APT_PROXY_URL=${OPTARG}
183 ;;
184 b)
185 COMMIT_ID=${OPTARG}
186 PULL_IMAGES=""
187 ;;
188 r)
189 REPOSITORY="${OPTARG}"
190 REPO_ARGS+=(-r "$REPOSITORY")
191 ;;
192 k)
193 REPOSITORY_KEY="${OPTARG}"
194 REPO_ARGS+=(-k "$REPOSITORY_KEY")
195 ;;
196 u)
197 REPOSITORY_BASE="${OPTARG}"
198 REPO_ARGS+=(-u "$REPOSITORY_BASE")
199 ;;
200 R)
201 RELEASE="${OPTARG}"
202 REPO_ARGS+=(-R "$RELEASE")
203 ;;
204 D)
205 OSM_DEVOPS="${OPTARG}"
206 ;;
207 o)
208 INSTALL_ONLY="y"
209 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
210 ;;
211 O)
212 INSTALL_TO_OPENSTACK="y"
213 if [ -n "${OPTARG}" ]; then
214 OPENSTACK_OPENRC_FILE_OR_CLOUD="${OPTARG}"
215 else
216 echo -e "Invalid argument for -O : ' $OPTARG'\n" >&2
217 usage && exit 1
218 fi
219 ;;
220 f)
221 OPENSTACK_SSH_KEY_FILE="${OPTARG}"
222 ;;
223 F)
224 OPENSTACK_USERDATA_FILE="${OPTARG}"
225 ;;
226 N)
227 OPENSTACK_PUBLIC_NET_NAME="${OPTARG}"
228 ;;
229 m)
230 [ "${OPTARG}" == "NG-UI" ] && TO_REBUILD="$TO_REBUILD NG-UI" && continue
231 [ "${OPTARG}" == "NBI" ] && TO_REBUILD="$TO_REBUILD NBI" && continue
232 [ "${OPTARG}" == "LCM" ] && TO_REBUILD="$TO_REBUILD LCM" && continue
233 [ "${OPTARG}" == "RO" ] && TO_REBUILD="$TO_REBUILD RO" && continue
234 [ "${OPTARG}" == "MON" ] && TO_REBUILD="$TO_REBUILD MON" && continue
235 [ "${OPTARG}" == "POL" ] && TO_REBUILD="$TO_REBUILD POL" && continue
236 [ "${OPTARG}" == "PLA" ] && TO_REBUILD="$TO_REBUILD PLA" && continue
237 [ "${OPTARG}" == "osmclient" ] && TO_REBUILD="$TO_REBUILD osmclient" && continue
238 [ "${OPTARG}" == "KAFKA" ] && TO_REBUILD="$TO_REBUILD KAFKA" && continue
239 [ "${OPTARG}" == "MONGO" ] && TO_REBUILD="$TO_REBUILD MONGO" && continue
240 [ "${OPTARG}" == "PROMETHEUS" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS" && continue
241 [ "${OPTARG}" == "PROMETHEUS-CADVISOR" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS-CADVISOR" && continue
242 [ "${OPTARG}" == "KEYSTONE-DB" ] && TO_REBUILD="$TO_REBUILD KEYSTONE-DB" && continue
243 [ "${OPTARG}" == "GRAFANA" ] && TO_REBUILD="$TO_REBUILD GRAFANA" && continue
244 [ "${OPTARG}" == "NONE" ] && TO_REBUILD="$TO_REBUILD NONE" && continue
245 ;;
246 H)
247 OSM_VCA_HOST="${OPTARG}"
248 ;;
249 S)
250 OSM_VCA_SECRET="${OPTARG}"
251 ;;
252 s)
253 OSM_STACK_NAME="${OPTARG}" && [[ ! "${OPTARG}" =~ $RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0
254 ;;
255 t)
256 OSM_DOCKER_TAG="${OPTARG}"
257 REPO_ARGS+=(-t "$OSM_DOCKER_TAG")
258 ;;
259 U)
260 DOCKER_USER="${OPTARG}"
261 ;;
262 P)
263 OSM_VCA_PUBKEY=$(cat ${OPTARG})
264 ;;
265 A)
266 OSM_VCA_APIPROXY="${OPTARG}"
267 ;;
268 l)
269 LXD_CLOUD_FILE="${OPTARG}"
270 ;;
271 L)
272 LXD_CRED_FILE="${OPTARG}"
273 ;;
274 K)
275 CONTROLLER_NAME="${OPTARG}"
276 ;;
277 d)
278 DOCKER_REGISTRY_URL="${OPTARG}"
279 ;;
280 p)
281 DOCKER_PROXY_URL="${OPTARG}"
282 ;;
283 T)
284 MODULE_DOCKER_TAG="${OPTARG}"
285 ;;
286 -)
287 [ "${OPTARG}" == "help" ] && usage && exit 0
288 [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE="y" && PULL_IMAGES="" && continue
289 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue
290 [ "${OPTARG}" == "develop" ] && DEVELOP="y" && continue
291 [ "${OPTARG}" == "uninstall" ] && UNINSTALL="y" && continue
292 [ "${OPTARG}" == "update" ] && UPDATE="y" && continue
293 [ "${OPTARG}" == "reconfigure" ] && RECONFIGURE="y" && continue
294 [ "${OPTARG}" == "test" ] && TEST_INSTALLER="y" && continue
295 [ "${OPTARG}" == "lxdinstall" ] && INSTALL_LXD="y" && continue
296 [ "${OPTARG}" == "nolxd" ] && INSTALL_NOLXD="y" && continue
297 [ "${OPTARG}" == "nodocker" ] && INSTALL_NODOCKER="y" && continue
298 [ "${OPTARG}" == "showopts" ] && SHOWOPTS="y" && continue
299 [ "${OPTARG}" == "nohostports" ] && NO_HOST_PORTS="y" && continue
300 [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU="--nojuju" && continue
301 [ "${OPTARG}" == "nodockerbuild" ] && DOCKER_NOBUILD="y" && continue
302 [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT="y" && continue
303 [ "${OPTARG}" == "pullimages" ] && continue
304 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
305 [ "${OPTARG}" == "charmed" ] && CHARMED="y" && continue
306 [ "${OPTARG}" == "bundle" ] && continue
307 [ "${OPTARG}" == "k8s" ] && continue
308 [ "${OPTARG}" == "lxd" ] && continue
309 [ "${OPTARG}" == "lxd-cred" ] && continue
310 [ "${OPTARG}" == "microstack" ] && continue
311 [ "${OPTARG}" == "overlay" ] && continue
312 [ "${OPTARG}" == "only-vca" ] && continue
313 [ "${OPTARG}" == "vca" ] && continue
314 [ "${OPTARG}" == "ha" ] && continue
315 [ "${OPTARG}" == "tag" ] && continue
316 [ "${OPTARG}" == "registry" ] && continue
317 [ "${OPTARG}" == "pla" ] && INSTALL_PLA="y" && continue
318 [ "${OPTARG}" == "volume" ] && OPENSTACK_ATTACH_VOLUME="true" && continue
319 [ "${OPTARG}" == "nocachelxdimages" ] && continue
320 [ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES="--cachelxdimages" && continue
321 echo -e "Invalid option: '--$OPTARG'\n" >&2
322 usage && exit 1
323 ;;
324 :)
325 echo "Option -$OPTARG requires an argument" >&2
326 usage && exit 1
327 ;;
328 \?)
329 echo -e "Invalid option: '-$OPTARG'\n" >&2
330 usage && exit 1
331 ;;
332 h)
333 usage && exit 0
334 ;;
335 y)
336 ASSUME_YES="y"
337 ;;
338 *)
339 usage && exit 1
340 ;;
341 esac
342 done
343
344 source $OSM_DEVOPS/common/all_funcs
345
346 uninstall_osm
347