# 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