2 # author: Alfonso Tierno
3 # Script that uses the test NBI URL to clean database. See usage
7 echo -e "usage: $0 [OPTIONS]"
8 echo -e "TEST NBI API is used to clean database content, except user admin. Useful for testing."
9 echo -e "NOTE: database is cleaned but not the content of other modules as RO or VCA that must be cleaned manually."
11 echo -e " -h --help: show this help"
12 echo -e " -f --force: Do not ask for confirmation"
13 echo -e " --completely: It cleans also user admin. NBI will need to be restarted to init database"
14 echo -e " --clean-RO: clean RO content. RO client (openmano) must be installed and configured"
15 echo -e " --clean-VCA: clean VCA content. juju must be installed and configured"
16 echo -e " ENV variable 'OSMNBI_URL' is used for the URL of the NBI server. If missing, it uses" \
17 "'https://\$OSM_HOSTNAME:9999/osm'. If 'OSM_HOSTNAME' is missing, localhost is used"
22 # ask to the user and parse a response among 'y', 'yes', 'n' or 'no'. Case insensitive.
23 # Params: $1 text to ask; $2 Action by default, can be 'y' for yes, 'n' for no, other or empty for not allowed.
24 # Return: true(0) if user type 'yes'; false (1) if user type 'no'
25 read -e -p "$1" USER_CONFIRMATION
27 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'y' ] && return 0
28 [ -z "$USER_CONFIRMATION" ] && [ "$2" == 'n' ] && return 1
29 [ "${USER_CONFIRMATION,,}" == "yes" ] ||
[ "${USER_CONFIRMATION,,}" == "y" ] && return 0
30 [ "${USER_CONFIRMATION,,}" == "no" ] ||
[ "${USER_CONFIRMATION,,}" == "n" ] && return 1
31 read -e -p "Please type 'yes' or 'no': " USER_CONFIRMATION
40 ( [ "$option" == -h ] ||
[ "$option" == --help ] ) && usage
&& exit
41 ( [ "$option" == -f ] ||
[ "$option" == --force ] ) && OSMNBI_CLEAN_FORCE
=yes && continue
42 [ "$option" == --completely ] && OSMNBI_COMPLETELY
=yes && continue
43 [ "$option" == --clean-RO ] && OSMNBI_CLEAN_RO
=yes && continue
44 [ "$option" == --clean-VCA ] && OSMNBI_CLEAN_VCA
=yes && continue
45 echo "Unknown option '$option'. Type $0 --help" 2>&1 && exit 1
49 [ -n "$OSMNBI_CLEAN_FORCE" ] || ask_user
"Clean database content (y/N)?" n ||
exit
50 [ -z "$OSM_HOSTNAME" ] && OSM_HOSTNAME
=localhost
51 [ -z "$OSMNBI_URL" ] && OSMNBI_URL
="https://${OSM_HOSTNAME}:9999/osm"
53 if [ -n "$OSMNBI_CLEAN_RO" ]
55 export OPENMANO_TENANT
=osm
56 for dc in `openmano datacenter-list | awk '{print $1}'`
58 export OPENMANO_DATACENTER
=$dc
59 for i
in instance-scenario scenario vnf
61 for f
in `openmano $i-list | awk '{print $1}'`
63 [[ -n "$f" ]] && [[ "$f" != No
]] && openmano
${i}-delete -f ${f}
69 for item
in vim_accounts sdns nsrs vnfrs nslcmops nsds vnfds projects pdus
# vims
71 curl
--insecure ${OSMNBI_URL}/test
/db-clear
/${item}
74 if [ -n "$OSMNBI_COMPLETELY" ] ; then
75 curl
--insecure ${OSMNBI_URL}/test
/db-clear
/users
&& echo " ${item}"
76 curl
--insecure ${OSMNBI_URL}/test
/db-clear
/version
&& echo " ${item}"
78 # delete all users except admin
79 curl
--insecure ${OSMNBI_URL}/test
/db-clear
/users?username.ne
=admin
82 if [ -n "$OSMNBI_CLEAN_RO" ]
84 for dc in `openmano datacenter-list | awk '{print $1}'` ; do openmano datacenter-detach
$dc ; done
85 for dc in `openmano datacenter-list --all | awk '{print $1}'` ; do openmano datacenter-delete
-f $dc ; done
86 for dc in `openmano sdn-controller-list | awk '{print $1}'` ; do openmano sdn-controller-delete
-f $dc ; done
89 if [ -n "$OSMNBI_CLEAN_VCA" ]
91 juju destroy-model
-y default
92 juju add-model default