blob: a57c60f520aaf8c0244718de53d832e3ea8c440d [file] [log] [blame]
garciadeblas0bc87522021-10-20 22:16:17 +02001#!/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
17function 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
23function 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
garciadeblas0bc87522021-10-20 22:16:17 +020031function uninstall_k8s_monitoring() {
32 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
33 # uninstall OSM monitoring
34 sudo $OSM_DEVOPS/installers/k8s/uninstall_osm_k8s_monitoring.sh
35 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
36}
37
38#Uninstall osmclient
39function uninstall_osmclient() {
40 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
41 sudo apt-get remove --purge -y python3-osmclient
42 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
43}
44
45#Uninstall OSM: remove deployments and services
46function uninstall_osm() {
47 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
48 echo -e "\nUninstalling OSM"
49 if [ -n "$INSTALL_K8S_MONITOR" ]; then
50 # uninstall OSM MONITORING
51 uninstall_k8s_monitoring
52 fi
garciadeblas325032a2023-04-13 18:07:44 +020053 remove_k8s_namespace $OSM_NAMESPACE
garciadeblas0bc87522021-10-20 22:16:17 +020054 echo "Now osm docker images and volumes will be deleted"
55 # TODO: clean-up of images should take into account if other tags were used for specific modules
56 newgrp docker << EONG
khelifi81a1a222025-04-28 09:35:51 +010057for module in ro lcm keystone nbi mon osmclient; do
garciadeblas0bc87522021-10-20 22:16:17 +020058 docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/${module}:${OSM_DOCKER_TAG}
59done
60EONG
61
62 sg docker -c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
63
garciadeblas325032a2023-04-13 18:07:44 +020064 OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
garciadeblas0bc87522021-10-20 22:16:17 +020065 remove_volumes $OSM_NAMESPACE_VOL
66
garciadeblas325032a2023-04-13 18:07:44 +020067 [ -z "$CONTROLLER_NAME" ] && sg lxd -c "juju kill-controller -t 0 -y $OSM_NAMESPACE"
garciadeblas0bc87522021-10-20 22:16:17 +020068
garciadeblas0bc87522021-10-20 22:16:17 +020069 # Cleanup Openstack installer venv
70 if [ -d "$OPENSTACK_PYTHON_VENV" ]; then
71 rm -r $OPENSTACK_PYTHON_VENV
72 fi
73
74 [ -z "$INSTALL_NOHOSTCLIENT" ] && uninstall_osmclient
75 echo "Some docker images will be kept in case they are used by other docker stacks"
76 echo "To remove them, just run 'docker image prune' in a terminal"
77 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
78 return 0
79}
80
81function ask_user(){
82 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of function
83 # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive
84 # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed
85 # Return: true(0) if user type 'yes'; false (1) if user type 'no'
86 read -e -p "$1" USER_CONFIRMATION
87 while true ; do
88 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
89 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
90 [ "${USER_CONFIRMATION,,}" == "yes" ] || [ "${USER_CONFIRMATION,,}" == "y" ] && return 0
91 [ "${USER_CONFIRMATION,,}" == "no" ] || [ "${USER_CONFIRMATION,,}" == "n" ] && return 1
92 read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
93 done
94 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of function
95}
96
97LXD_VERSION=4.0
98JUJU_VERSION=2.9
99UNINSTALL=""
100DEVELOP=""
101UPDATE=""
102RECONFIGURE=""
103TEST_INSTALLER=""
104INSTALL_LXD=""
105SHOWOPTS=""
106COMMIT_ID=""
107ASSUME_YES=""
108APT_PROXY_URL=""
109INSTALL_FROM_SOURCE=""
110DEBUG_INSTALL=""
111RELEASE="ReleaseTEN"
112REPOSITORY="stable"
113INSTALL_VIMEMU=""
garciadeblas0bc87522021-10-20 22:16:17 +0200114LXD_REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/lxd"
115LXD_REPOSITORY_PATH=""
116INSTALL_LIGHTWEIGHT="y"
117INSTALL_TO_OPENSTACK=""
118OPENSTACK_OPENRC_FILE_OR_CLOUD=""
119OPENSTACK_PUBLIC_NET_NAME=""
120OPENSTACK_ATTACH_VOLUME="false"
121OPENSTACK_SSH_KEY_FILE=""
122OPENSTACK_USERDATA_FILE=""
123OPENSTACK_VM_NAME="server-osm"
124OPENSTACK_PYTHON_VENV="$HOME/.virtual-envs/osm"
125INSTALL_ONLY=""
126TO_REBUILD=""
127INSTALL_NOLXD=""
128INSTALL_NODOCKER=""
129INSTALL_NOJUJU=""
130INSTALL_K8S_MONITOR=""
131INSTALL_NOHOSTCLIENT=""
132INSTALL_CACHELXDIMAGES=""
133OSM_DEVOPS=
134OSM_VCA_HOST=
135OSM_VCA_SECRET=
136OSM_VCA_PUBKEY=
137OSM_VCA_CLOUDNAME="localhost"
138OSM_VCA_K8S_CLOUDNAME="k8scloud"
garciadeblas325032a2023-04-13 18:07:44 +0200139OSM_NAMESPACE=osm
garciadeblas0bc87522021-10-20 22:16:17 +0200140NO_HOST_PORTS=""
141DOCKER_NOBUILD=""
142REPOSITORY_KEY="OSM%20ETSI%20Release%20Key.gpg"
143REPOSITORY_BASE="https://osm-download.etsi.org/repository/osm/debian"
144OSM_WORK_DIR="/etc/osm"
garciadeblas0bc87522021-10-20 22:16:17 +0200145OSM_HOST_VOL="/var/lib/osm"
garciadeblas325032a2023-04-13 18:07:44 +0200146OSM_NAMESPACE_VOL="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
garciadeblas0bc87522021-10-20 22:16:17 +0200147OSM_DOCKER_TAG=latest
148DOCKER_USER=opensourcemano
149PULL_IMAGES="y"
150KAFKA_TAG=2.11-1.0.2
151PROMETHEUS_TAG=v2.4.3
152GRAFANA_TAG=latest
153PROMETHEUS_NODE_EXPORTER_TAG=0.18.1
154PROMETHEUS_CADVISOR_TAG=latest
155KEYSTONEDB_TAG=10
156OSM_DATABASE_COMMONKEY=
157ELASTIC_VERSION=6.4.2
158ELASTIC_CURATOR_VERSION=5.5.4
159POD_NETWORK_CIDR=10.244.0.0/16
160K8S_MANIFEST_DIR="/etc/kubernetes/manifests"
161RE_CHECK='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
162DOCKER_REGISTRY_URL=
163DOCKER_PROXY_URL=
164MODULE_DOCKER_TAG=
165
166while 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
167 case "${o}" in
168 a)
169 APT_PROXY_URL=${OPTARG}
170 ;;
171 b)
172 COMMIT_ID=${OPTARG}
173 PULL_IMAGES=""
174 ;;
175 r)
176 REPOSITORY="${OPTARG}"
177 REPO_ARGS+=(-r "$REPOSITORY")
178 ;;
179 k)
180 REPOSITORY_KEY="${OPTARG}"
181 REPO_ARGS+=(-k "$REPOSITORY_KEY")
182 ;;
183 u)
184 REPOSITORY_BASE="${OPTARG}"
185 REPO_ARGS+=(-u "$REPOSITORY_BASE")
186 ;;
187 R)
188 RELEASE="${OPTARG}"
189 REPO_ARGS+=(-R "$RELEASE")
190 ;;
191 D)
192 OSM_DEVOPS="${OPTARG}"
193 ;;
194 o)
195 INSTALL_ONLY="y"
196 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
197 ;;
198 O)
199 INSTALL_TO_OPENSTACK="y"
200 if [ -n "${OPTARG}" ]; then
201 OPENSTACK_OPENRC_FILE_OR_CLOUD="${OPTARG}"
202 else
203 echo -e "Invalid argument for -O : ' $OPTARG'\n" >&2
204 usage && exit 1
205 fi
206 ;;
207 f)
208 OPENSTACK_SSH_KEY_FILE="${OPTARG}"
209 ;;
210 F)
211 OPENSTACK_USERDATA_FILE="${OPTARG}"
212 ;;
213 N)
214 OPENSTACK_PUBLIC_NET_NAME="${OPTARG}"
215 ;;
216 m)
217 [ "${OPTARG}" == "NG-UI" ] && TO_REBUILD="$TO_REBUILD NG-UI" && continue
218 [ "${OPTARG}" == "NBI" ] && TO_REBUILD="$TO_REBUILD NBI" && continue
219 [ "${OPTARG}" == "LCM" ] && TO_REBUILD="$TO_REBUILD LCM" && continue
220 [ "${OPTARG}" == "RO" ] && TO_REBUILD="$TO_REBUILD RO" && continue
221 [ "${OPTARG}" == "MON" ] && TO_REBUILD="$TO_REBUILD MON" && continue
garciadeblas0bc87522021-10-20 22:16:17 +0200222 [ "${OPTARG}" == "osmclient" ] && TO_REBUILD="$TO_REBUILD osmclient" && continue
223 [ "${OPTARG}" == "KAFKA" ] && TO_REBUILD="$TO_REBUILD KAFKA" && continue
224 [ "${OPTARG}" == "MONGO" ] && TO_REBUILD="$TO_REBUILD MONGO" && continue
225 [ "${OPTARG}" == "PROMETHEUS" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS" && continue
226 [ "${OPTARG}" == "PROMETHEUS-CADVISOR" ] && TO_REBUILD="$TO_REBUILD PROMETHEUS-CADVISOR" && continue
227 [ "${OPTARG}" == "KEYSTONE-DB" ] && TO_REBUILD="$TO_REBUILD KEYSTONE-DB" && continue
228 [ "${OPTARG}" == "GRAFANA" ] && TO_REBUILD="$TO_REBUILD GRAFANA" && continue
229 [ "${OPTARG}" == "NONE" ] && TO_REBUILD="$TO_REBUILD NONE" && continue
230 ;;
231 H)
232 OSM_VCA_HOST="${OPTARG}"
233 ;;
234 S)
235 OSM_VCA_SECRET="${OPTARG}"
236 ;;
237 s)
garciadeblas325032a2023-04-13 18:07:44 +0200238 OSM_NAMESPACE="${OPTARG}" && [[ ! "${OPTARG}" =~ $RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0
garciadeblas0bc87522021-10-20 22:16:17 +0200239 ;;
240 t)
241 OSM_DOCKER_TAG="${OPTARG}"
242 REPO_ARGS+=(-t "$OSM_DOCKER_TAG")
243 ;;
244 U)
245 DOCKER_USER="${OPTARG}"
246 ;;
247 P)
248 OSM_VCA_PUBKEY=$(cat ${OPTARG})
249 ;;
250 A)
251 OSM_VCA_APIPROXY="${OPTARG}"
252 ;;
253 l)
254 LXD_CLOUD_FILE="${OPTARG}"
255 ;;
256 L)
257 LXD_CRED_FILE="${OPTARG}"
258 ;;
259 K)
260 CONTROLLER_NAME="${OPTARG}"
261 ;;
262 d)
263 DOCKER_REGISTRY_URL="${OPTARG}"
264 ;;
265 p)
266 DOCKER_PROXY_URL="${OPTARG}"
267 ;;
268 T)
269 MODULE_DOCKER_TAG="${OPTARG}"
270 ;;
271 -)
272 [ "${OPTARG}" == "help" ] && usage && exit 0
273 [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE="y" && PULL_IMAGES="" && continue
274 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL="--debug" && continue
275 [ "${OPTARG}" == "develop" ] && DEVELOP="y" && continue
276 [ "${OPTARG}" == "uninstall" ] && UNINSTALL="y" && continue
277 [ "${OPTARG}" == "update" ] && UPDATE="y" && continue
278 [ "${OPTARG}" == "reconfigure" ] && RECONFIGURE="y" && continue
279 [ "${OPTARG}" == "test" ] && TEST_INSTALLER="y" && continue
280 [ "${OPTARG}" == "lxdinstall" ] && INSTALL_LXD="y" && continue
281 [ "${OPTARG}" == "nolxd" ] && INSTALL_NOLXD="y" && continue
282 [ "${OPTARG}" == "nodocker" ] && INSTALL_NODOCKER="y" && continue
283 [ "${OPTARG}" == "showopts" ] && SHOWOPTS="y" && continue
284 [ "${OPTARG}" == "nohostports" ] && NO_HOST_PORTS="y" && continue
285 [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU="--nojuju" && continue
286 [ "${OPTARG}" == "nodockerbuild" ] && DOCKER_NOBUILD="y" && continue
287 [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT="y" && continue
288 [ "${OPTARG}" == "pullimages" ] && continue
289 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR="y" && continue
290 [ "${OPTARG}" == "charmed" ] && CHARMED="y" && continue
291 [ "${OPTARG}" == "bundle" ] && continue
292 [ "${OPTARG}" == "k8s" ] && continue
293 [ "${OPTARG}" == "lxd" ] && continue
294 [ "${OPTARG}" == "lxd-cred" ] && continue
295 [ "${OPTARG}" == "microstack" ] && continue
296 [ "${OPTARG}" == "overlay" ] && continue
297 [ "${OPTARG}" == "only-vca" ] && continue
298 [ "${OPTARG}" == "vca" ] && continue
299 [ "${OPTARG}" == "ha" ] && continue
300 [ "${OPTARG}" == "tag" ] && continue
301 [ "${OPTARG}" == "registry" ] && continue
garciadeblas0bc87522021-10-20 22:16:17 +0200302 [ "${OPTARG}" == "volume" ] && OPENSTACK_ATTACH_VOLUME="true" && continue
303 [ "${OPTARG}" == "nocachelxdimages" ] && continue
304 [ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES="--cachelxdimages" && continue
305 echo -e "Invalid option: '--$OPTARG'\n" >&2
306 usage && exit 1
307 ;;
308 :)
309 echo "Option -$OPTARG requires an argument" >&2
310 usage && exit 1
311 ;;
312 \?)
313 echo -e "Invalid option: '-$OPTARG'\n" >&2
314 usage && exit 1
315 ;;
316 h)
317 usage && exit 0
318 ;;
319 y)
320 ASSUME_YES="y"
321 ;;
322 *)
323 usage && exit 1
324 ;;
325 esac
326done
327
328source $OSM_DEVOPS/common/all_funcs
329
330uninstall_osm
331