From: root Date: Tue, 14 Oct 2014 16:33:44 +0000 (-0400) Subject: Ansible library module for new Ansible-based Observer backend X-Git-Url: http://git.onelab.eu/?p=plstackapi.git;a=commitdiff_plain;h=43549cbb0c79e52c4bd61b832f7bb22fdab78d68 Ansible library module for new Ansible-based Observer backend --- 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'] })