From c1353c8a2462543da6dde22ffc352c0fd200c6f7 Mon Sep 17 00:00:00 2001 From: Sapan Date: Tue, 2 Dec 2014 23:50:37 -0500 Subject: [PATCH] Added sys_dir support for cataloging ansible recipes for objects --- planetstack/openstack_observer/ansible.py | 78 ++++++++++++++--------- 1 file changed, 49 insertions(+), 29 deletions(-) diff --git a/planetstack/openstack_observer/ansible.py b/planetstack/openstack_observer/ansible.py index 5eec7d9..cb84c96 100755 --- a/planetstack/openstack_observer/ansible.py +++ b/planetstack/openstack_observer/ansible.py @@ -3,11 +3,16 @@ import jinja2 import tempfile import os import json +import pdb +import string +import random try: step_dir = Config().observer_steps_dir + sys_dir = Config().observer_sys_dir except: step_dir = '/opt/planetstack/observer/steps' + sys_dir = '/opt/opencloud' os_template_loader = jinja2.FileSystemLoader( searchpath=step_dir) os_template_env = jinja2.Environment(loader=os_template_loader) @@ -18,48 +23,63 @@ def parse_output(msg): print msg for l in lines: - magic_str = 'ok: [127.0.0.1] => ' - magic_str2 = 'changed: [127.0.0.1] => ' + magic_str = 'ok: [127.0.0.1] => ' + magic_str2 = 'changed: [127.0.0.1] => ' if (l.startswith(magic_str)): - w = len(magic_str) - str = l[w:] - d = json.loads(str) - results.append(d) - elif (l.startswith(magic_str2)): - w = len(magic_str2) - str = l[w:] - d = json.loads(str) - results.append(d) + w = len(magic_str) + str = l[w:] + d = json.loads(str) + results.append(d) + elif (l.startswith(magic_str2)): + w = len(magic_str2) + str = l[w:] + d = json.loads(str) + results.append(d) return results - -def run_template(name, opts): + +def id_generator(size=6, chars=string.ascii_uppercase + string.digits): + return ''.join(random.choice(chars) for _ in range(size)) + +def run_template(name, opts,path=''): template = os_template_env.get_template(name) buffer = template.render(opts) - - f = tempfile.NamedTemporaryFile(mode='w') + + import pdb + + #f = open('/tmp/obsans','w') + try: + objname = opts['ansible_tag'] + except: + objname= id_generator() + os.system('mkdir -p %s'%'/'.join([sys_dir,path])) + fqp = '/'.join([sys_dir,path,objname]) + + + f = open(fqp,'w') f.write(buffer) f.flush() - - run = os.popen('/opt/planetstack/observer/run_ansible '+f.name) + + os.system('cp %s %s-backup'%(fqp,fqp)) + run = os.popen('/opt/planetstack/observer/run_ansible '+fqp) msg = run.read() status = run.close() try: - ok_results = parse_output(msg) + ok_results = parse_output(msg) except ValueError,e: - print str(e) - raise e + print str(e) + raise e 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'] }) + 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