summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEnbo Wang <wangenbo@huawei.com>2019-05-01 23:34:34 +0000
committerEnbo Wang <wangenbo@huawei.com>2019-05-01 23:35:52 +0000
commitf5dc878f3041c069c747bf2d04a1e6b15aa68339 (patch)
treed2088c63878af6c9db926df0f4466acd6215c765
parentb594a9b61a49ccb3a53be0807fb090da3f606517 (diff)
Fix ansible-server for supporting playbook of PNF
Change-Id: Id6a4c2e81c6e782e496970e080c033e2f9a77296 Issue-ID: APPC-1577 Signed-off-by: Enbo Wang <wangenbo@huawei.com>
-rwxr-xr-xansible-server/src/main/ansible-server/AnsibleModule.py22
-rw-r--r--ansible-server/src/main/ansible-server/BuildPlaybookParams.py43
-rwxr-xr-xansible-server/src/main/ansible-server/RestServer.py13
3 files changed, 48 insertions, 30 deletions
diff --git a/ansible-server/src/main/ansible-server/AnsibleModule.py b/ansible-server/src/main/ansible-server/AnsibleModule.py
index d0af0cf2..71d0c059 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,22 +49,20 @@ 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)
#PAP
#p.wait()
- (stdout_value, err) = p.communicate()
+ stdout_value, err = p.communicate()
stdout_value_cleanup = ''
for line in stdout_value:
@@ -78,15 +74,11 @@ def ansibleSysCall (inventory_path, playbook_path, nodelist, mandatory,
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 ParseFlag and len(line.strip())>0:
diff --git a/ansible-server/src/main/ansible-server/BuildPlaybookParams.py b/ansible-server/src/main/ansible-server/BuildPlaybookParams.py
index 1593592d..e3a0b4b5 100644
--- a/ansible-server/src/main/ansible-server/BuildPlaybookParams.py
+++ b/ansible-server/src/main/ansible-server/BuildPlaybookParams.py
@@ -1,3 +1,27 @@
+'''
+/*-
+* ============LICENSE_START=======================================================
+* ONAP : APPC
+* ================================================================================
+* Copyright (C) 2017-2019 AT&T Intellectual Property. All rights reserved.
+* ================================================================================
+* Copyright (C) 2017 Amdocs
+* =============================================================================
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*
+* ============LICENSE_END=========================================================
+*/
+'''
from os import listdir
from os.path import isfile, join
@@ -10,11 +34,12 @@ import cherrypy
def buildInventorySysCall(ansible_path, ansible_inv, node_list, playbook_dir, target_inv, hostgrouplist, hostnamelist):
if not node_list:
- LocalNodeList = "host"
- LocalCredentials = "localhost ansible_connection=local"
+ local_node_list = "host"
+ local_credentials = "localhost ansible_connection=local"
+
f = open(playbook_dir + "/" + target_inv, "w")
- f.write("[" + LocalNodeList + "]\n")
- f.write(LocalCredentials)
+ f.write("[" + local_node_list + "]\n")
+ f.write(local_credentials)
f.close()
else:
# Get credentials from file
@@ -37,14 +62,14 @@ def buildInventorySysCall(ansible_path, ansible_inv, node_list, playbook_dir, ta
f.close()
for node in node_list:
- Fail = True
+ fail_flag = True
if "[" + node + "]" in data_inventory_orig:
- if not "[" + node + "]" in data_inventory_target:
+ if "[" + node + "]" not in data_inventory_target:
cherrypy.log("RESET", "[" + node + "]")
data_inventory_target["[" + node + "]"] = []
else:
cherrypy.log("OK", "[" + node + "]")
- Fail = False
+ fail_flag = False
for cred in data_inventory_orig["[" + node + "]"]:
data_inventory_target["[" + node + "]"].append(cred)
else:
@@ -55,9 +80,9 @@ def buildInventorySysCall(ansible_path, ansible_inv, node_list, playbook_dir, ta
for cred in data_inventory_orig[key]:
if node + " " in cred:
data_inventory_target[key].append(cred)
- Fail = False
+ fail_flag = False
- if Fail:
+ if fail_flag:
data_inventory_target["[" + node + "]"] = \
[node + " ansible_connection=ssh ansible_ssh_user=na ansible_ssh_private_key_file=na"]
diff --git a/ansible-server/src/main/ansible-server/RestServer.py b/ansible-server/src/main/ansible-server/RestServer.py
index f24eae0a..2b4da335 100755
--- a/ansible-server/src/main/ansible-server/RestServer.py
+++ b/ansible-server/src/main/ansible-server/RestServer.py
@@ -1,4 +1,4 @@
-"""
+'''
/*-
* ============LICENSE_START=======================================================
* ONAP : APPC
@@ -21,7 +21,7 @@
*
* ============LICENSE_END=========================================================
*/
-"""
+'''
import time, datetime, json, os, sys, subprocess
import uuid
@@ -559,7 +559,7 @@ def process_vnf_playbook(input_json, Id, EnvParameters, time_now):
cherrypy.log("HostFile: " + HostFile)
# if NodeList and InventoryNames need to build host file
- if HaveInventoryNames & HaveNodeList:
+ if HaveInventoryNames and HaveNodeList:
cherrypy.log("Build host file from NodeList")
ret = buildHostsSysCall(input_json, PlaybookDir, inventory_names)
if ret < 0:
@@ -785,9 +785,10 @@ def handle_get_method(input_data):
if TestRecord[input_data['Id']]['Output'] == {} and getresults_block:
cherrypy.log("*** Request blocked " + input_data['Id'])
- while TestRecord[input_data['Id']]['Output'] == {} \
- or 'StatusMessage' in TestRecord[input_data['Id']]['Result']:
- time.sleep(5)
+ # while TestRecord[input_data['Id']]['Output'] == {} \
+ # or 'StatusMessage' in TestRecord[input_data['Id']]['Result']:
+ while ActiveProcess[input_data['Id']].is_alive():
+ time.sleep(3)
cherrypy.log("*** Request released " + input_data['Id'])