diff --git a/scripts/compute-ext-net-tutorial.sh b/scripts/compute-ext-net-tutorial.sh
deleted file mode 100755
index 50090a9..0000000
--- a/scripts/compute-ext-net-tutorial.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-
-apt-get update
-apt-get install bridge-utils
-brctl addbr databr
-ifconfig databr 10.168.0.1/24 up
-ip link add address 02:42:0a:a8:00:01 type veth
-ifconfig veth0 up
-ifconfig veth1 up
-brctl addif databr veth0
-ip addr add 10.168.1.1/24 dev databr
-iptables -t nat -A POSTROUTING -s 10.168.0.0/16 \! -d 10.168.0.0/16 -j MASQUERADE
-sysctl -w net.ipv4.ip_forward=1
-sysctl -w net.ipv4.conf.all.send_redirects=0
-sysctl -w net.ipv4.conf.default.send_redirects=0
-sysctl -w net.ipv4.conf.eth0.send_redirects=0
-sysctl -w net.ipv4.conf.databr.send_redirects=0
\ No newline at end of file
diff --git a/scripts/compute-ext-net.sh b/scripts/compute-ext-net.sh
deleted file mode 100755
index 762d37f..0000000
--- a/scripts/compute-ext-net.sh
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-apt-get update
-apt-get install bridge-utils
-brctl addbr databr
-ifconfig databr 10.168.0.1/24 up
-ip link add address 02:42:0a:a8:00:01 type veth
-ifconfig veth0 up
-ifconfig veth1 up
-brctl addif databr veth0
-iptables -t nat -A POSTROUTING -s 10.168.0.0/24 \! -d 10.168.0.0/24 -j MASQUERADE
-sysctl -w net.ipv4.ip_forward=1
diff --git a/scripts/create-vms-cord.sh b/scripts/create-vms-cord.sh
deleted file mode 100755
index a0af3ed..0000000
--- a/scripts/create-vms-cord.sh
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/bin/bash
-
-TESTING=false
-
-while [[ $# > 0 ]]
-do
-key="$1"
-
-case $key in
-    --testing)
-    TESTING=true
-    ;;
-    *)
-    ;;
-esac
-shift
-done
-
-function create-vm {
-	NAME=$1
-	CPU=$2
-	MEM_MB=$3
-	DISK_GB=$4
-	uvt-kvm list | grep $1
-	if [ "$?" -ne "0" ]
-	then
-		if $TESTING
-		then
-			# Don't use mgmtbr for testing
-			uvt-kvm create $NAME release=trusty --cpu=$CPU --memory=$MEM_MB --disk=$DISK_GB
-		else
-			uvt-kvm create $NAME release=trusty --cpu=$CPU --memory=$MEM_MB --disk=$DISK_GB --bridge mgmtbr
-		fi
-		# uvt-kvm wait --insecure $NAME
-	fi
-}
-
-function wait-for-vm {
-  NAME=$1
-  until dig $NAME && ssh ubuntu@$NAME "ls"
-  do
-    sleep 1
-  done
-}
-
-create-vm juju 1 2048 20
-create-vm mysql 2 4096 40
-create-vm rabbitmq-server 2 4096 40
-create-vm keystone 2 4096 40
-create-vm glance 2 4096 160
-create-vm nova-cloud-controller 2 4096 40
-create-vm neutron-api 2 4096 40
-create-vm openstack-dashboard 1 2048 20
-create-vm ceilometer 1 2048 20
-create-vm nagios 1 2048 20
-
-create-vm xos 2 4096 40
-create-vm onos-cord 2 4096 40
-create-vm onos-fabric 2 4096 40
-if $TESTING
-then
-	create-vm nova-compute 6 16384 240
-fi
-
-# Wait for everything to get set up
-wait-for-vm juju
-wait-for-vm mysql
-wait-for-vm rabbitmq-server
-wait-for-vm keystone
-wait-for-vm glance
-wait-for-vm nova-cloud-controller
-wait-for-vm neutron-api
-wait-for-vm openstack-dashboard
-wait-for-vm ceilometer
-wait-for-vm nagios
-
-wait-for-vm xos
-wait-for-vm onos-cord
-wait-for-vm onos-fabric
-if $TESTING
-then
-	wait-for-vm nova-compute
-fi
diff --git a/scripts/create-vms.sh b/scripts/create-vms.sh
deleted file mode 100755
index 1f1c789..0000000
--- a/scripts/create-vms.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-function create-vm {
-	NAME=$1
-	CPU=$2
-	MEM_MB=$3
-	DISK_GB=$4
-	uvt-kvm list | grep $1
-	if [ "$?" -ne "0" ]
-	then
-		uvt-kvm create $NAME release=trusty --cpu=$CPU --memory=$MEM_MB --disk=$DISK_GB
-		uvt-kvm wait --insecure $NAME
-	fi
-}
-
-create-vm juju 1 2048 20
-create-vm mysql 2 4096 40
-create-vm rabbitmq-server 2 4096 40
-create-vm keystone 2 4096 40
-create-vm glance 2 4096 160
-create-vm nova-cloud-controller 2 4096 40
-create-vm neutron-gateway 2 4096 40
-create-vm neutron-api 2 4096 40
-create-vm openstack-dashboard 1 2048 20
-create-vm ceilometer 1 2048 20
-create-vm nagios 1 2048 20
diff --git a/scripts/juju-compute-relations.py b/scripts/juju-compute-relations.py
deleted file mode 100755
index 535b5d4..0000000
--- a/scripts/juju-compute-relations.py
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-import time
-import argparse
-
-sleep_interval = 1
-
-relations = [
-    "nova-compute:shared-db mysql:shared-db",
-    "nova-compute:amqp rabbitmq-server:amqp",
-    "nova-compute glance",
-    "nova-compute nova-cloud-controller",
-    "nova-compute neutron-openvswitch",
-    "ntp nova-compute",
-    "nova-compute nagios",
-    "nova-compute nrpe",
-    "nova-compute:nova-ceilometer ceilometer-agent:nova-ceilometer",
-    ]
-
-def addrelation(relation):
-    subprocess.check_call("juju add-relation %s" % relation, shell=True)
-
-def destroyrelation(relation):
-    subprocess.check_call("juju destroy-relation %s" % relation, shell=True)
-
-def addrelations():
-    for relation in relations:
-        print "Adding relation %s" % relation
-        try:
-            addrelation(relation)
-            time.sleep(sleep_interval)
-        except:
-            pass
-
-def destroyrelations():
-    for relation in relations:
-        print "Destroying relation %s" % relation
-        try:
-            destroyrelation(relation)
-            time.sleep(sleep_interval)
-        except:
-            pass
-
-def main():
-    parser = argparse.ArgumentParser(description='Deploy OpenStack controller services')
-    parser.add_argument('--destroy', action='store_true',
-                       help='Destroy the relations instead of adding them')
-
-    args = parser.parse_args()
-    if args.destroy:
-        destroyrelations()
-    else:
-        addrelations()
-
-if  __name__ =='__main__':
-    main()
diff --git a/scripts/juju-compute-setup.py b/scripts/juju-compute-setup.py
deleted file mode 100755
index 326eaf3..0000000
--- a/scripts/juju-compute-setup.py
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-import json
-import time
-
-jujuconfig="/usr/local/src/openstack.cfg"
-
-services = {
-#    "nova-compute" : "--config=%s cs:~andybavier/trusty/nova-compute" % jujuconfig,
-    "nova-compute" : "--config=%s nova-compute" % jujuconfig,
-}
-
-def get_free_machines(status):
-    for (service, svcinfo) in status['services'].iteritems():
-        if 'units' in svcinfo:
-            for (unit, unitinfo) in svcinfo['units'].iteritems():
-                if 'machine' in unitinfo:
-                    machine = unitinfo['machine']
-                    status['machines'][machine]['unit'] = unit
-
-    free = {}
-    for (machine, mchinfo) in status['machines'].iteritems():
-        if machine == "0":
-            continue
-
-        if 'unit' not in mchinfo:
-            # print "%s: %s" % (machine, mchinfo['dns-name'])
-            free[machine] = mchinfo
-
-    return free
-
-
-def deploy(status, service, cmd):
-    # Deploy nova-compute to all free machines
-    machines = get_free_machines(status)
-
-    for (machine, mchinfo) in machines.iteritems():
-        if service in status['services']:
-            print "Adding unit %s on %s" % (service, mchinfo['dns-name'])
-            subprocess.check_call("juju add-unit --to=%s %s" % (machine, service), shell=True)
-        else:
-            print "Deploying service %s on %s" % (service, mchinfo['dns-name'])
-            subprocess.check_call("juju deploy --to=%s %s" % (machine, cmd), shell=True)
-            status['services'][service] = "installed"
-            time.sleep(10)
-
-def get_juju_status():
-    output = subprocess.check_output("juju status --format=json", shell=True)
-    status = json.loads(output)
-    return status
-
-def addservices():
-    status = get_juju_status()
-
-    for service, cmd in services.iteritems():
-        try:
-            deploy(status, service, cmd)
-        except:
-            pass
-
-def main():
-    addservices()
-
-if  __name__ =='__main__':
-    main()
diff --git a/scripts/juju-relations.py b/scripts/juju-relations.py
deleted file mode 100755
index 9c4b1f7..0000000
--- a/scripts/juju-relations.py
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-import time
-import argparse
-
-sleep_interval = 1
-
-relations = ["keystone mysql",
-             "nova-cloud-controller mysql",
-             "nova-cloud-controller rabbitmq-server",
-             "nova-cloud-controller glance",
-             "nova-cloud-controller keystone",
-             "glance mysql",
-             "glance keystone",
-             "neutron-gateway neutron-api",
-             "neutron-gateway:amqp rabbitmq-server:amqp",
-             "neutron-gateway nova-cloud-controller",
-             "neutron-gateway mysql",
-             "neutron-api keystone",
-             "neutron-api neutron-openvswitch",
-             "neutron-api mysql",
-             "neutron-api rabbitmq-server",
-             "neutron-api nova-cloud-controller",
-             "neutron-openvswitch rabbitmq-server",
-             "openstack-dashboard keystone",
-#             "mysql nagios",
-#             "rabbitmq-server nagios",
-#             "keystone nagios",
-#             "glance nagios",
-#             "nova-cloud-controller nagios",
-#             "neutron-gateway nagios",
-#             "openstack-dashboard nagios",
-#             "neutron-api nagios",
-             "nagios nrpe",
-             "mysql:juju-info nrpe:general-info",
-             "rabbitmq-server nrpe",
-             "keystone nrpe",
-             "glance nrpe",
-             "nova-cloud-controller nrpe",
-             "neutron-gateway nrpe",
-             "openstack-dashboard nrpe",
-             "neutron-api nrpe",
-             "ceilometer mongodb",
-             "ceilometer rabbitmq-server",
-             "ceilometer:identity-service keystone:identity-service",
-             "ceilometer:ceilometer-service ceilometer-agent:ceilometer-service",
-             "ceilometer nagios",
-             "ceilometer nrpe",
-             ]
-
-def addrelation(relation):
-    subprocess.check_call("juju add-relation %s" % relation, shell=True)
-
-def destroyrelation(relation):
-    subprocess.check_call("juju destroy-relation %s" % relation, shell=True)
-
-def addrelations():
-    for relation in relations:
-        print "Adding relation %s" % relation
-        try:
-            addrelation(relation)
-            time.sleep(sleep_interval)
-        except:
-            pass
-
-def destroyrelations():
-    for relation in relations:
-        print "Destroying relation %s" % relation
-        try:
-            destroyrelation(relation)
-            time.sleep(sleep_interval)
-        except:
-            pass
-
-def main():
-    parser = argparse.ArgumentParser(description='Deploy OpenStack controller services')
-    parser.add_argument('--destroy', action='store_true',
-                       help='Destroy the relations instead of adding them')
-
-    args = parser.parse_args()
-    if args.destroy:
-        destroyrelations()
-    else:
-        addrelations()
-
-if  __name__ =='__main__':
-    main()
diff --git a/scripts/juju-setup.py b/scripts/juju-setup.py
deleted file mode 100755
index 3a75b07..0000000
--- a/scripts/juju-setup.py
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/usr/bin/python
-
-import subprocess
-import json
-import socket
-
-jujuconfig="/usr/local/src/openstack.cfg"
-
-# Assumption: VMs have same hostname as service that runs inside
-machines = ["mysql", "rabbitmq-server", "keystone", "glance", "nova-cloud-controller",
-            "neutron-gateway", "openstack-dashboard", "ceilometer", "nagios", "neutron-api"]
-
-services = {
-    "mysql" : "mysql",
-    "rabbitmq-server" : "rabbitmq-server",
-    "keystone" : "--config=%s keystone" % jujuconfig,
-    "glance" : "--config=%s glance" % jujuconfig,
-#    "nova-cloud-controller" : "--config=%s cs:~andybavier/trusty/nova-cloud-controller" % jujuconfig,
-    "nova-cloud-controller" : "--config=%s nova-cloud-controller" % jujuconfig,
-    "neutron-gateway" : "--config=%s cs:~andybavier/trusty/neutron-gateway" % jujuconfig,
-#    "neutron-gateway" : "--config=%s neutron-gateway" % jujuconfig,
-    "neutron-api" : "--config=%s neutron-api" % jujuconfig,
-    "neutron-openvswitch" : "--config=%s neutron-openvswitch" % jujuconfig,
-    "openstack-dashboard" : "--config=%s openstack-dashboard" % jujuconfig,
-    "nagios" : "nagios",
-    "mongodb" : "mongodb",   # deploy to ceilometer machine
-    "ceilometer" : "ceilometer",
-    "nrpe" : "nrpe",
-    "ntp" : "ntp",
-    "ceilometer-agent" : "ceilometer-agent"
-}
-
-# Figure out Juju ID of machine we should install on
-def get_machine(status, service):
-    if service == "mongodb":
-        service = "ceilometer"
-    for key, value in status['machines'].iteritems():
-        (hostname, aliaslist, ipaddrlist) = socket.gethostbyaddr(value['dns-name'])
-        if hostname == service:
-            return key
-    return None
-
-def deploy(status, service, cmd):
-    if service in status['services']:
-        return
-
-    print "Installing %s" % service
-    machine = get_machine(status, service)
-    if machine:
-        subprocess.check_call("juju deploy --to=%s %s" % (machine, cmd), shell=True)
-    else:
-        subprocess.check_call("juju deploy %s" % cmd, shell=True)
-
-def get_juju_status():
-    output = subprocess.check_output("juju status --format=json", shell=True)
-    status = json.loads(output)
-    return status
-
-def addservices():
-    status = get_juju_status()
-
-    for service, cmd in services.iteritems():
-        try:
-            deploy(status, service, cmd)
-        except:
-            pass
-
-def addmachines():
-    status = get_juju_status()
-
-    for machine in machines:
-        if get_machine(status, machine) == None:
-            ipaddr = socket.gethostbyname(machine)
-            subprocess.check_call("juju add-machine ssh:%s" % ipaddr, shell=True)
-
-def main():
-    addmachines()
-    addservices()
-
-if  __name__ =='__main__':
-    main()
diff --git a/scripts/network-setup.sh b/scripts/network-setup.sh
deleted file mode 100755
index 05e4c12..0000000
--- a/scripts/network-setup.sh
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-source ~/admin-openrc.sh
-
-function create-flat-net {
-    NAME=$1
-    neutron net-show $NAME-net 2>&1 > /dev/null
-    if [ "$?" -ne 0 ]
-    then
-	neutron net-create --provider:physical_network=$NAME --provider:network_type=flat --shared $NAME-net
-    fi
-}
-
-function create-subnet {
-    NAME=$1
-    CIDR=$2
-    GW=$3
-
-    neutron subnet-show $NAME-net 2>&1 > /dev/null
-    if [ "$?" -ne 0 ]
-    then
-	neutron subnet-create $NAME-net --name $NAME-net $CIDR --gateway=$GW --disable-dhcp
-    fi
-}
-
-function create-subnet-no-gateway {
-    NAME=$1
-    CIDR=$2
-
-    neutron subnet-show $NAME-net 2>&1 > /dev/null
-    if [ "$?" -ne 0 ]
-    then
-	neutron subnet-create $NAME-net --name $NAME-net $CIDR --no-gateway --disable-dhcp
-    fi
-}
-
-create-flat-net nat
-create-subnet nat 172.16.0.0/16 172.16.0.1
-
-create-flat-net ext
diff --git a/scripts/recreate-virbr0.sh b/scripts/recreate-virbr0.sh
deleted file mode 100644
index d38a6d5..0000000
--- a/scripts/recreate-virbr0.sh
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/sh
-
-FILE=/etc/libvirt/qemu/networks/default.xml
-
-cp $FILE $FILE.tmp
-virsh net-destroy default
-virsh net-undefine default
-
-cp $FILE.tmp $FILE
-virsh net-create $FILE
diff --git a/scripts/single-node-pod.sh b/scripts/single-node-pod.sh
index 70a56aa..3f24801 100755
--- a/scripts/single-node-pod.sh
+++ b/scripts/single-node-pod.sh
@@ -27,7 +27,7 @@
 function bootstrap() {
     cd ~
     sudo apt-get update
-    sudo apt-get -y install software-properties-common curl git mosh tmux dnsutils python-netaddr
+    sudo apt-get -y install software-properties-common curl git tmux dnsutils python-netaddr python-dnspython
     sudo add-apt-repository -y ppa:ansible/ansible
     sudo apt-get update
     sudo apt-get install -y ansible
@@ -52,7 +52,7 @@
     if [[ "$XOS_REPO_URL" != "" ]]; then
         extra_vars="$extra_vars xos_repo_url=$XOS_REPO_URL"
     fi
-    if [[ "$XOS_BRANCH" != "" ]]; then 
+    if [[ "$XOS_BRANCH" != "" ]]; then
         extra_vars="$extra_vars xos_repo_branch=$XOS_BRANCH"
     fi
 
diff --git a/scripts/wait-for-services.sh b/scripts/wait-for-services.sh
deleted file mode 100755
index da4ef1f..0000000
--- a/scripts/wait-for-services.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Wait for there to be no services in pending state
-while $( juju status --format=summary|grep -q pending )
-do
-  sleep 10
-done
