Merge "more diagnostics, and switch to downloading vsg-1.1"
diff --git a/PLATFORM_INSTALL_INTERNALS.md b/PLATFORM_INSTALL_INTERNALS.md
index f38b82e..1a21924 100644
--- a/PLATFORM_INSTALL_INTERNALS.md
+++ b/PLATFORM_INSTALL_INTERNALS.md
@@ -80,4 +80,8 @@
 
 The final ansible role executed by platform-install is to start XOS. This uses the XOS `service-profile` repository to bring up a stack of CORD services. 
 
-For a discussion of how the XOS service-profile system works, please see [Dynamic On-boarding System and Service Profiles](https://wiki.opencord.org/display/CORD/Dynamic+On-boarding+System+and+Service+Profiles). 
\ No newline at end of file
+For a discussion of how the XOS service-profile system works, please see [Dynamic On-boarding System and Service Profiles](https://wiki.opencord.org/display/CORD/Dynamic+On-boarding+System+and+Service+Profiles). 
+
+## Helpful log files and diagnostic information
+
+The xos-build and xos-onboard steps run ansible playbooks to setup the xos virtual machine. The output of these playbooks is stored in the files `service-profile/cord-pod/xos-build.out` and `service-profile/cord-pod/xos-onboard.out` respectively. 
\ No newline at end of file
diff --git a/cord-post-deploy-playbook.yml b/cord-post-deploy-playbook.yml
index c1c2395..f1261eb 100644
--- a/cord-post-deploy-playbook.yml
+++ b/cord-post-deploy-playbook.yml
@@ -8,9 +8,9 @@
   - include_vars: vars/cord.yml
   - include_vars: vars/example_keystone.yml
 
-- name: Run post-deploy test
+- name: Run post-deploy tests
   hosts: head
   become: no
   roles:
-    - post-deploy-tests
-
+    - test-vsg
+    - test-exampleservice
diff --git a/roles/test-exampleservice/tasks/main.yml b/roles/test-exampleservice/tasks/main.yml
new file mode 100644
index 0000000..2ae3813
--- /dev/null
+++ b/roles/test-exampleservice/tasks/main.yml
@@ -0,0 +1,53 @@
+---
+# test-examplservice/tasks/main.yml
+#
+# Run tests to check that the single-node deployment has worked
+
+- name: Onboard ExampleService and instantiate a VM
+  command: ansible xos-1 -u ubuntu -m shell \
+    -a "cd ~/service-profile/cord-pod; make exampleservice"
+
+- name: Pause 60 seconds (work around bug in synchronizer)
+  pause: seconds=60
+
+- name: Re-run 'make vtn' (work around bug in synchronizer)
+  command: ansible xos-1 -u ubuntu -m shell \
+    -a "cd ~/service-profile/cord-pod; make vtn"
+
+- name: Wait for ExampleService VM to come up
+  shell: bash -c "source ~/admin-openrc.sh; nova list --all-tenants|grep 'exampleservice.*ACTIVE' > /dev/null"
+  register: result
+  until: result | success
+  retries: 10
+  delay: 60
+
+- name: Get ID of VM
+  shell: bash -c "source ~/admin-openrc.sh; nova list --all-tenants|grep mysite_exampleservice|cut -d '|' -f 2"
+  register: nova_id
+
+- name: Get mgmt IP of VM
+  shell: bash -c "source ~/admin-openrc.sh; nova interface-list {{ nova_id.stdout }}|grep -o -m 1 172.27.[[:digit:]]*.[[:digit:]]*"
+  register: mgmt_ip
+
+- name: Get public IP of VM
+  shell: bash -c "source ~/admin-openrc.sh; nova interface-list {{ nova_id.stdout }}|grep -o -m 1 10.168.[[:digit:]]*.[[:digit:]]*"
+  register: public_ip
+
+- name: Wait for Apache to come up inside VM
+  shell: ssh -o ProxyCommand="ssh -W %h:%p ubuntu@nova-compute-1" ubuntu@{{ mgmt_ip.stdout }} "ls /var/run/apache2/apache2.pid" > /dev/null
+  register: result
+  until: result | success
+  retries: 20
+  delay: 60
+
+- name: Install curl in testclient
+  command: ansible nova-compute-1 -u ubuntu -m shell \
+    -s -a "lxc-attach -n testclient -- apt-get -y install curl"
+
+- name: Test connectivity to ExampleService from test client
+  command: ansible nova-compute-1 -u ubuntu -m shell \
+    -s -a "lxc-attach -n testclient -- curl -s http://{{ public_ip.stdout }}"
+  register: curltest
+
+- name: Output from curl test
+  debug: var=curltest.stdout_lines
diff --git a/roles/post-deploy-tests/tasks/main.yml b/roles/test-vsg/tasks/main.yml
similarity index 97%
rename from roles/post-deploy-tests/tasks/main.yml
rename to roles/test-vsg/tasks/main.yml
index 32b8b63..14ed325 100644
--- a/roles/post-deploy-tests/tasks/main.yml
+++ b/roles/test-vsg/tasks/main.yml
@@ -1,5 +1,5 @@
 ---
-# post-deploy-tasks/tasks/main.yml
+# test-vsg/tasks/main.yml
 #
 # Run tests to check that the single-node deployment has worked
 
diff --git a/scripts/single-node-pod.sh b/scripts/single-node-pod.sh
index 6726467..d810d04 100755
--- a/scripts/single-node-pod.sh
+++ b/scripts/single-node-pod.sh
@@ -1,4 +1,4 @@
-!/usr/bin/env bash
+#!/usr/bin/env bash
 
 function cleanup_from_previous_test() {
     echo "## Cleanup ##"
@@ -66,62 +66,10 @@
     ansible-playbook -i $INVENTORY cord-single-playbook.yml --extra-vars="$extra_vars"
 }
 
-function setup_xos() {
-
-    if [[ $EXAMPLESERVICE -eq 1 ]]
-    then
-      ssh ubuntu@xos "cd service-profile/cord-pod; make exampleservice"
-
-      echo "(Temp workaround for bug in Synchronizer) Pause 60 seconds"
-      sleep 60
-      ssh ubuntu@xos "cd service-profile/cord-pod; make vtn"
-    fi
-
-}
-
 function run_e2e_test () {
     ansible-playbook -i $INVENTORY cord-post-deploy-playbook.yml
 }
 
-function run_exampleservice_test () {
-    source ~/admin-openrc.sh
-
-    echo "*** Wait for exampleservice VM to come up."
-    echo "!!! NOTE that currently the VM will only be created after you login"
-    echo "!!! to XOS and manually create an ExampleService tenant."
-    i=0
-    until nova list --all-tenants|grep exampleservice.*ACTIVE > /dev/null
-    do
-      sleep 60
-	    (( i += 1 ))
-	    echo "Waited $i minutes"
-    done
-
-    # get mgmt IP address
-    ID=$( nova list --all-tenants|grep mysite_exampleservice|awk '{print $2}' )
-    MGMTIP=$( nova interface-list $ID|grep 172.27|awk '{print $8}' )
-    PUBLICIP=$( nova interface-list $ID|grep 10.168|awk '{print $8}' )
-
-    echo ""
-    echo "*** ssh into exampleservice VM, wait for Apache come up"
-    i=0
-    until ssh -o ProxyCommand="ssh -W %h:%p ubuntu@nova-compute" ubuntu@$MGMTIP "ls /var/run/apache2/apache2.pid"
-    do
-      sleep 60
-      (( i += 1 ))
-      echo "Waited $i minutes"
-    done
-
-
-    echo ""
-    echo "*** Install curl in test client"
-    ssh ubuntu@nova-compute "sudo lxc-attach -n testclient -- apt-get -y install curl"
-
-    echo ""
-    echo "*** Test connectivity to ExampleService from test client"
-    ssh ubuntu@nova-compute "sudo lxc-attach -n testclient -- curl -s http://$PUBLICIP"
-}
-
 function run_diagnostics() {
     echo "*** COLLECTING DIAGNOSTIC INFO - check ~/diag-* on the head node"
     ansible-playbook -i $INVENTORY cord-diag-playbook.yml
@@ -129,25 +77,25 @@
 
 # Parse options
 RUN_TEST=0
-EXAMPLESERVICE=0
 SETUP_BRANCH="master"
 SETUP_REPO_URL="https://github.com/opencord/platform-install"
 INVENTORY="inventory/single-localhost"
 DIAGNOSTICS=1
+CLEANUP=0
 
-while getopts "b:dehi:p:r:ts:" opt; do
+while getopts "b:cdehi:p:r:ts:" opt; do
   case ${opt} in
     b ) XOS_BRANCH=$OPTARG
       ;;
-    d ) DIAGNOSTICS=0
+    c ) CLEANUP=1
       ;;
-    e ) EXAMPLESERVICE=1
+    d ) DIAGNOSTICS=0
       ;;
     h ) echo "Usage:"
       echo "    $0                install OpenStack and prep XOS and ONOS VMs [default]"
       echo "    $0 -b <branch>    checkout <branch> of the xos git repo"
+      echo "    $0 -c             cleanup from previous test"
       echo "    $0 -d             don't run diagnostic collector"
-      echo "    $0 -e             add exampleservice to XOS"
       echo "    $0 -h             display this help message"
       echo "    $0 -i <inv_file>  specify an inventory file (default is inventory/single-localhost)"
       echo "    $0 -p <git_url>   use <git_url> to obtain the platform-install git repo"
@@ -173,7 +121,7 @@
 done
 
 # What to do
-if [[ $RUN_TEST -eq 1 ]]
+if [[ $CLEANUP -eq 1 ]]
 then
   cleanup_from_previous_test
 fi
@@ -186,12 +134,6 @@
 if [[ $RUN_TEST -eq 1 ]]
 then
   run_e2e_test
-
-  if [[ $EXAMPLESERVICE -eq 1 ]]
-  then
-    setup_xos
-    run_exampleservice_test
-  fi
 fi
 
 if [[ $DIAGNOSTICS -eq 1 ]]