| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | |
| 3 | ## |
| 4 | # Copyright 2015 Telefónica Investigación 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" |
| garciadeblas | de590c0 | 2017-04-24 13:17:01 +0200 | [diff] [blame] | 68 | $DIRscripts/service-openmano stop |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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" |
| garciadeblas | de590c0 | 2017-04-24 13:17:01 +0200 | [diff] [blame] | 75 | $DIRscripts/service-openmano start |
| tierno | 7edb675 | 2016-03-21 17:37:52 +0100 | [diff] [blame] | 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 | |