feature 8029 change RO to python3. Using vim plugins
[osm/RO.git] / RO / test / test-multivim.sh
1 #!/bin/bash
2
3 ##
4 # Copyright 2015 Telefonica Investigacion y Desarrollo, S.A.U.
5 # This file is part of openmano
6 # All Rights Reserved.
7 #
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
11 #
12 # http://www.apache.org/licenses/LICENSE-2.0
13 #
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
18 # under the License.
19 #
20 # For those usages not covered by the Apache License, Version 2.0 please
21 # contact with: nfvlabs@tid.es
22 ##
23
24 #This script is a basic test for openmano, that deals with two openvim
25 #stopping on an error
26 #WARNING: It destroy the database content
27
28
29 function usage(){
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'"
32 echo -e " OPTIONS:"
33 echo -e " -f --force : does not prompt for confirmation"
34 echo -e " -h --help : shows this help"
35 }
36
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
39 return 1
40 }
41
42
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"
45
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
50
51 #ask for confirmation if argument is not -f --force
52 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
56
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
63
64 echo "deleting deployed vm"
65 openvim vm-delete -f | grep -q deleted && sleep 10 #give some time to get virtual machines deleted
66
67 echo "Stopping openmano"
68 $DIRscripts/service-openmano stop
69
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
73
74 echo "Starting openmano"
75 $DIRscripts/service-openmano start
76
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
82 echo " $nfvotenant"
83
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
94
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
99 echo " $vimtenant"
100 OPENVIM_TENANT_1=$vimtenant && export OPENVIM_TENANT=$vimtenant
101
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
106 echo " $datacenter"
107 OPENMANO_DATACENTER_1=$datacenter && export OPENMANO_DATACENTER=$datacenter
108
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
111
112 echo "Updating external nets in openmano"
113 openmano datacenter-net-update -f mydc1 || ! echo "fail" >&2 || $_exit 1
114
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
119 echo " $datacenter2"
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
123
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
128
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
133 echo " $nb flavors "
134 [[ $nb -eq 3 ]] || ! echo "fail" >&2 || $_exit 1
135
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
139
140 echo "Deleting openvim images and flavors to force reload again"
141 openvim image-delete -f
142 openvim flavor-delete -f
143
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
147
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
153
154 echo "Removing scenarios"
155 for scenario in `openmano instance-scenario-list | awk '{print $2}'`
156 do
157 openmano instance-scenario-delete -f $scenario
158 done
159
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
164
165 echo "Updating external nets in openmano for second datacenter"
166 openmano datacenter-net-update -f mydc2 || ! echo "fail" >&2 || $_exit 1
167
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
171
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
176 echo " $nb flavors "
177 [[ $nb -eq 3 ]] || ! echo "fail" >&2 || $_exit 1
178
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
184
185
186 echo
187 echo DONE
188 #echo "Listing VNFs"
189 #openmano vnf-list
190 #echo "Listing scenarios"
191 #openmano scenario-list
192 #echo "Listing scenario instances"
193 #openmano instance-scenario-list
194
195