diff options
author | blsaws <bryan.sullivan@att.com> | 2016-09-14 11:11:52 -0700 |
---|---|---|
committer | blsaws <bryan.sullivan@att.com> | 2016-09-14 11:11:52 -0700 |
commit | 34080cb1c9c05aaeeb13d34bfbf9fd54bbaf25f9 (patch) | |
tree | 5ff13bd83c3908131dde33c99c635eed4d682b6f /tests/vHello_Cloudify.sh | |
parent | 2cd06c9bff01b6a9d8755132b8c7798ff1f72053 (diff) |
Align design of Cloudify and Tacker test scripts
JIRA: MODELS-23
Change-Id: Iaa4efef6b5c993381ad6d7e5583859e860a52d0f
Signed-off-by: blsaws <bryan.sullivan@att.com>
Diffstat (limited to 'tests/vHello_Cloudify.sh')
-rw-r--r-- | tests/vHello_Cloudify.sh | 263 |
1 files changed, 263 insertions, 0 deletions
diff --git a/tests/vHello_Cloudify.sh b/tests/vHello_Cloudify.sh new file mode 100644 index 0000000..831eab2 --- /dev/null +++ b/tests/vHello_Cloudify.sh @@ -0,0 +1,263 @@ +#!/bin/bash +# Copyright 2016 AT&T Intellectual Property, Inc +# +# 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. +# +# What this is: Deployment test for the Cloudify Hello World blueprint. +# +# Status: this is a work in progress, under test. +# +# How to use: +# $ wget https://git.opnfv.org/cgit/models/plain/tests/vHello.sh +# $ bash vHello_Cloudify.sh [cloudify-cli|cloudify-manager] [setup|start|run|stop|clean] +# cloudify-cli: use Cloudify CLI +# cloudify-manager: use Cloudify Manager +# setup: setup test environment +# start: install blueprint and run test +# run: setup test environment and run test +# stop: stop test and uninstall blueprint +# clean: cleanup after test + +set -x + +trap 'fail' ERR + +pass() { + echo "$0: Hooray!" + set +x #echo off + exit 0 +} + +fail() { + echo "$0: Test Failed!" + set +x + exit 1 +} + +function get_floating_net () { + network_ids=($(neutron net-list|grep -v "+"|grep -v name|awk '{print $2}')) + for id in ${network_ids[@]}; do + [[ $(neutron net-show ${id}|grep 'router:external'|grep -i "true") != "" ]] && floating_network_id=${id} + done + if [[ $floating_network_id ]]; then + floating_network_name=$(openstack network show $floating_network_id | awk "/ name / { print \$4 }") + else + echo "$0: Floating network not found" + fail + fi +} + +try () { + count=$1 + $3 + while [[ $? -eq 1 && $count -gt 0 ]] + do + sleep $2 + let count=$count-1 + $3 + done + if [[ $count -eq 0 ]]; then echo "$0: Command \"$3\" was not successful after $1 tries"; fi +} + +select_manager() { + echo "$0: select manager to use" + MANAGER_IP=$(openstack server list | awk "/ cloudify-manager-server / { print \$9 }") + cfy use -t $MANAGER_IP + if [ $? -eq 1 ]; then fail; fi +} + +setup() { + echo "$0: Setup temp test folder /tmp/cloudify and copy this script there" + mkdir /tmp/cloudify + chmod 777 /tmp/cloudify/ + cp $0 /tmp/cloudify/. + chmod 755 /tmp/cloudify/*.sh + + echo "$0: cloudify-setup part 1" + bash utils/cloudify-setup.sh $1 init + + echo "$0: cloudify-setup part 2" + CONTAINER=$(sudo docker ps -l | awk "/cloudify/ { print \$1 }") + sudo docker exec $CONTAINER /bin/bash /tmp/cloudify/cloudify-setup.sh $1 setup + if [ $? -eq 1 ]; then fail; fi + pass +} + +start() { + echo "$0: reset blueprints folder" + if [[ -d /tmp/cloudify/blueprints ]]; then rm -rf /tmp/cloudify/blueprints; fi + mkdir -p /tmp/cloudify/blueprints + cd /tmp/cloudify/blueprints + + echo "$0: clone cloudify-hello-world-example" + if [[ "$1" == "cloudify-manager" ]]; then + git clone https://github.com/cloudify-cosmo/cloudify-hello-world-example.git + cd cloudify-hello-world-example + git checkout 3.4.1-build + else + git clone https://github.com/blsaws/cloudify-cli-hello-world-example.git + cd cloudify-cli-hello-world-example + fi + + cd /tmp/cloudify/blueprints + + echo "$0: setup OpenStack CLI environment" + source /tmp/cloudify/admin-openrc.sh + + echo "$0: Setup image_id" +# image=$(openstack image list | awk "/ CentOS-7-x86_64-GenericCloud-1607 / { print \$2 }") + image=$(openstack image list | awk "/ xenial-server / { print \$2 }") + if [ -z $image ]; then +# glance --os-image-api-version 1 image-create --name CentOS-7-x86_64-GenericCloud-1607 --disk-format qcow2 --location http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1607.qcow2 --container-format bare + glance --os-image-api-version 1 image-create --name xenial-server --disk-format qcow2 --location http://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img --container-format bare + fi +# image=$(openstack image list | awk "/ CentOS-7-x86_64-GenericCloud-1607 / { print \$2 }") + image=$(openstack image list | awk "/ xenial-server / { print \$2 }") + + if [[ "$1" == "cloudify-manager" ]]; then + echo "$0: create Cloudify Manager blueprint inputs file" + # Set host image per Cloudify agent compatibility: http://docs.getcloudify.org/3.4.0/agents/overview/ + cd /tmp/cloudify/blueprints + cat <<EOF >vHello-inputs.yaml +image: xenial-server +flavor: m1.small +agent_user: ubuntu +webserver_port: 8080 +EOF + else + # Cloudify CLI use + echo "$0: Get external network for Floating IP allocations" + get_floating_net + + echo "$0: Create Nova key pair" + mkdir -p ~/.ssh + nova keypair-delete vHello + nova keypair-add vHello > ~/.ssh/vHello.pem + chmod 600 ~/.ssh/vHello.pem + + echo "$0: create Cloudify CLI blueprint inputs file" + cat <<EOF >vHello-inputs.yaml +image: xenial-server +flavor: m1.small +external_network_name: $floating_network_name +webserver_port: 8080 +key_name: vHello +ssh_key_filename: /root/.ssh/vHello.pem +ssh_user: ubuntu +ssh_port: 22 +EOF + fi + + echo "$0: initialize cloudify environment" + cd /tmp/cloudify/blueprints + cfy init -r + + if [[ "$1" == "cloudify-manager" ]]; then + select_manager + echo "$0: upload blueprint via manager" + cfy blueprints delete -b cloudify-hello-world-example + cfy blueprints upload -p cloudify-hello-world-example/blueprint.yaml -b cloudify-hello-world-example + if [ $? -eq 1 ]; then fail; fi + + echo "$0: create vHello deployment via manager" + cfy deployments create --debug -d vHello -i vHello-inputs.yaml -b cloudify-hello-world-example + if [ $? -eq 1 ]; then fail; fi + + echo "$0: execute 'install' workflow for vHello deployment via manager" + cfy executions start -w install -d vHello --timeout 1800 + if [ $? -eq 1 ]; then fail; fi + + echo "$0: get vHello server address" + SERVER_URL=$(cfy deployments outputs -d vHello | awk "/ Value: / { print \$2 }") + else + echo "$0: install local blueprint" + # don't use --install-plugins, causes openstack plugin 1.4.1 to be rolled back to 1.4 and then an error + cfy local install -i vHello-inputs.yaml -p cloudify-cli-hello-world-example/blueprint.yaml --allow-custom-parameters --parameters="floating_network_name=$floating_network_name" --task-retries=10 --task-retry-interval=30 + if [ $? -eq 1 ]; then fail; fi + + echo "$0: get vHello server address" + SERVER_URL=$(cfy local outputs | awk "/http_endpoint/ { print \$2 }" | sed -- 's/"//g') + fi + + echo "$0: verify vHello server is running" + apt-get install -y curl + if [[ $(curl $SERVER_URL | grep -c "Hello, World!") != 1 ]]; then fail; fi + + pass +} + +stop() { + echo "$0: setup OpenStack CLI environment" + source /tmp/cloudify/admin-openrc.sh + + echo "$0: initialize cloudify environment" + cd /tmp/cloudify/blueprints + + if [[ "$1" == "cloudify-manager" ]]; then + select_manager + echo "$0: uninstall vHello blueprint via manager" + cfy executions start -w uninstall -d vHello + if [ $? -eq 1 ]; then fail; fi + + echo "$0: delete vHello blueprint" + cfy deployments delete -d vHello + if [ $? -eq 1 ]; then fail; fi + else + echo "$0: uninstall vHello blueprint via CLI" + cfy local uninstall + if [ $? -eq 1 ]; then fail; fi + fi + pass +} + +forward_to_container () { + echo "$0: pass $2 command to vHello.sh in cloudify container" + CONTAINER=$(sudo docker ps -a | awk "/cloudify/ { print \$1 }") + sudo docker exec $CONTAINER /bin/bash /tmp/cloudify/vHello_Cloudify.sh $1 $2 $2 + if [ $? -eq 1 ]; then fail; fi +} + +dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'` +case "$2" in + setup) + setup $1 + pass + ;; + run) + setup $1 + forward_to_container $1 start + pass + ;; + start|stop) + if [[ $# -eq 2 ]]; then forward_to_container $1 $2 + else + # running inside the cloudify container, ready to go + $2 $1 + fi + pass + ;; + clean) + clean $1 + pass + ;; + *) + echo "usage: bash vHello_cloudify.sh [cloudify-cli|cloudify-api] [setup|start|run|clean]" + echo "cloudify-cli: use Cloudify CLI" + echo "cloudify-manager: use Cloudify Manager" + echo "setup: setup test environment" + echo "start: install blueprint and run test" + echo "run: setup test environment and run test" + echo "stop: stop test and uninstall blueprint" + echo "clean: cleanup after test" + fail +esac |