Update vHello_3Node_Tacker test for Danube 73/29673/1
authorbryan <bryan.sullivan@att.com>
Thu, 2 Mar 2017 19:41:05 +0000 (11:41 -0800)
committerbryan <bryan.sullivan@att.com>
Thu, 2 Mar 2017 19:41:05 +0000 (11:41 -0800)
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 <bryan.sullivan@att.com>
tests/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml
tests/vHello_3Node_Tacker.sh

index f6198f1..2210a28 100644 (file)
@@ -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
+          <pubkey>
+          EOM
           sudo mount /dev/sr0 /mnt/
           mkdir ~/www
           mkdir ~/www/html
@@ -60,13 +64,13 @@ topology_template:
           </div>
           </body></html>
           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
+          <pubkey>
+          EOM
           sudo mount /dev/sr0 /mnt/
           mkdir ~/www
           mkdir ~/www/html
@@ -150,13 +158,13 @@ topology_template:
           </div>
           </body></html>
           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
+          <pubkey>
+          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 <vdu1_ip>:80
index f7cba37..08375b9 100644 (file)
@@ -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>~$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/<vdu1_ip>/$vdu_ip[1]/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml
-  sed -i -- "s/<vdu2_ip>/$vdu_ip[2]/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml
+  sed -i -- "s/<vdu1_ip>/${vdu_ip[1]}/" /opt/tacker/blueprints/tosca-vnfd-3node-tacker/blueprint.yaml
+  sed -i -- "s/<vdu2_ip>/${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