4 # Copyright 2015 Telefonica Investigacion y Desarrollo, S.A.U.
5 # This file is part of openmano
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 is a basic test for openmano, that deals with two openvim
26 #WARNING: It destroy the database content
30 echo -e "usage: ${BASH_SOURCE[0]} [-f]\n Deletes openvim/openmano content and make automatically the wiki steps"
31 echo -e " at 'https://github.com/nfvlabs/openmano/wiki/Getting-started#how-to-use-it'"
33 echo -e " -f --force : does not prompt for confirmation"
34 echo -e " -h --help : shows this help"
37 function is_valid_uuid
(){
38 echo "$1" |
grep -q -E '^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$' && return 0
43 #detect if is called with a source to use the 'exit'/'return' command for exiting
44 [[ ${BASH_SOURCE[0]} != $0 ]] && _exit
="return" || _exit
="exit"
46 #check correct arguments
47 [[ -n $1 ]] && [[ $1 != -h ]] && [[ $1 != --help ]] && [[ $1 != -f ]] && [[ $1 != --force ]] && \
48 echo "invalid argument '$1'?" && usage
>&2 && $_exit 1
49 [[ $1 == -h ]] ||
[[ $1 == --help ]] && usage
&& $_exit 0
51 #ask for confirmation if argument is not -f --force
53 [[ $1 == -f ]] ||
[[ $1 == --force ]] && force
=y
54 [[ $force != y
]] && read -e -p "WARNING: openmano and openvim database content will be lost!!! Continue(y/N)" force
55 [[ $force != y
]] && [[ $force != yes ]] && echo "aborted!" && $_exit
57 DIRNAME
=$
(dirname $
(readlink
-f ${BASH_SOURCE[0]}))
58 DIR_BASE
=$
(dirname $DIRNAME)
59 DIR_BASE
=$
(dirname $DIR_BASE)
60 DIRvim
=$DIR_BASE/openvim
61 DIRmano
=$DIR_BASE/openmano
62 DIRscripts
=$DIR_BASE/scripts
64 echo "deleting deployed vm"
65 openvim vm-delete
-f |
grep -q deleted
&& sleep 10 #give some time to get virtual machines deleted
67 echo "Stopping openmano"
68 $DIRscripts/service-openmano stop
70 echo "Initializing databases"
71 $DIRvim/database_utils
/init_vim_db.sh
-u vim
-p vimpw
72 $DIRmano/database_utils
/init_mano_db.sh
-u mano
-p manopw
74 echo "Starting openmano"
75 $DIRscripts/service-openmano start
77 echo "Creating openmano tenant 'mytenant'"
78 nfvotenant
=`openmano tenant-create mytenant --description=mytenant |gawk '{print $1}'`
79 #check a valid uuid is obtained
80 is_valid_uuid
$nfvotenant ||
! echo "fail" >&2 ||
$_exit 1
81 export OPENMANO_TENANT
=$nfvotenant
84 echo "Adding example hosts"
85 openvim host-add
$DIRvim/test
/hosts
/host-example0.json ||
! echo "fail" >&2 ||
$_exit 1
86 openvim host-add
$DIRvim/test
/hosts
/host-example1.json ||
! echo "fail" >&2 ||
$_exit 1
87 openvim host-add
$DIRvim/test
/hosts
/host-example2.json ||
! echo "fail" >&2 ||
$_exit 1
88 openvim host-add
$DIRvim/test
/hosts
/host-example3.json ||
! echo "fail" >&2 ||
$_exit 1
89 echo "Adding example nets"
90 openvim net-create
$DIRvim/test
/networks
/net-example0.yaml ||
! echo "fail" >&2 ||
$_exit 1
91 openvim net-create
$DIRvim/test
/networks
/net-example1.yaml ||
! echo "fail" >&2 ||
$_exit 1
92 openvim net-create
$DIRvim/test
/networks
/net-example2.yaml ||
! echo "fail" >&2 ||
$_exit 1
93 openvim net-create
$DIRvim/test
/networks
/net-example3.yaml ||
! echo "fail" >&2 ||
$_exit 1
95 echo "Creating openvim tenant 'admin'"
96 vimtenant
=`openvim tenant-create '{"tenant": {"name":"admin", "description":"admin"}}' |gawk '{print $1}'`
97 #check a valid uuid is obtained
98 is_valid_uuid
$vimtenant ||
! echo "fail" >&2 ||
$_exit 1
100 OPENVIM_TENANT_1
=$vimtenant && export OPENVIM_TENANT
=$vimtenant
102 echo "Creating datacenter 'mydc1' in openmano"
103 datacenter
=`openmano datacenter-create mydc1 http://localhost:9080/openvim |gawk '{print $1}'`
104 #check a valid uuid is obtained
105 is_valid_uuid
$datacenter ||
! echo "fail" >&2 ||
$_exit 1
107 OPENMANO_DATACENTER_1
=$datacenter && export OPENMANO_DATACENTER
=$datacenter
109 echo "Attaching openmano tenant to the datacenter and the openvim tenant"
110 openmano datacenter-attach mydc1
--vim-tenant-id $vimtenant ||
! echo "fail" >&2 ||
$_exit 1
112 echo "Updating external nets in openmano"
113 openmano datacenter-net-update
-f mydc1 ||
! echo "fail" >&2 ||
$_exit 1
115 echo "Creating a second fake datacenter 'mydc2' in openmano"
116 datacenter2
=`openmano datacenter-create mydc2 http://localhost:9082/openvim |gawk '{print $1}'`
117 #check a valid uuid is obtained
118 is_valid_uuid
$datacenter ||
! echo "fail" >&2 ||
$_exit 1
120 OPENMANO_DATACENTER_2
=$datacenter2
121 echo "Attaching a second fake openvim 'mydc2'"
122 openmano datacenter-attach mydc2
--vim-tenant-id $vimtenant ||
! echo "fail" >&2 ||
$_exit 1
124 echo "Creating VNFs, must fail in second openvim"
125 openmano vnf-create
$DIRmano/vnfs
/examples
/linux.yaml ||
! echo "fail" >&2 ||
$_exit 1
126 openmano vnf-create
$DIRmano/vnfs
/examples
/dataplaneVNF1.yaml ||
! echo "fail" >&2 ||
$_exit 1
127 openmano vnf-create
$DIRmano/vnfs
/examples
/dataplaneVNF2.yaml ||
! echo "fail" >&2 ||
$_exit 1
129 echo "Checking images and flavors created at openvim"
130 nb
=`openvim image-list | wc -l`
131 echo -n " $nb images "
132 [[ $nb -eq 3 ]] ||
! echo "fail" >&2 ||
$_exit 1
134 [[ $nb -eq 3 ]] ||
! echo "fail" >&2 ||
$_exit 1
136 echo "Creating Scenarios"
137 openmano scenario-create
$DIRmano/scenarios
/examples
/simple.yaml ||
! echo "fail" >&2 ||
$_exit 1
138 openmano scenario-create
$DIRmano/scenarios
/examples
/complex.yaml ||
! echo "fail" >&2 ||
$_exit 1
140 echo "Deleting openvim images and flavors to force reload again"
141 openvim image-delete
-f
142 openvim flavor-delete
-f
144 echo "Launching scenarios"
145 openmano scenario-deploy simple simple-instance ||
! echo "fail" >&2 ||
$_exit 1
146 openmano scenario-deploy complex complex-instance ||
! echo "fail" >&2 ||
$_exit 1
148 echo "Checking that openvim has 5 VM running"
149 nb
=`openvim vm-list | wc -l`
150 [[ $nb -eq 5 ]] ||
! echo "fail" >&2 ||
$_exit 1
151 while openvim vm-list |
grep -q CREATING
; do sleep 1; done
152 openvim vm-list |
grep -v -q ERROR ||
! echo "fail: VM with error" >&2 ||
$_exit 1
154 echo "Removing scenarios"
155 for scenario
in `openmano instance-scenario-list | awk '{print $2}'`
157 openmano instance-scenario-delete
-f $scenario
160 echo "Editing datacenters so that Changing openvim Working with the second openvim"
161 openmano datacenter-edit
-f mydc1
'vim_url: http://localhost:9083/openvim'
162 openmano datacenter-edit
-f mydc2
'vim_url: http://localhost:9080/openvim'
163 export OPENMANO_DATACENTER
=$OPENMANO_DATACENTER_2
165 echo "Updating external nets in openmano for second datacenter"
166 openmano datacenter-net-update
-f mydc2 ||
! echo "fail" >&2 ||
$_exit 1
168 echo "Launching Scenario instances"
169 openmano scenario-deploy simple simple-instance ||
! echo "fail" >&2 ||
$_exit 1
170 openmano scenario-deploy complex complex-instance ||
! echo "fail" >&2 ||
$_exit 1
172 echo "Checking images and flavors created at openvim"
173 nb
=`openvim image-list | wc -l`
174 echo -n " $nb images "
175 [[ $nb -eq 3 ]] ||
! echo "fail" >&2 ||
$_exit 1
177 [[ $nb -eq 3 ]] ||
! echo "fail" >&2 ||
$_exit 1
179 echo "Checking that openvim has 5 VM running"
180 nb
=`openvim vm-list | wc -l`
181 [[ $nb -eq 5 ]] ||
! echo "fail" >&2 ||
$_exit 1
182 while openvim vm-list |
grep -q CREATING
; do sleep 1; done
183 openvim vm-list |
grep -v -q ERROR ||
! echo "fail: VM with error" >&2 ||
$_exit 1
190 #echo "Listing scenarios"
191 #openmano scenario-list
192 #echo "Listing scenario instances"
193 #openmano instance-scenario-list