| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 1 | #! /bin/bash |
| tierno | d125caf | 2018-11-22 16:05:54 +0000 | [diff] [blame] | 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 |
| 12 | # implied. |
| 13 | # See the License for the specific language governing permissions and |
| 14 | # limitations under the License. |
| 15 | |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 16 | # author: Alfonso Tierno |
| 17 | # Script that uses the test NBI URL to clean database. See usage |
| 18 | |
| 19 | |
| 20 | function usage(){ |
| 21 | echo -e "usage: $0 [OPTIONS]" |
| 22 | echo -e "TEST NBI API is used to clean database content, except user admin. Useful for testing." |
| 23 | echo -e "NOTE: database is cleaned but not the content of other modules as RO or VCA that must be cleaned manually." |
| 24 | echo -e " OPTIONS" |
| 25 | echo -e " -h --help: show this help" |
| 26 | echo -e " -f --force: Do not ask for confirmation" |
| tierno | b24258a | 2018-10-04 18:39:49 +0200 | [diff] [blame] | 27 | echo -e " --completely: It cleans also user admin. NBI will need to be restarted to init database" |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 28 | echo -e " --clean-RO: clean RO content. RO client (openmano) must be installed and configured" |
| 29 | echo -e " --clean-VCA: clean VCA content. juju must be installed and configured" |
| 30 | echo -e " ENV variable 'OSMNBI_URL' is used for the URL of the NBI server. If missing, it uses" \ |
| 31 | "'https://\$OSM_HOSTNAME:9999/osm'. If 'OSM_HOSTNAME' is missing, localhost is used" |
| 32 | } |
| 33 | |
| 34 | |
| 35 | function ask_user(){ |
| 36 | # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive. |
| 37 | # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed. |
| 38 | # Return: true(0) if user type 'yes'; false (1) if user type 'no' |
| 39 | read -e -p "$1" USER_CONFIRMATION |
| 40 | while true ; do |
| 41 | [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0 |
| 42 | [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1 |
| 43 | [ "${USER_CONFIRMATION,,}" == "yes" ] || [ "${USER_CONFIRMATION,,}" == "y" ] && return 0 |
| 44 | [ "${USER_CONFIRMATION,,}" == "no" ] || [ "${USER_CONFIRMATION,,}" == "n" ] && return 1 |
| 45 | read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION |
| 46 | done |
| 47 | } |
| 48 | |
| 49 | |
| 50 | while [ -n "$1" ] |
| 51 | do |
| 52 | option="$1" |
| 53 | shift |
| 54 | ( [ "$option" == -h ] || [ "$option" == --help ] ) && usage && exit |
| 55 | ( [ "$option" == -f ] || [ "$option" == --force ] ) && OSMNBI_CLEAN_FORCE=yes && continue |
| tierno | b24258a | 2018-10-04 18:39:49 +0200 | [diff] [blame] | 56 | [ "$option" == --completely ] && OSMNBI_COMPLETELY=yes && continue |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 57 | [ "$option" == --clean-RO ] && OSMNBI_CLEAN_RO=yes && continue |
| 58 | [ "$option" == --clean-VCA ] && OSMNBI_CLEAN_VCA=yes && continue |
| 59 | echo "Unknown option '$option'. Type $0 --help" 2>&1 && exit 1 |
| 60 | done |
| 61 | |
| 62 | |
| 63 | [ -n "$OSMNBI_CLEAN_FORCE" ] || ask_user "Clean database content (y/N)?" n || exit |
| 64 | [ -z "$OSM_HOSTNAME" ] && OSM_HOSTNAME=localhost |
| 65 | [ -z "$OSMNBI_URL" ] && OSMNBI_URL="https://${OSM_HOSTNAME}:9999/osm" |
| 66 | |
| 67 | if [ -n "$OSMNBI_CLEAN_RO" ] |
| 68 | then |
| 69 | export OPENMANO_TENANT=osm |
| 70 | for dc in `openmano datacenter-list | awk '{print $1}'` |
| 71 | do |
| 72 | export OPENMANO_DATACENTER=$dc |
| 73 | for i in instance-scenario scenario vnf |
| 74 | do |
| 75 | for f in `openmano $i-list | awk '{print $1}'` |
| 76 | do |
| 77 | [[ -n "$f" ]] && [[ "$f" != No ]] && openmano ${i}-delete -f ${f} |
| 78 | done |
| 79 | done |
| 80 | done |
| 81 | fi |
| 82 | |
| tierno | 55ba2e6 | 2018-12-11 17:22:22 +0000 | [diff] [blame] | 83 | for item in vim_accounts wim_accounts sdns nsrs vnfrs nslcmops nsds vnfds projects pdus nsts nsis nsilcmops # vims |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 84 | do |
| 85 | curl --insecure ${OSMNBI_URL}/test/db-clear/${item} |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 86 | done |
| tierno | f717cbe | 2018-12-03 16:35:42 +0000 | [diff] [blame] | 87 | curl --insecure ${OSMNBI_URL}/test/fs-clear |
| tierno | b24258a | 2018-10-04 18:39:49 +0200 | [diff] [blame] | 88 | if [ -n "$OSMNBI_COMPLETELY" ] ; then |
| tierno | f717cbe | 2018-12-03 16:35:42 +0000 | [diff] [blame] | 89 | curl --insecure ${OSMNBI_URL}/test/db-clear/users |
| 90 | curl --insecure ${OSMNBI_URL}/test/db-clear/admin |
| tierno | b24258a | 2018-10-04 18:39:49 +0200 | [diff] [blame] | 91 | else |
| 92 | # delete all users except admin |
| 93 | curl --insecure ${OSMNBI_URL}/test/db-clear/users?username.ne=admin |
| 94 | fi |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 95 | |
| 96 | if [ -n "$OSMNBI_CLEAN_RO" ] |
| 97 | then |
| 98 | for dc in `openmano datacenter-list | awk '{print $1}'` ; do openmano datacenter-detach $dc ; done |
| 99 | for dc in `openmano datacenter-list --all | awk '{print $1}'` ; do openmano datacenter-delete -f $dc ; done |
| 100 | for dc in `openmano sdn-controller-list | awk '{print $1}'` ; do openmano sdn-controller-delete -f $dc ; done |
| tierno | 55ba2e6 | 2018-12-11 17:22:22 +0000 | [diff] [blame] | 101 | for dc in `openmano wim-list | awk '{print $1}'` ; do openmano wim-detach $dc ; done |
| 102 | for dc in `openmano wim-list --all | awk '{print $1}'` ; do openmano wim-delete -f $dc ; done |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 103 | fi |
| 104 | |
| 105 | if [ -n "$OSMNBI_CLEAN_VCA" ] |
| 106 | then |
| tierno | 3b438be | 2019-05-31 13:41:31 +0000 | [diff] [blame^] | 107 | for juju_model in `juju models | grep lxd | grep -v controller | grep -v default | awk '{print$1}'` |
| 108 | do |
| 109 | echo |
| 110 | echo juju destroy-model $juju_model |
| 111 | juju destroy-model -y $juju_model |
| 112 | done |
| 113 | # juju destroy-model -y default |
| 114 | # juju add-model default |
| tierno | cd54a4a | 2018-09-12 16:40:35 +0200 | [diff] [blame] | 115 | fi |