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
7 # http://www.apache.org/licenses/LICENSE-2.0
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.
16 #removes osm deployments and services
17 function remove_k8s_namespace
() {
18 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
20 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
23 function remove_volumes
() {
24 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
26 echo "Removing ${k8_volume}"
27 sudo
rm -rf ${k8_volume}
28 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
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
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
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
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
59 remove_k8s_namespace
$OSM_NAMESPACE
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
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}
68 sg docker
-c "docker image rm ${DOCKER_REGISTRY_URL}${DOCKER_USER}/ng-ui:${OSM_DOCKER_TAG}"
70 OSM_NAMESPACE_VOL
="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
71 remove_volumes
$OSM_NAMESPACE_VOL
73 [ -z "$CONTROLLER_NAME" ] && sg lxd
-c "juju kill-controller -t 0 -y $OSM_NAMESPACE"
77 # Cleanup Openstack installer venv
78 if [ -d "$OPENSTACK_PYTHON_VENV" ]; then
79 rm -r $OPENSTACK_PYTHON_VENV
82 [ -z "$INSTALL_NOHOSTCLIENT" ] && uninstall_osmclient
83 echo "Some docker images will be kept in case they are used by other docker stacks"
84 echo "To remove them, just run 'docker image prune' in a terminal"
85 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
90 [ -z "${DEBUG_INSTALL}" ] || DEBUG beginning of
function
91 # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive
92 # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed
93 # Return: true(0) if user type 'yes'; false (1) if user type 'no'
94 read -e -p "$1" USER_CONFIRMATION
96 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
97 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
98 [ "${USER_CONFIRMATION,,}" == "yes" ] ||
[ "${USER_CONFIRMATION,,}" == "y" ] && return 0
99 [ "${USER_CONFIRMATION,,}" == "no" ] ||
[ "${USER_CONFIRMATION,,}" == "n" ] && return 1
100 read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
102 [ -z "${DEBUG_INSTALL}" ] || DEBUG end of
function
117 INSTALL_FROM_SOURCE
=""
123 LXD_REPOSITORY_BASE
="https://osm-download.etsi.org/repository/osm/lxd"
124 LXD_REPOSITORY_PATH
=""
125 INSTALL_LIGHTWEIGHT
="y"
126 INSTALL_TO_OPENSTACK
=""
127 OPENSTACK_OPENRC_FILE_OR_CLOUD
=""
128 OPENSTACK_PUBLIC_NET_NAME
=""
129 OPENSTACK_ATTACH_VOLUME
="false"
130 OPENSTACK_SSH_KEY_FILE
=""
131 OPENSTACK_USERDATA_FILE
=""
132 OPENSTACK_VM_NAME
="server-osm"
133 OPENSTACK_PYTHON_VENV
="$HOME/.virtual-envs/osm"
139 INSTALL_K8S_MONITOR
=""
140 INSTALL_NOHOSTCLIENT
=""
141 INSTALL_CACHELXDIMAGES
=""
146 OSM_VCA_CLOUDNAME
="localhost"
147 OSM_VCA_K8S_CLOUDNAME
="k8scloud"
151 REPOSITORY_KEY
="OSM%20ETSI%20Release%20Key.gpg"
152 REPOSITORY_BASE
="https://osm-download.etsi.org/repository/osm/debian"
153 OSM_WORK_DIR
="/etc/osm"
154 OSM_HOST_VOL
="/var/lib/osm"
155 OSM_NAMESPACE_VOL
="${OSM_HOST_VOL}/${OSM_NAMESPACE}"
156 OSM_DOCKER_TAG
=latest
157 DOCKER_USER
=opensourcemano
160 PROMETHEUS_TAG
=v2.4
.3
162 PROMETHEUS_NODE_EXPORTER_TAG
=0.18.1
163 PROMETHEUS_CADVISOR_TAG
=latest
165 OSM_DATABASE_COMMONKEY
=
166 ELASTIC_VERSION
=6.4.2
167 ELASTIC_CURATOR_VERSION
=5.5.4
168 POD_NETWORK_CIDR
=10.244.0.0/16
169 K8S_MANIFEST_DIR
="/etc/kubernetes/manifests"
170 RE_CHECK
='^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
175 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
178 APT_PROXY_URL
=${OPTARG}
185 REPOSITORY
="${OPTARG}"
186 REPO_ARGS
+=(-r "$REPOSITORY")
189 REPOSITORY_KEY
="${OPTARG}"
190 REPO_ARGS
+=(-k "$REPOSITORY_KEY")
193 REPOSITORY_BASE
="${OPTARG}"
194 REPO_ARGS
+=(-u "$REPOSITORY_BASE")
198 REPO_ARGS
+=(-R "$RELEASE")
201 OSM_DEVOPS
="${OPTARG}"
205 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR
="y" && continue
208 INSTALL_TO_OPENSTACK
="y"
209 if [ -n "${OPTARG}" ]; then
210 OPENSTACK_OPENRC_FILE_OR_CLOUD
="${OPTARG}"
212 echo -e "Invalid argument for -O : ' $OPTARG'\n" >&2
217 OPENSTACK_SSH_KEY_FILE
="${OPTARG}"
220 OPENSTACK_USERDATA_FILE
="${OPTARG}"
223 OPENSTACK_PUBLIC_NET_NAME
="${OPTARG}"
226 [ "${OPTARG}" == "NG-UI" ] && TO_REBUILD
="$TO_REBUILD NG-UI" && continue
227 [ "${OPTARG}" == "NBI" ] && TO_REBUILD
="$TO_REBUILD NBI" && continue
228 [ "${OPTARG}" == "LCM" ] && TO_REBUILD
="$TO_REBUILD LCM" && continue
229 [ "${OPTARG}" == "RO" ] && TO_REBUILD
="$TO_REBUILD RO" && continue
230 [ "${OPTARG}" == "MON" ] && TO_REBUILD
="$TO_REBUILD MON" && continue
231 [ "${OPTARG}" == "POL" ] && TO_REBUILD
="$TO_REBUILD POL" && continue
232 [ "${OPTARG}" == "PLA" ] && TO_REBUILD
="$TO_REBUILD PLA" && continue
233 [ "${OPTARG}" == "osmclient" ] && TO_REBUILD
="$TO_REBUILD osmclient" && continue
234 [ "${OPTARG}" == "KAFKA" ] && TO_REBUILD
="$TO_REBUILD KAFKA" && continue
235 [ "${OPTARG}" == "MONGO" ] && TO_REBUILD
="$TO_REBUILD MONGO" && continue
236 [ "${OPTARG}" == "PROMETHEUS" ] && TO_REBUILD
="$TO_REBUILD PROMETHEUS" && continue
237 [ "${OPTARG}" == "PROMETHEUS-CADVISOR" ] && TO_REBUILD
="$TO_REBUILD PROMETHEUS-CADVISOR" && continue
238 [ "${OPTARG}" == "KEYSTONE-DB" ] && TO_REBUILD
="$TO_REBUILD KEYSTONE-DB" && continue
239 [ "${OPTARG}" == "GRAFANA" ] && TO_REBUILD
="$TO_REBUILD GRAFANA" && continue
240 [ "${OPTARG}" == "NONE" ] && TO_REBUILD
="$TO_REBUILD NONE" && continue
243 OSM_VCA_HOST
="${OPTARG}"
246 OSM_VCA_SECRET
="${OPTARG}"
249 OSM_NAMESPACE
="${OPTARG}" && [[ ! "${OPTARG}" =~
$RE_CHECK ]] && echo "Namespace $OPTARG is invalid. Regex used for validation is $RE_CHECK" && exit 0
252 OSM_DOCKER_TAG
="${OPTARG}"
253 REPO_ARGS
+=(-t "$OSM_DOCKER_TAG")
256 DOCKER_USER
="${OPTARG}"
259 OSM_VCA_PUBKEY
=$
(cat ${OPTARG})
262 OSM_VCA_APIPROXY
="${OPTARG}"
265 LXD_CLOUD_FILE
="${OPTARG}"
268 LXD_CRED_FILE
="${OPTARG}"
271 CONTROLLER_NAME
="${OPTARG}"
274 DOCKER_REGISTRY_URL
="${OPTARG}"
277 DOCKER_PROXY_URL
="${OPTARG}"
280 MODULE_DOCKER_TAG
="${OPTARG}"
283 [ "${OPTARG}" == "help" ] && usage
&& exit 0
284 [ "${OPTARG}" == "source" ] && INSTALL_FROM_SOURCE
="y" && PULL_IMAGES
="" && continue
285 [ "${OPTARG}" == "debug" ] && DEBUG_INSTALL
="--debug" && continue
286 [ "${OPTARG}" == "develop" ] && DEVELOP
="y" && continue
287 [ "${OPTARG}" == "uninstall" ] && UNINSTALL
="y" && continue
288 [ "${OPTARG}" == "update" ] && UPDATE
="y" && continue
289 [ "${OPTARG}" == "reconfigure" ] && RECONFIGURE
="y" && continue
290 [ "${OPTARG}" == "test" ] && TEST_INSTALLER
="y" && continue
291 [ "${OPTARG}" == "lxdinstall" ] && INSTALL_LXD
="y" && continue
292 [ "${OPTARG}" == "nolxd" ] && INSTALL_NOLXD
="y" && continue
293 [ "${OPTARG}" == "nodocker" ] && INSTALL_NODOCKER
="y" && continue
294 [ "${OPTARG}" == "showopts" ] && SHOWOPTS
="y" && continue
295 [ "${OPTARG}" == "nohostports" ] && NO_HOST_PORTS
="y" && continue
296 [ "${OPTARG}" == "nojuju" ] && INSTALL_NOJUJU
="--nojuju" && continue
297 [ "${OPTARG}" == "nodockerbuild" ] && DOCKER_NOBUILD
="y" && continue
298 [ "${OPTARG}" == "nohostclient" ] && INSTALL_NOHOSTCLIENT
="y" && continue
299 [ "${OPTARG}" == "pullimages" ] && continue
300 [ "${OPTARG}" == "k8s_monitor" ] && INSTALL_K8S_MONITOR
="y" && continue
301 [ "${OPTARG}" == "charmed" ] && CHARMED
="y" && continue
302 [ "${OPTARG}" == "bundle" ] && continue
303 [ "${OPTARG}" == "k8s" ] && continue
304 [ "${OPTARG}" == "lxd" ] && continue
305 [ "${OPTARG}" == "lxd-cred" ] && continue
306 [ "${OPTARG}" == "microstack" ] && continue
307 [ "${OPTARG}" == "overlay" ] && continue
308 [ "${OPTARG}" == "only-vca" ] && continue
309 [ "${OPTARG}" == "vca" ] && continue
310 [ "${OPTARG}" == "ha" ] && continue
311 [ "${OPTARG}" == "tag" ] && continue
312 [ "${OPTARG}" == "registry" ] && continue
313 [ "${OPTARG}" == "pla" ] && INSTALL_PLA
="y" && continue
314 [ "${OPTARG}" == "volume" ] && OPENSTACK_ATTACH_VOLUME
="true" && continue
315 [ "${OPTARG}" == "nocachelxdimages" ] && continue
316 [ "${OPTARG}" == "cachelxdimages" ] && INSTALL_CACHELXDIMAGES
="--cachelxdimages" && continue
317 echo -e "Invalid option: '--$OPTARG'\n" >&2
321 echo "Option -$OPTARG requires an argument" >&2
325 echo -e "Invalid option: '-$OPTARG'\n" >&2
340 source $OSM_DEVOPS/common
/all_funcs