merged master
diff --git a/scripts/single-node-pod.sh b/scripts/single-node-pod.sh
index 39777f7..1457f3c 100755
--- a/scripts/single-node-pod.sh
+++ b/scripts/single-node-pod.sh
@@ -1,10 +1,10 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 function cleanup_from_previous_test() {
     VMS=$( sudo virsh list|grep running|awk '{print $2}' )
     for VM in $VMS
     do
-	sudo uvt-kvm destroy $VM
+      sudo uvt-kvm destroy $VM
     done
 
     rm -rf ~/.juju
@@ -52,9 +52,9 @@
     i=0
     until juju status --format=summary|grep "started:  22" > /dev/null
     do
-	sleep 60
-	(( i += 1 ))
-	echo "Waited $i minutes"
+	    sleep 60
+	    (( i += 1 ))
+	    echo "Waited $i minutes"
     done
 
     echo "All OpenStack services are up."
@@ -64,6 +64,24 @@
     echo ""
     echo "Setting up simulated fabric on nova-compute node"
     ssh ubuntu@nova-compute.cordtest.opencloud.us "wget https://raw.githubusercontent.com/open-cloud/openstack-cluster-setup/master/scripts/compute-ext-net.sh; sudo bash compute-ext-net.sh"
+
+    if [[ $EXAMPLESERVICE -eq 1 ]]
+    then
+      SCRIPT=compute-ext-net-tutorial.sh
+    else
+      SCRIPT=compute-ext-net.sh
+    fi
+    ssh ubuntu@nova-compute "wget https://raw.githubusercontent.com/open-cloud/openstack-cluster-setup/master/scripts/$SCRIPT; sudo bash $SCRIPT"
+}
+
+function build_xos_with_exampleservice() {
+    echo ""
+    echo "Adding exampleservice to XOS"
+    ssh ubuntu@xos "cd xos; git config --global user.email 'ubuntu@localhost'; git config --global user.name 'XOS ExampleService'"
+    ssh ubuntu@xos "cd xos/xos/configurations/cord-pod; git cherry-pick 775e00549e535803522fbcd70152e5e1b0629c83"
+    echo ""
+    echo "Rebuilding XOS containers"
+    ssh ubuntu@xos "cd xos/xos/configurations/cord-pod; make local_containers"
 }
 
 function setup_xos() {
@@ -97,6 +115,11 @@
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- ip link add link eth0.222 name eth0.222.111 type vlan id 111"
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- ifconfig eth0.222 up"
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- ifconfig eth0.222.111 up"
+
+    if [[ $EXAMPLESERVICE -eq 1 ]]
+    then
+      ssh ubuntu@xos "cd xos/xos/configurations/cord-pod; make exampleservice"
+    fi
 }
 
 function run_e2e_test() {
@@ -104,11 +127,12 @@
 
     echo "*** Wait for vSG VM to come up"
     i=0
-    until nova list --all-tenants|grep ACTIVE > /dev/null
+
+    until nova list --all-tenants|grep 'vsg.*ACTIVE' > /dev/null
     do
-	sleep 60
-	(( i += 1 ))
-	echo "Waited $i minutes"
+      sleep 60
+      (( i += 1 ))
+      echo "Waited $i minutes"
     done
 
     # get mgmt IP address
@@ -120,20 +144,20 @@
     i=0
     until ssh -o ProxyCommand="ssh -W %h:%p ubuntu@nova-compute" ubuntu@$MGMTIP "sudo docker ps|grep vcpe" > /dev/null
     do
-	sleep 60
-	(( i += 1 ))
-	echo "Waited $i minutes"
+      sleep 60
+      (( i += 1 ))
+      echo "Waited $i minutes"
     done
 
     echo ""
     echo "*** Run dhclient in test client"
+
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- dhclient eth0.222.111" > /dev/null
 
     echo ""
     echo "*** Routes in test client"
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- route -n"
 
-
     echo ""
     echo "*** Test external connectivity in test client"
     ssh ubuntu@nova-compute.cordtest.opencloud.us "sudo lxc-attach -n testclient -- ping -c 3 8.8.8.8"
@@ -141,26 +165,66 @@
     echo ""
     if [ $? -eq 0 ]
     then
-	echo "*** [PASSED] End-to-end connectivity test"
-	exit 0
+      echo "*** [PASSED] End-to-end connectivity test"
     else
-	echo "*** [FAILED] End-to-end connectivity test"
-	exit 1
+      echo "*** [FAILED] End-to-end connectivity test"
+      exit 1
     fi
 }
 
+function run_exampleservice_test () {
+    source ~/admin-openrc.sh
+
+    echo "*** Wait for exampleservice VM to come up."
+    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"
+}
+
 # Parse options
 RUN_TEST=0
-while getopts ":ht" opt; do
+EXAMPLESERVICE=0
+while getopts ":eht" opt; do
   case ${opt} in
     h ) "echo Usage:"
       echo "    $0            install OpenStack and prep XOS and ONOS VMs [default]"
+      echo "    $0 -e         add exampleservice to XOS"
       echo "    $0 -h         display this help message"
       echo "    $0 -t         do install, bring up cord-pod configuration, run E2E test"
       exit 0
       ;;
     t ) RUN_TEST=1
       ;;
+    e ) EXAMPLESERVICE=1
+      ;;
     \? ) echo "Invalid option"
       exit 1
       ;;
@@ -183,7 +247,18 @@
 
 if [[ $RUN_TEST -eq 1 ]]
 then
+  if [[ $EXAMPLESERVICE -eq 1 ]]
+  then
+    build_xos_with_exampleservice
+  fi
   setup_xos
   setup_test_client
   run_e2e_test
+  if [[ $EXAMPLESERVICE -eq 1 ]]
+  then
+    run_exampleservice_test
+  fi
 fi
+
+exit 0
+