blob: 69f36679e165867ff3448d7827e564e71c33a320 [file] [log] [blame]
#!/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 openvim
#stopping on an error
#WARNING: It destroy the database content
function usage(){
echo -e "usage: ${BASH_SOURCE[0]} [OPTIONS] <action>\n Deletes openvim content and add fake hosts, networks"
echo -e " <action> is a list of the following items (by default 'reset create')"
echo -e " reset reset the openvim database content"
echo -e " create creates fake hosts and networks"
echo -e " delete delete created items"
echo -e " delete-all delete vms. flavors, images, ..."
echo -e " OPTIONS:"
echo -e " -f --force : does not prompt for confirmation"
echo -e " -d --delete : same to action delete-all"
echo -e " --insert-bashrc insert the created tenant variables at"
echo -e " ~/.bashrc to be available by openvim CLI"
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
}
#detect if is called with a source to use the 'exit'/'return' command for exiting
[[ ${BASH_SOURCE[0]} != $0 ]] && _exit="return" || _exit="exit"
#check correct arguments
force=""
action_list=""
insert_bashrc=""
while [[ $# -gt 0 ]]
do
argument="$1"
shift
if [[ $argument == reset ]] || [[ $argument == create ]] || [[ $argument == delete ]] || [[ $argument == delete-all ]]
then
action_list="$action_list $argument"
continue
#short options
elif [[ ${argument:0:1} == "-" ]] && [[ ${argument:1:1} != "-" ]] && [[ ${#argument} -ge 2 ]]
then
index=0
while index=$((index+1)) && [[ $index -lt ${#argument} ]]
do
[[ ${argument:$index:1} == h ]] && usage && $_exit 0
[[ ${argument:$index:1} == f ]] && force=y && continue
[[ ${argument:$index:1} == d ]] && action_list="delete-all $action_list" && continue
echo "invalid option '${argument:$index:1}'? Type -h for help" >&2 && $_exit 1
done
continue
fi
#long options
[[ $argument == --help ]] && usage && $_exit 0
[[ $argument == --force ]] && force=y && continue
[[ $argument == --delete ]] && action_list="delete-all $action_list" && continue
[[ $argument == --insert-bashrc ]] && insert_bashrc=y && continue
echo "invalid argument '$argument'? Type -h for help" >&2 && $_exit 1
done
DIRNAME=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
DIRvim=$(dirname $DIRNAME)
export OPENVIM_HOST=localhost
export OPENVIM_PORT=9080
[[ $insert_bashrc == y ]] && echo -e "\nexport OPENVIM_HOST=localhost" >> ~/.bashrc
[[ $insert_bashrc == y ]] && echo -e "\nexport OPENVIM_PORT=9080" >> ~/.bashrc
#by default action should be reset and create
[[ -z $action_list ]] && action_list="reset create"
for action in $action_list
do
if [[ $action == "reset" ]]
then
#ask for confirmation if argument is not -f --force
force_="y"
[[ $force != y ]] && read -e -p "WARNING: openvim database content will be lost!!! Continue(y/N)" force_
[[ $force_ != y ]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
echo "deleting deployed vm"
${DIRvim}/openvim vm-delete -f | grep -q deleted && sleep 10 #give some time to get virtual machines deleted
echo "Stopping openvim"
$DIRNAME/service-openvim.sh stop
echo "Initializing databases"
$DIRvim/database_utils/init_vim_db.sh -u vim -p vimpw
echo "Starting openvim"
$DIRNAME/service-openvim.sh start
elif [[ $action == delete-all ]]
then
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)}'`
do
t_id=${t%%:*}
t_name=${t#*:}
[[ -z $t_id ]] && continue
export OPENVIM_TENANT=${t_id}
for what in vm image flavor port net
do
items=`${DIRvim}/openvim $what-list | awk '/^ *[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12} +/{print $1}'`
if [[ -n $items ]]
then
[[ $force == y ]] && echo deleting openvim ${what}s from tenant ${t_name}
[[ $force != y ]] && read -e -p "Delete openvim ${what}s from tenant ${t_name}?(y/N) " force_
[[ $force_ != y ]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
for item in $items
do
echo -n "$item "
${DIRvim}/openvim $what-delete -f $item || ! echo "fail" >&2 || $_exit 1
done
fi
done
${DIRvim}/openvim tenant-delete -f $t_id || ! echo "fail" >&2 || $_exit 1
for what in host
do
items=`${DIRvim}/openvim $what-list | awk '/^ *[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12} +/{print $1}'`
if [[ -n $items ]]
then
[[ $force == y ]] && echo deleting openvim ${what}s
[[ $force != y ]] && read -e -p "Delete openvim ${what}s?(y/N) " force_
[[ $force_ != y ]] && [[ $force_ != yes ]] && echo "aborted!" && $_exit
for item in $items
do
echo -n "$item "
${DIRvim}/openvim $what-delete -f $item || ! echo "fail" >&2 || $_exit 1
done
fi
done
done
elif [[ $action == "delete" ]]
then
${DIRvim}/openvim net-delete -f default || echo "fail"
${DIRvim}/openvim net-delete -f macvtap:em1 || echo "fail"
${DIRvim}/openvim net-delete -f shared_bridge_net || echo "fail"
${DIRvim}/openvim net-delete -f data_net || echo "fail"
${DIRvim}/openvim host-remove -f fake-host-0 || echo "fail"
${DIRvim}/openvim host-remove -f fake-host-1 || echo "fail"
${DIRvim}/openvim host-remove -f fake-host-2 || echo "fail"
${DIRvim}/openvim host-remove -f fake-host-3 || echo "fail"
result=`openvim tenant-list TEST-admin`
vimtenant=`echo $result |gawk '{print $1}'`
#check a valid uuid is obtained
is_valid_uuid $vimtenant || ! echo "Tenant TEST-admin not found. Already delete?" >&2 || $_exit 1
export OPENVIM_TENANT=$vimtenant
${DIRvim}/openvim tenant-delete -f TEST-admin || echo "fail"
echo
elif [[ $action == "create" ]]
then
echo "Adding example hosts"
${DIRvim}/openvim host-add $DIRvim/test/hosts/host-example0.json || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim host-add $DIRvim/test/hosts/host-example1.json || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim host-add $DIRvim/test/hosts/host-example2.json || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim host-add $DIRvim/test/hosts/host-example3.json || ! echo "fail" >&2 || $_exit 1
echo "Adding example nets"
${DIRvim}/openvim net-create $DIRvim/test/networks/net-example0.yaml || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim net-create $DIRvim/test/networks/net-example1.yaml || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim net-create $DIRvim/test/networks/net-example2.yaml || ! echo "fail" >&2 || $_exit 1
${DIRvim}/openvim net-create $DIRvim/test/networks/net-example3.yaml || ! echo "fail" >&2 || $_exit 1
printf "%-50s" "Creating openvim tenant 'TEST-admin': "
result=`openvim tenant-create '{"tenant": {"name":"TEST-admin", "description":"admin"}}'`
vimtenant=`echo $result |gawk '{print $1}'`
#check a valid uuid is obtained
! is_valid_uuid $vimtenant && echo "FAIL" && echo " $result" && $_exit 1
echo " $vimtenant"
export OPENVIM_TENANT=$vimtenant
[[ $insert_bashrc == y ]] && echo -e "\nexport OPENVIM_TENANT=$vimtenant" >> ~/.bashrc
echo
#echo "Check virtual machines are deployed"
#vms_error=`openvim vm-list | grep ERROR | wc -l`
#vms=`openvim vm-list | wc -l`
#[[ $vms -ne 8 ]] && echo "WARNING: $vms VMs created, must be 8 VMs" >&2 && $_exit 1
#[[ $vms_error -gt 0 ]] && echo "WARNING: $vms_error VMs with ERROR" >&2 && $_exit 1
fi
done
echo
echo DONE
#echo "Listing VNFs"
#openvim vnf-list
#echo "Listing scenarios"
#openvim scenario-list
#echo "Listing scenario instances"
#openvim instance-scenario-list