summaryrefslogtreecommitdiffstats
path: root/ms/command-executor
diff options
context:
space:
mode:
authorAlexis de Talhouët <adetalhouet89@gmail.com>2019-08-08 18:15:55 -0400
committerDan Timoney <dtimoney@att.com>2019-08-09 19:49:12 +0000
commit884c6b10720dbfc08a442f0693a994f9abd1bd57 (patch)
tree83c7f32299f3d04ae7079af41e9ac0b58b1de1e6 /ms/command-executor
parentd4c4d0e71df950ab8264fe2838b92fac88286070 (diff)
Add dynamic-properties as python script arg
For the remote python executor, we have the ability to provide dynamic properties, that will end up marshall as Json. Through the gRPC session, it will be transform to a Google Proto Struct. Once in the remote python executor, we use utility method from Proto to convert the Struct into a Json string, and we pass it as the last argument of the script execution. That way, user can access them in their script, simply by loading the content using json.loads and then interact with the data through the python dict. Change-Id: Ib3552c06734aed252ec28f47173bc8668afe085d Issue-ID: CCSDK-1606 Signed-off-by: Alexis de Talhouët <adetalhouet89@gmail.com>
Diffstat (limited to 'ms/command-executor')
-rw-r--r--ms/command-executor/src/main/python/command_executor_handler.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/ms/command-executor/src/main/python/command_executor_handler.py b/ms/command-executor/src/main/python/command_executor_handler.py
index 305c83e17..972dad627 100644
--- a/ms/command-executor/src/main/python/command_executor_handler.py
+++ b/ms/command-executor/src/main/python/command_executor_handler.py
@@ -15,11 +15,12 @@
#
from builtins import Exception, open, dict
from subprocess import CalledProcessError, PIPE
+from google.protobuf.json_format import MessageToJson
import logging
import os
+import re
import subprocess
-import sys
import virtualenv
import venv
import utils
@@ -72,9 +73,8 @@ class CommandExecutorHandler():
if "ansible-playbook" in request.command:
cmd = cmd + "; " + request.command + " -e 'ansible_python_interpreter=" + self.venv_home + "/bin/python'"
else:
- cmd = cmd + "; " + request.command
+ cmd = cmd + "; " + request.command + " " + re.escape(MessageToJson(request.properties))
- self.logger.info("Command: {}".format(cmd))
try:
with subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
shell=True, bufsize=1, universal_newlines=True) as newProcess: