From 70aff432c893fc3ae1e04c08a1ba81082193a14a Mon Sep 17 00:00:00 2001 From: bryan Date: Thu, 2 Mar 2017 11:41:05 -0800 Subject: Update vHello_3Node_Tacker test for Danube JIRA: MODELS-23 blueprint.yaml: Add vHello key injection into blueprint for debug. Fix URL for favicon. Fix docker install pre-reqs. vHello_3Node_Tacker.sh: Fix tests in say_hello. Correct path to blueprint in copy_blueprint. Create and inject nova keypair. Use actual $FLOATING_NETWORK_NAME in floating ip allocation. Fix use of array variables vdu_ip/id/etc. Change-Id: Id4a04ecf86d3715d11c65298c22c586e20f78d4c Signed-off-by: bryan --- .../tosca-vnfd-3node-tacker/blueprint.yaml | 44 ++++++++++++++-------- tests/vHello_3Node_Tacker.sh | 37 ++++++++++++++---- 2 files changed, 58 insertions(+), 23 deletions(-) diff --git a/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml b/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml index f6198f1..2210a28 100644 --- a/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml +++ b/tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml @@ -12,7 +12,7 @@ topology_template: artifacts: VNFImage: type: tosca.artifacts.Deployment.Image.VM - file: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img + file: http://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img capabilities: nfv_compute: properties: @@ -29,6 +29,10 @@ topology_template: set -x mkdir /home/ubuntu chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM sudo mount /dev/sr0 /mnt/ mkdir ~/www mkdir ~/www/html @@ -60,13 +64,13 @@ topology_template: EOM - wget https://git.opnfv.org/cgit/models/plain/tests/blueprints/tosca-vnfd-hello-ves/favicon.ico -O ~/www/html/favicon.ico - sudo apt-get install apt-transport-https ca-certificates - sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D - echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list + wget https://git.opnfv.org/models/plain/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico -O ~/www/html/favicon.ico + sudo apt-get install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - + sudo apt-key update + echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee -a /etc/apt/sources.list.d/docker.list + sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ ubuntu-$(lsb_release -cs) main" sudo apt-get update - sudo apt-get purge lxc-docker - sudo apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual sudo apt-get install -y docker-engine sudo docker pull nginx cd ~/www @@ -102,7 +106,7 @@ topology_template: artifacts: VNFImage: type: tosca.artifacts.Deployment.Image.VM - file: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img + file: http://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img capabilities: nfv_compute: properties: @@ -119,6 +123,10 @@ topology_template: set -x mkdir /home/ubuntu chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM sudo mount /dev/sr0 /mnt/ mkdir ~/www mkdir ~/www/html @@ -150,13 +158,13 @@ topology_template: EOM - wget https://git.opnfv.org/cgit/models/plain/tests/blueprints/tosca-vnfd-hello-ves/favicon.ico -O ~/www/html/favicon.ico - sudo apt-get install apt-transport-https ca-certificates - sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D - echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list + wget https://git.opnfv.org/models/plain/tests/blueprints/tosca-vnfd-3node-tacker/favicon.ico -O ~/www/html/favicon.ico + sudo apt-get install apt-transport-https ca-certificates curl software-properties-common + curl -fsSL https://apt.dockerproject.org/gpg | sudo apt-key add - + sudo apt-key update + echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee -a /etc/apt/sources.list.d/docker.list + sudo add-apt-repository "deb https://apt.dockerproject.org/repo/ ubuntu-$(lsb_release -cs) main" sudo apt-get update - sudo apt-get purge lxc-docker - sudo apt-get install -y linux-image-extra-$(uname -r) linux-image-extra-virtual sudo apt-get install -y docker-engine sudo docker pull nginx cd ~/www @@ -192,7 +200,7 @@ topology_template: artifacts: VNFImage: type: tosca.artifacts.Deployment.Image.VM - file: https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img + file: http://cloud-images.ubuntu.com/releases/xenial/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img capabilities: nfv_compute: properties: @@ -206,6 +214,12 @@ topology_template: user_data: | #!/bin/bash set -x + mkdir /home/ubuntu + chown -R ubuntu /home/ubuntu + mkdir /home/ubuntu/.ssh + cat << EOM >/home/ubuntu/.ssh/authorized_keys + + EOM echo "1" | sudo tee /proc/sys/net/ipv4/ip_forward sudo sysctl net.ipv4.ip_forward=1 sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j DNAT --to-destination :80 diff --git a/tests/vHello_3Node_Tacker.sh b/tests/vHello_3Node_Tacker.sh index f7cba37..08375b9 100644 --- a/tests/vHello_3Node_Tacker.sh +++ b/tests/vHello_3Node_Tacker.sh @@ -135,6 +135,7 @@ try () { } setup () { + trap 'fail' ERR echo "$0: $(date) Setup temp test folder /opt/tacker and copy this script there" if [ -d /opt/tacker ]; then sudo rm -rf /opt/tacker; fi sudo mkdir -p /opt/tacker @@ -178,18 +179,19 @@ setup () { } say_hello() { + echo "$0: $(date) Testing $1" pass=false count=6 - while [[ $count -gt 0 && ! $pass ]] + while [[ $count > 0 && $pass != true ]] do sleep 10 let count=$count-1 - if [[ $(curl $1} | grep -c "Hello World") > 0 ]]; then + if [[ $(curl $1 | grep -c "Hello World") > 0 ]]; then echo "$0: $(date) Hello World found at $1" pass=true fi done - if [[ ! $pass ]]; then fail; fi + if [[ $pass != true ]]; then fail; fi } copy_blueprint() { @@ -199,15 +201,28 @@ copy_blueprint() { fi echo "$0: $(date) copy tosca-vnfd-3node-tacker to blueprints folder" - cp -r blueprints/tosca-vnfd-3node-tacker /opt/tacker/blueprints + cp -r blueprints/tosca-vnfd-3node-tacker /opt/tacker/blueprints/tosca-vnfd-3node-tacker cp $0 /opt/tacker/. } start() { + trap 'fail' ERR + echo "$0: $(date) setup OpenStack CLI environment" source /opt/tacker/admin-openrc.sh + echo "$0: $(date) Create Nova key pair" + if [[ -f /opt/tacker/vHello ]]; then rm /opt/tacker/vHello; fi + ssh-keygen -t rsa -N "" -f /opt/tacker/vHello -C ubuntu@vHello + chmod 600 /opt/tacker/vHello + openstack keypair create --public-key /opt/tacker/vHello.pub vHello + assert "models-nova-001 (Keypair creation)" true + + echo "$0: $(date) Inject public key into blueprint" + pubkey=$(cat /opt/tacker/vHello.pub) + sed -i -- "s~~$pubkey~g" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml + vdus="VDU1 VDU2 VDU3" vdui="1 2 3" declare -a vdu_id=() @@ -218,12 +233,13 @@ start() { echo "$0: $(date) allocate floating IPs" get_floating_net for i in $vdui; do - vdu_ip[$i]=$(nova floating-ip-create $FLOATING_NETWORK_NAME | awk "/public/ { print \$4 }") + vdu_ip[$i]=$(nova floating-ip-create $FLOATING_NETWORK_NAME | awk "/$FLOATING_NETWORK_NAME/ { print \$4 }") + echo "$0: $(date) Pre-allocated ${vdu_ip[$i]} to VDU$i" done echo "$0: $(date) Inject web server floating IPs into LB code in blueprint" - sed -i -- "s//$vdu_ip[1]/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml - sed -i -- "s//$vdu_ip[2]/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml + sed -i -- "s//${vdu_ip[1]}/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml + sed -i -- "s//${vdu_ip[2]}/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml # End setup for workarounds echo "$0: $(date) create VNFD" @@ -278,6 +294,8 @@ start() { neutron security-group-rule-create --direction ingress --protocol TCP --port-range-min 22 --port-range-max 22 vHello neutron security-group-rule-create --direction ingress --protocol TCP --port-range-min 80 --port-range-max 80 vHello for i in $vdui; do + vdu_id[$i]=$(openstack server list | awk "/VDU$i/ { print \$2 }") + echo "$0: $(date) Assigning security groups to VDU$i (${vdu_id[$i]})" openstack server add security group ${vdu_id[$i]} vHello openstack server add security group ${vdu_id[$i]} default done @@ -300,6 +318,8 @@ start() { } stop() { + trap 'fail' ERR + echo "$0: $(date) setup OpenStack CLI environment" source /opt/tacker/admin-openrc.sh @@ -310,8 +330,9 @@ stop() { if [[ ! -z $id ]]; then echo "$0: $(date) disassociate floating ip for $vdu" nova floating-ip-disassociate $id $ip + else + echo "$0: $(date) No instance for $vdu found" fi - echo "$0: $(date) No instance for $vdu found" done if [[ "$(tacker vnf-list|grep hello-3node|awk '{print $2}')" != '' ]]; then -- cgit 1.2.3-korg