Ansible library module for new Ansible-based Observer backend
authorroot <root@ip-172-31-38-128.ec2.internal>
Tue, 14 Oct 2014 16:33:44 +0000 (12:33 -0400)
committerroot <root@ip-172-31-38-128.ec2.internal>
Tue, 14 Oct 2014 16:33:44 +0000 (12:33 -0400)
planetstack/observer
planetstack/openstack_observer/ansible.py [new file with mode: 0755]

index 10522a2..ae75af5 120000 (symlink)
@@ -1 +1 @@
-ec2_observer
\ No newline at end of file
+openstack_observer
\ No newline at end of file
diff --git a/planetstack/openstack_observer/ansible.py b/planetstack/openstack_observer/ansible.py
new file mode 100755 (executable)
index 0000000..2574f60
--- /dev/null
@@ -0,0 +1,54 @@
+#!/usr/bin/python
+import jinja2
+import tempfile
+import os
+import json
+
+try:
+    step_dir = Config().observer_steps_dir
+except:
+    step_dir = '/opt/planetstack/observer/steps'
+
+os_template_loader = jinja2.FileSystemLoader( searchpath=step_dir)
+os_template_env = jinja2.Environment(loader=os_template_loader)
+
+def parse_output(msg):
+    lines = msg.splitlines()
+    results = []
+    print msg
+
+    for l in lines:
+       magic_str = 'ok: [127.0.0.1] => '
+        if (l.startswith(magic_str)):
+           w = len(magic_str)
+           str = l[w:]
+           d = json.loads(str)
+           results.append(d)
+
+    return results
+           
+def run_template(name, opts):
+    template = os_template_env.get_template(name)
+    buffer = template.render(opts)
+    
+    f = tempfile.NamedTemporaryFile(mode='w')
+    f.write(buffer)
+    f.flush()
+    
+    run = os.popen('/opt/planetstack/observer/run_ansible '+f.name)
+    msg = run.read()
+    status = run.close()
+
+    ok_results = parse_output(msg)
+    return ok_results
+
+def main():
+       run_template('ansible/sync_user_deployments.yaml',{ "endpoint" : "http://172.31.38.128:5000/v2.0/",
+                 "name" : "Sapan Bhatia",
+                 "email": "gwsapan@gmail.com",
+                 "password": "foobar",
+                 "admin_user":"admin",
+                 "admin_password":"6a789bf69dd647e2",
+                 "admin_tenant":"admin",
+                "tenant":"demo",
+                 "roles":['user','admin'] })