Initial commit
diff --git a/scripts/juju-compute-setup.py b/scripts/juju-compute-setup.py
new file mode 100755
index 0000000..cc62b50
--- /dev/null
+++ b/scripts/juju-compute-setup.py
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+import subprocess
+import json
+import time
+
+jujuconfig="/home/ubuntu/openstack.cfg"
+
+services = {
+ "nova-compute" : "--config=%s cs:~andybavier/trusty/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()