git://git.onelab.eu
/
plstackapi.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Quote commands when running ansible
[plstackapi.git]
/
planetstack
/
openstack_observer
/
ansible.py
diff --git
a/planetstack/openstack_observer/ansible.py
b/planetstack/openstack_observer/ansible.py
old mode 100755
(executable)
new mode 100644
(file)
index
cb84c96
..
41dc6f0
--- a/
planetstack/openstack_observer/ansible.py
+++ b/
planetstack/openstack_observer/ansible.py
@@
-6,6
+6,7
@@
import json
import pdb
import string
import random
import pdb
import string
import random
+import re
try:
step_dir = Config().observer_steps_dir
try:
step_dir = Config().observer_steps_dir
@@
-42,17
+43,18
@@
def parse_output(msg):
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
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=''):
+def shellquote(s):
+ return "'" + s.replace("'", "'\\''") + "'"
+
+def run_template(name, opts,path='', expected_num=None):
template = os_template_env.get_template(name)
buffer = template.render(opts)
template = os_template_env.get_template(name)
buffer = template.render(opts)
- import pdb
-
- #f = open('/tmp/obsans','w')
try:
objname = opts['ansible_tag']
except:
objname= id_generator()
try:
objname = opts['ansible_tag']
except:
objname= id_generator()
+
os.system('mkdir -p %s'%'/'.join([sys_dir,path]))
fqp = '/'.join([sys_dir,path,objname])
os.system('mkdir -p %s'%'/'.join([sys_dir,path]))
fqp = '/'.join([sys_dir,path,objname])
@@
-61,16
+63,27
@@
def run_template(name, opts,path=''):
f.write(buffer)
f.flush()
f.write(buffer)
f.flush()
-
os.system('cp %s %s-backup'%(fqp,
fqp))
-
run = os.popen('/opt/planetstack/observer/run_ansible '+fqp
)
+
run = os.popen('/opt/planetstack/observer/run_ansible %s'%shellquote(
fqp))
+
#run = os.popen('ansible-playbook -v %s'%shellquote(fqp)
)
msg = run.read()
status = run.close()
try:
ok_results = parse_output(msg)
msg = run.read()
status = run.close()
try:
ok_results = parse_output(msg)
+ if (len(ok_results) != expected_num):
+ raise ValueError('Unexpected num')
except ValueError,e:
except ValueError,e:
- print str(e)
- raise e
+ all_fatal = re.findall(r'^msg: (.*)',msg,re.MULTILINE)
+ all_fatal2 = re.findall(r'^ERROR: (.*)',msg,re.MULTILINE)
+
+
+ all_fatal.extend(all_fatal2)
+ try:
+ error = ' // '.join(all_fatal)
+ except:
+ pass
+ raise Exception(error)
+
return ok_results
def main():
return ok_results
def main():