From 43549cbb0c79e52c4bd61b832f7bb22fdab78d68 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 14 Oct 2014 12:33:44 -0400 Subject: [PATCH] Ansible library module for new Ansible-based Observer backend --- planetstack/observer | 2 +- planetstack/openstack_observer/ansible.py | 54 +++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 planetstack/openstack_observer/ansible.py diff --git a/planetstack/observer b/planetstack/observer index 10522a2..ae75af5 120000 --- a/planetstack/observer +++ b/planetstack/observer @@ -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 index 0000000..2574f60 --- /dev/null +++ b/planetstack/openstack_observer/ansible.py @@ -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'] }) -- 2.43.0