X-Git-Url: https://gerrit.onap.org/r/gitweb?p=ccsdk%2Fdistribution.git;a=blobdiff_plain;f=ansible-server%2Fsrc%2Fmain%2Fansible-server%2FAnsibleModule.py;h=63cd805ac8133a0324daf627801bfc0066607a07;hp=d0af0cf2f3807dbfe39ce05409a8d46a4d249401;hb=2ad824206845d714efaab6de71ad9294db5509cc;hpb=274830837af67ce2db232bb11dc4d227609ecb89 diff --git a/ansible-server/src/main/ansible-server/AnsibleModule.py b/ansible-server/src/main/ansible-server/AnsibleModule.py index d0af0cf2..63cd805a 100755 --- a/ansible-server/src/main/ansible-server/AnsibleModule.py +++ b/ansible-server/src/main/ansible-server/AnsibleModule.py @@ -33,15 +33,13 @@ import cherrypy from cherrypy.lib.httputil import parse_query_string from cherrypy.lib import auth_basic -def ansibleSysCall (inventory_path, playbook_path, nodelist, mandatory, - envparameters, localparameters, timeout, playbookdir): - +def ansibleSysCall (inventory_path, playbook_path, nodelist, mandatory, envparameters, localparameters, timeout, playbookdir): cherrypy.log( "***> in AnsibleModule.ansibleSysCall") log = [] str_parameters = '' - if not envparameters == '': + if envparameters: for key in envparameters: if str_parameters == '': str_parameters = '"' + str(key) + '=\'' + str(envparameters[key]) + '\'' @@ -51,50 +49,54 @@ def ansibleSysCall (inventory_path, playbook_path, nodelist, mandatory, str_parameters += '"' if len(str_parameters) > 0: - cmd = 'export HOME=/home/ansible; env; cd ' + playbookdir + ';' +'timeout -s KILL -t ' + str(timeout) + \ + cmd = 'cd ' + playbookdir + ';' + 'timeout -s KILL -t ' + str(timeout) + \ ' ansible-playbook -v --timeout ' + str(timeout) + ' --extra-vars ' + str_parameters + ' -i ' + \ inventory_path + ' ' + playbook_path + ' | tee log.file' else: - cmd = 'export HOME=/home/ansible; env; cd ' + playbookdir + ';' +'timeout -s KILL -t ' + str(timeout) + \ - ' ansible-playbook -v --timeout ' + str(timeout) + ' -i ' + inventory_path + ' ' + playbook_path +' | tee log.file' + cmd = 'cd ' + playbookdir + ';' + 'timeout -s KILL -t ' + str(timeout) + \ + ' ansible-playbook -v --timeout ' + str(timeout) + ' -i ' + inventory_path + ' ' + playbook_path + ' | tee log.file' cherrypy.log("CMD: " + cmd) cherrypy.log("PlayBook Start: " + playbookdir ) - p = subprocess.Popen(cmd, shell=True, - stdout=subprocess.PIPE, - stderr=subprocess.STDOUT) + p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) #PAP #p.wait() - (stdout_value, err) = p.communicate() + stdout_value, err = p.communicate() + stdout_value = stdout_value.splitlines() - stdout_value_cleanup = '' + stdout_value_cleanup = [] for line in stdout_value: - stdout_value_cleanup += line.replace(' ', ' ') - stdout_value = stdout_value_cleanup.splitlines() + stdout_value_cleanup.append(line.replace(' ', ' ')) + stdout_value = stdout_value_cleanup ParseFlag = False retval = {} returncode = p.returncode if returncode == 137: - cherrypy.log(" ansible-playbook system call timed out") # ansible-playbook system call timed out for line in stdout_value: # p.stdout.readlines(): log.append (line) - - else: - for line in stdout_value: # p.stdout.readlines(): - print line # line, + if line: + cherrypy.log("OUTPUT: %s" % line) + if ParseFlag and len(line.strip())>0: ip_address = line.split(':')[0].strip() - ok_flag = line.split(':')[1].strip().split('=')[1].split('changed')[0].strip() - changed_flag = line.split(':')[1].strip().split('=')[2].split('unreachable')[0].strip() - unreachable_flag = line.split(':')[1].strip().split('=')[3].split('failed')[0].strip() - failed_flag = line.split(':')[1].strip().split('=')[4].strip() + exec_results = line.split(':')[1].strip() + + result_items = [item for item in exec_results.split(' ') if item] + cherrypy.log("Execcution results of '%s': %s" % (ip_address, str(result_items))) + # ['ok=6', 'changed=5', 'unreachable=0', 'failed=0', 'skipped=3', 'rescued=0', 'ignored=0'] + + ok_flag = result_items[0].split('=')[1].strip() + changed_flag = result_items[1].split('=')[1].strip() + unreachable_flag = result_items[2].split('=')[1].strip() + failed_flag = result_items[3].split('=')[1].strip() + retval[ip_address]=[ok_flag, changed_flag, unreachable_flag, failed_flag] if "PLAY RECAP" in line: ParseFlag = True @@ -128,7 +130,7 @@ if __name__ == '__main__': p = Process(nodelist=ansible_call, args=('ansible_module_config', playbook_file, nodelist,d, )) p.start() - print "Process running" - print d + print("Process running") + print(d) p.join() - print d + print(d)