4 # Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U.
5 # This file is part of openvim
8 # Licensed under the Apache License, Version 2.0 (the "License"); you may
9 # not use this file except in compliance with the License. You may obtain
10 # a copy of the License at
12 # http://www.apache.org/licenses/LICENSE-2.0
14 # Unless required by applicable law or agreed to in writing, software
15 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
17 # License for the specific language governing permissions and limitations
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact with: nfvlabs@tid.es
24 #This script can be used as a basic test of openvim
26 #WARNING: It destroy the database content
28 DIRNAME
=$
(readlink
-f ${BASH_SOURCE[0]})
29 DIRNAME
=$
(dirname $DIRNAME )
32 echo -e "usage: ${BASH_SOURCE[0]} [OPTIONS] <action>\n Deletes openvim content and add fake hosts, networks"
33 echo -e " <action> is a list of the following items (by default 'reset create')"
34 echo -e " reset reset the openvim database content"
35 echo -e " create creates fake hosts and networks"
36 echo -e " delete delete created items"
37 echo -e " delete-all delete vms. flavors, images, ..."
39 echo -e " -f --force : does not prompt for confirmation"
40 echo -e " -d --delete : same to action delete-all"
41 echo -e " -p --port PORT : port to start openvim service"
42 echo -e " -P --admin-port PORT : administrator port to start openvim service"
43 echo -e " --screen-name NAME : screen name to launch openvim (default vim)"
44 echo -e " --dbname NAME : database name to use (default vim_db)"
45 echo -e " --insert-bashrc insert the created tenant variables at"
46 echo -e " ~/.bashrc to be available by openvim CLI"
47 echo -e " -h --help : shows this help"
50 function is_valid_uuid
(){
51 echo "$1" |
grep -q -E '^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$' && return 0
56 #detect if is called with a source to use the 'exit'/'return' command for exiting
57 [[ ${BASH_SOURCE[0]} != $0 ]] && _exit
="return" || _exit
="exit"
61 source ${DIRNAME}/get-options.sh \
62 "force:f delete:d delete-all port:p= admin-port:P= screen-name= help:h dbname= insert-bashrc" $
* ||
$_exit 1
64 #check correct arguments
68 if [[ "$param" == reset ]] ||
[[ "$param" == create
]] ||
[[ "$param" == delete
]] ||
[[ "$param" == delete-all
]]
70 action_list
="$action_list $param"
73 echo "invalid argument '$param'? Type -h for help" >&2 && $_exit 1
78 [[ -n "$option_help" ]] && usage
&& $_exit 0
80 #check numeric values for port
81 [[ -n "$option_port" ]] && ( [[ "$option_port" -lt 1 ]] ||
[[ "$option_port" -gt 65535 ]] ) && echo "Option '-p' or '--port' requires a valid numeric argument" >&2 && $_exit 1
82 [[ -n "$option_admin_port" ]] && ( [[ "$option_admin_port" -lt 1 ]] ||
[[ "$option_admin_port" -gt 65535 ]] ) && echo "Option '-P' or '--admin-port' requieres a valid numeric argument" >&2 && $_exit 1
84 [[ -n "$option_screen_name" ]] && screen_name
="$option_screen_name" && screen_name_param
=" --screen-name $screen_name"
85 [[ -z "$option_screen_name" ]] && screen_name
=vim
&& screen_name_param
="" #default value
87 [[ -n "$option_delete" ]] && action_list
="delete-all $action_list"
90 [[ -n "$option_port" ]] && openvim_param
="$openvim_param -p $option_port"
91 [[ -n "$option_admin_port" ]] && openvim_param
="$openvim_param -P $option_admin_port"
92 [[ -n "$option_dbname" ]] && openvim_param
="$openvim_param --dbname $option_dbname"
93 [[ $openvim_param = " --" ]] && openvim_param
=""
94 db_name
=vim_db
#default value
95 [[ -n "$option_dbname" ]] && db_name
="$option_dbname"
97 DIRNAME
=$
(dirname $
(readlink
-f ${BASH_SOURCE[0]}))
98 DIRvim
=$
(dirname $DIRNAME)
99 export OPENVIM_HOST
=localhost
100 [[ -n "$option_port" ]] && export OPENVIM_PORT
=$option_port
101 [[ -n "$option_admin_port" ]] && export OPENVIM_ADMIN_PORT
=$option_admin_port
103 [[ -n "$option_insert_bashrc" ]] && echo -e "\nexport OPENVIM_HOST=localhost" >> ~
/.bashrc
104 [[ -n "$option_insert_bashrc" ]] && echo -e "\nexport OPENVIM_PORT=9080" >> ~
/.bashrc
105 #by default action should be reset and create
106 [[ -z "$action_list" ]] && action_list
="reset create"
109 for action
in $action_list
111 if [[ $action == "reset" ]]
113 #ask for confirmation if argument is not -f --force
115 [[ -z "$option_force" ]] && read -e -p "WARNING: openvim database content will be lost!!! Continue(y/N)" force_
116 [[ $force_ != y
]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
117 echo "deleting deployed vm"
118 ${DIRvim}/openvim vm-delete
-f |
grep -q deleted
&& sleep 10 #give some time to get virtual machines deleted
119 echo "Stopping openvim${screen_name_param}${openvim_param}"
120 $DIRNAME/service-openvim stop
${screen_name_param}${openvim_param}
121 echo "Initializing databases $db_name"
122 $DIRvim/database_utils
/init_vim_db.sh
-u vim
-p vimpw
-d $db_name
123 echo "Starting openvim${screen_name_param}${openvim_param}"
124 $DIRNAME/service-openvim start
${screen_name_param}${openvim_param}
126 elif [[ $action == delete-all
]]
128 for t
in `${DIRvim}/openvim tenant-list | awk '/^ *[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12} +/{printf("%s:%s",$1,$2)}'`
132 [[ -z $t_id ]] && continue
133 export OPENVIM_TENANT
=${t_id}
134 for what
in vm image flavor port net
136 items
=`${DIRvim}/openvim $what-list | awk '/^ *[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12} +/{print $1}'`
139 [[ $option_force == "-" ]] && echo deleting openvim
${what}s from tenant
${t_name}
140 [[ $option_force != "-" ]] && read -e -p "Delete openvim ${what}s from tenant ${t_name}?(y/N) " force_
141 [[ $force_ != y
]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
145 ${DIRvim}/openvim
$what-delete -f $item ||
! echo "fail" >&2 ||
$_exit 1
149 ${DIRvim}/openvim tenant-delete
-f $t_id ||
! echo "fail" >&2 ||
$_exit 1
152 items
=`${DIRvim}/openvim $what-list | awk '/^ *[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12} +/{print $1}'`
155 [[ $option_force == "-" ]] && echo deleting openvim
${what}s
156 [[ $option_force != "-" ]] && read -e -p "Delete openvim ${what}s?(y/N) " force_
157 [[ $force_ != y
]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
161 ${DIRvim}/openvim
$what-delete -f $item ||
! echo "fail" >&2 ||
$_exit 1
167 elif [[ $action == "delete" ]]
169 ${DIRvim}/openvim net-delete
-f default ||
echo "fail"
170 ${DIRvim}/openvim net-delete
-f macvtap
:em1 ||
echo "fail"
171 ${DIRvim}/openvim net-delete
-f shared_bridge_net ||
echo "fail"
172 ${DIRvim}/openvim net-delete
-f data_net ||
echo "fail"
173 ${DIRvim}/openvim host-remove
-f fake-host-0 ||
echo "fail"
174 ${DIRvim}/openvim host-remove
-f fake-host-1 ||
echo "fail"
175 ${DIRvim}/openvim host-remove
-f fake-host-2 ||
echo "fail"
176 ${DIRvim}/openvim host-remove
-f fake-host-3 ||
echo "fail"
177 result
=`openvim tenant-list osm`
178 vimtenant
=`echo $result |gawk '{print $1}'`
179 #check a valid uuid is obtained
180 is_valid_uuid
$vimtenant ||
! echo "Tenant 'osm' not found. Already delete?" >&2 ||
$_exit 1
181 export OPENVIM_TENANT
=$vimtenant
182 ${DIRvim}/openvim tenant-delete
-f osm ||
echo "fail"
185 elif [[ $action == "create" ]]
187 echo "Adding example hosts"
188 ${DIRvim}/openvim host-add
$DIRvim/test
/hosts
/host-example0.yaml ||
! echo "fail" >&2 ||
$_exit 1
189 ${DIRvim}/openvim host-add
$DIRvim/test
/hosts
/host-example1.yaml ||
! echo "fail" >&2 ||
$_exit 1
190 ${DIRvim}/openvim host-add
$DIRvim/test
/hosts
/host-example2.yaml ||
! echo "fail" >&2 ||
$_exit 1
191 ${DIRvim}/openvim host-add
$DIRvim/test
/hosts
/host-example3.yaml ||
! echo "fail" >&2 ||
$_exit 1
192 echo "Adding example nets"
193 ${DIRvim}/openvim net-create
$DIRvim/test
/networks
/net-example0.yaml ||
! echo "fail" >&2 ||
$_exit 1
194 ${DIRvim}/openvim net-create
$DIRvim/test
/networks
/net-example1.yaml ||
! echo "fail" >&2 ||
$_exit 1
195 ${DIRvim}/openvim net-create
$DIRvim/test
/networks
/net-example2.yaml ||
! echo "fail" >&2 ||
$_exit 1
196 ${DIRvim}/openvim net-create
$DIRvim/test
/networks
/net-example3.yaml ||
! echo "fail" >&2 ||
$_exit 1
198 printf "%-50s" "Creating openvim tenant 'osm': "
199 result
=`openvim tenant-create '{tenant: {name: osm, description: admin}}'`
200 vimtenant
=`echo $result |gawk '{print $1}'`
201 #check a valid uuid is obtained
202 ! is_valid_uuid
$vimtenant && echo "FAIL" && echo " $result" && $_exit 1
204 export OPENVIM_TENANT
=$vimtenant
205 [[ -n "$option_insert_bashrc" ]] && echo -e "\nexport OPENVIM_TENANT=$vimtenant" >> ~
/.bashrc
208 #echo "Check virtual machines are deployed"
209 #vms_error=`openvim vm-list | grep ERROR | wc -l`
210 #vms=`openvim vm-list | wc -l`
211 #[[ $vms -ne 8 ]] && echo "WARNING: $vms VMs created, must be 8 VMs" >&2 && $_exit 1
212 #[[ $vms_error -gt 0 ]] && echo "WARNING: $vms_error VMs with ERROR" >&2 && $_exit 1
220 #echo "Listing scenarios"
221 #openvim scenario-list
222 #echo "Listing scenario instances"
223 #openvim instance-scenario-list