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
+
