From: tierno Date: Wed, 12 Jul 2017 08:54:08 +0000 (+0200) Subject: Merge "new test for openmano client" into v2.0 X-Git-Tag: v2.0.2~3 X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FRO.git;a=commitdiff_plain;h=84e8396919ee9ead80489ba9eb7419f7df029d55;hp=0abcd732a7aaf919f1be408fe946e52920e2702d Merge "new test for openmano client" into v2.0 --- diff --git a/test/test_openmanocli.sh b/test/test_openmanocli.sh new file mode 100755 index 00000000..9bbeea56 --- /dev/null +++ b/test/test_openmanocli.sh @@ -0,0 +1,207 @@ +#!/bin/bash + +## +# Copyright 2015 Telefónica Investigación y Desarrollo, S.A.U. +# This file is part of openmano +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# For those usages not covered by the Apache License, Version 2.0 please +# contact with: nfvlabs@tid.es +## + +#This script can be used as a basic test of openmano. +#WARNING: It destroy the database content + + +function usage(){ + echo -e "usage: ${BASH_SOURCE[0]} [OPTIONS] \n test openmano with fake tenant, datancenters, etc."\ + "It assumes that you have configured openmano cli with HOST,PORT,TENANT with environment variables" + "If not, it will use by default localhost:9080 and creates a new TENANT" + echo -e " -h --help shows this help" +} + +function is_valid_uuid(){ + echo "$1" | grep -q -E '^[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}$' && return 0 + return 1 +} + +DIRNAME=$(dirname $(readlink -f ${BASH_SOURCE[0]})) +DIRmano=$(dirname $DIRNAME) +DIRscript=${DIRmano}/scripts + +#detect paths of executables, preceding the relative paths +openmano=openmano && [[ -x "${DIRmano}/openmano" ]] && openmano="${DIRmano}/openmano" +service_openmano=service-openmano && [[ -x "$DIRscript/service-openmano" ]] && + service_openmano="$DIRscript/service-openmano" +initopenvim="initopenvim" +openvim="openvim" + +function _exit() +{ + EXIT_STATUS=$1 + for item in $ToDelete + do + command=${item%%:*} + uuid=${item#*:} + [[ $command == "datacenter-detach" ]] && force="" || force=-f + printf "%-50s" "$command $uuid:" + ! $openmano $command $uuid $force >> /dev/null && echo FAIL && EXIT_STATUS=1 || echo OK + done + [[ ${BASH_SOURCE[0]} != $0 ]] && return $1 || exit $EXIT_STATUS +} + + +# process options +source ${DIRscript}/get-options.sh "force:-f help:h insert-bashrc init-openvim:initopenvim install-openvim screen" \ + $* || _exit 1 + +# help +[ -n "$option_help" ] && usage && _exit 0 + + +ToDelete="" +DCs="dc-fake1-openstack dc-fake2-openvim" #dc-fake3-vmware +Ts="fake-tenant1 fake-tenand2" +SDNs="sdn-fake1-opendaylight sdn-fake2-floodlight sdn-fake3-onos" + +for T in $Ts +do + printf "%-50s" "Creating fake tenant '$T':" + ! result=`$openmano tenant-create "$T"` && echo FAIL && echo " $result" && _exit 1 + tenant=`echo $result |gawk '{print $1}'` + ! is_valid_uuid $tenant && echo "FAIL" && echo " $result" && _exit 1 + echo $tenant + ToDelete="tenant-delete:$tenant $ToDelete" + [[ -z "$OPENMANO_TENANT" ]] && export OPENMANO_TENANT=$tenant +done + +index=0 +for DC in $DCs +do + index=$((index+1)) + printf "%-50s" "Creating datacenter '$DC':" + ! result=`$openmano datacenter-create "$DC" "http://$DC/v2.0" --type=${DC##*-} --config='{insecure: True}'` && + echo FAIL && echo " $result" && _exit 1 + datacenter=`echo $result |gawk '{print $1}'` + ! is_valid_uuid $datacenter && echo "FAIL" && echo " $result" && _exit 1 + echo $datacenter + eval DC${index}=$datacenter + ToDelete="datacenter-delete:$datacenter $ToDelete" + [[ -z "$datacenter_empty" ]] && datacenter_empty=datacenter + + printf "%-50s" "Attaching openmano tenant to the datacenter:" + ! result=`$openmano datacenter-attach "$DC" --vim-tenant-name=osm --config='{insecure: False}'` && + echo FAIL && echo " $result" && _exit 1 + ToDelete="datacenter-detach:$datacenter $ToDelete" + echo OK +done + +printf "%-50s" "Datacenter list:" +! result=`$openmano datacenter-list` && + echo "FAIL" && echo " $result" && _exit 1 +for verbose in "" -v -vv -vvv +do + ! result=`$openmano datacenter-list "$DC" $verbose` && + echo "FAIL" && echo " $result" && _exit 1 +done +echo OK + +dpid_prefix=55:56:57:58:59:60:61:0 +dpid_sufix=0 +for SDN in $SDNs +do + printf "%-50s" "Creating SDN controller '$SDN':" + ! result=`$openmano sdn-controller-create "$SDN" --ip 4.5.6.7 --port 80 --type=${SDN##*-} \ + --user user --passwd p --dpid=${dpid_prefix}${dpid_sufix}` && echo "FAIL" && echo " $result" && _exit 1 + sdn=`echo $result |gawk '{print $1}'` + #check a valid uuid is obtained + ! is_valid_uuid $sdn && echo "FAIL" && echo " $result" && _exit 1 + echo $sdn + ToDelete="sdn-controller-delete:$sdn $ToDelete" + dpid_sufix=$((dpid_sufix+1)) + +done +printf "%-50s" "Edit SDN-controller:" +for edit in user=u password=p ip=5.6.6.7 port=81 name=name dpid=45:55:54:45:44:44:55:67 +do + ! result=`$openmano sdn-controller-edit $sdn -f --"${edit}"` && + echo "FAIL" && echo " $result" && _exit 1 +done +echo OK + +printf "%-50s" "SDN-controller list:" +! result=`$openmano sdn-controller-list` && + echo "FAIL" && echo " $result" && _exit 1 +for verbose in "" -v -vv -vvv +do + ! result=`$openmano sdn-controller-list "$sdn" $verbose` && + echo "FAIL" && echo " $result" && _exit 1 +done +echo OK + +printf "%-50s" "Add sdn to datacenter:" +! result=`$openmano datacenter-edit -f $DC --sdn-controller $SDN` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Clear Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-clear -f $DC` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Set Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-set -f $DC ${DIRmano}/sdn/sdn_port_mapping.yaml` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "List Port mapping:" +for verbose in "" -v -vv -vvv +do + ! result=`$openmano datacenter-sdn-port-mapping-list "$DC" $verbose` && + echo "FAIL" && echo " $result" && _exit 1 +done +echo OK + +printf "%-50s" "Set again Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-set -f $DC ${DIRmano}/sdn/sdn_port_mapping.yaml` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Clear again Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-clear -f $DC` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Set again Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-set -f $DC ${DIRmano}/sdn/sdn_port_mapping.yaml` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Remove datacenter sdn:" +! result=`$openmano datacenter-edit -f $DC --sdn-controller null` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Negative list port mapping:" +result=`$openmano datacenter-sdn-port-mapping-list $DC` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Add again datacenter sdn:" +! result=`$openmano datacenter-edit -f $DC --sdn-controller $SDN` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +printf "%-50s" "Empty list port mapping:" +! [[ `$openmano datacenter-sdn-port-mapping-list $DC | wc -l` -eq 6 ]] && + echo "FAIL" && _exit 1 || echo OK + +printf "%-50s" "Set again Port mapping:" +! result=`$openmano datacenter-sdn-port-mapping-set -f $DC ${DIRmano}/sdn/sdn_port_mapping.yaml` && + echo "FAIL" && echo " $result" && _exit 1 || echo OK + +_exit 0 +