Command Executor : Invalid response_data when executed script fails
[ccsdk/cds.git] / ms / command-executor / src / main / python / command_executor_server.py
index 35eed8e..aa666ee 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-from builtins import KeyboardInterrupt
-from concurrent import futures
-import time
-import sys
-
-import grpc
-
+import logging
+import os, sys
 import proto.CommandExecutor_pb2_grpc as CommandExecutor_pb2_grpc
 
-from request_header_validator_interceptor import RequestHeaderValidatorInterceptor
-
-_ONE_DAY_IN_SECONDS = 60 * 60 * 24
-
+from command_executor_handler import CommandExecutorHandler
+import utils
 
 class CommandExecutorServer(CommandExecutor_pb2_grpc.CommandExecutorServiceServicer):
 
+    def __init__(self):
+        self.logger = logging.getLogger(self.__class__.__name__)
+
     def prepareEnv(self, request, context):
-        return
+        blueprint_id = utils.get_blueprint_id(request)
+        self.logger.info("{} - Received prepareEnv request".format(blueprint_id))
+        self.logger.info(request)
+
+        handler = CommandExecutorHandler(request)
+        prepare_env_response = handler.prepare_env(request)
+        if prepare_env_response[utils.CDS_IS_SUCCESSFUL_KEY]:
+            self.logger.info("{} - Package installation logs {}".format(blueprint_id, prepare_env_response[utils.RESULTS_LOG_KEY]))
+        else:
+            self.logger.info("{} - Failed to prepare python environment. {}".format(blueprint_id, prepare_env_response[utils.ERR_MSG_KEY]))
+        self.logger.info("Prepare Env Response returned : %s" % prepare_env_response)
+        return utils.build_grpc_response(request.requestId, prepare_env_response)
 
     def executeCommand(self, request, context):
-        return
-
-
-def serve():
-    port = sys.argv[1]
-    basic_auth = sys.argv[2] + ' ' + sys.argv[3]
-
-    header_validator = RequestHeaderValidatorInterceptor(
-        'authorization', basic_auth, grpc.StatusCode.UNAUTHENTICATED,
-        'Access denied!')
-
-    server = grpc.server(
-        futures.ThreadPoolExecutor(max_workers=10),
-        interceptors=(header_validator,))
-
-    CommandExecutor_pb2_grpc.add_CommandExecutorServiceServicer_to_server(
-        CommandExecutorServer(), server)
-
-    server.add_insecure_port('[::]:' + port)
-    server.start()
-
-    print("Command Executor Server started on %s" % port)
-
-    try:
-        while True:
-            time.sleep(_ONE_DAY_IN_SECONDS)
-    except KeyboardInterrupt:
-        server.stop(0)
-
-
-if __name__ == '__main__':
-    serve()
+        blueprint_id = utils.get_blueprint_id(request)
+        self.logger.info("{} - Received executeCommand request".format(blueprint_id))
+        if os.environ.get('CE_DEBUG','false') == "true":
+            self.logger.info(request)
+
+        handler = CommandExecutorHandler(request)
+        exec_cmd_response = handler.execute_command(request)
+        if exec_cmd_response[utils.CDS_IS_SUCCESSFUL_KEY]:
+            self.logger.info("{} - Execution finished successfully.".format(blueprint_id))
+        else:
+            self.logger.info("{} - Failed to executeCommand. {}".format(blueprint_id, exec_cmd_response[utils.RESULTS_LOG_KEY]))
+
+        ret = utils.build_grpc_response(request.requestId, exec_cmd_response)
+        self.logger.info("Payload returned : {}".format(exec_cmd_response))
+
+        return ret
\ No newline at end of file