#!/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 Tacker Hello World blueprint. # # Status: this is a work in progress, under test. # # How to use: # $ git clone https://gerrit.opnfv.org/gerrit/models # $ cd models/tests # $ bash vLamp_Ansible.sh [setup|start|run|stop|clean] # 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 trap 'fail' ERR pass() { echo "$0: Hooray!" set +x #echo off exit 0 } fail() { echo "$0: Test Failed!" set +x exit 1 } 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" exit 1 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 } setup () { echo "$0: Setup temp test folder /tmp/ansible and copy this script there" if [ -d /tmp/ansible ]; then sudo rm -rf /tmp/ansible; fi mkdir -p /tmp/ansible chmod 777 /tmp/ansible/ cp $0 /tmp/ansible/. chmod 755 /tmp/ansible/*.sh echo "$0: ansible-setup part 1" bash utils/ansible-setup.sh init echo "$0: ansible-setup part 2" CONTAINER=$(sudo docker ps -l | awk "/ansible/ { print \$1 }") dist=`grep DISTRIB_ID /etc/*-release | awk -F '=' '{print $2}'` if [ "$dist" == "Ubuntu" ]; then echo "$0: Execute ansible-setup.sh in the container" sudo docker exec -it $CONTAINER /bin/bash /tmp/ansible/ansible-setup.sh setup else echo "$0: Execute ansible-setup.sh in the container" sudo docker exec -i -t $CONTAINER /bin/bash /tmp/ansible/ansible-setup.sh setup fi echo "$0: reset blueprints folder" if [[ -d /tmp/ansible/blueprints/lampstack ]]; then rm -rf /tmp/ansible/blueprints/lampstack; fi mkdir -p /tmp/ansible/blueprints/ echo "$0: copy lampstack to blueprints folder" cd /tmp/ git clone https://github.com/openstack/osops-tools-contrib.git cp -r osops-tools-contrib/ansible/lampstack /tmp/ansible/blueprints echo "$0: setup OpenStack environment" source /tmp/ansible/admin-openrc.sh echo "$0: determine external (public) network as the floating ip network" get_floating_net echo "$0: create lampstack vars file for OPNFV" cat >/tmp/ansible/blueprints/lampstack/vars/opnfv.yml <