Fix: Run both sonar and clm scans in parallel
[ccsdk/cds.git] / ms / py-executor / server.py
index f506e94..2420344 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 logging
+import os
 import time
-import grpc
+import yaml
+from builtins import KeyboardInterrupt
+from concurrent import futures
 from pathlib import Path, PurePath
-from blueprints_grpc import BluePrintProcessing_pb2_grpc
-from blueprints_grpc.request_header_validator_interceptor import RequestHeaderValidatorInterceptor
+
+import grpc
+from manager.servicer import ArtifactManagerServicer
+from proto.BluePrintManagement_pb2_grpc import add_BluePrintManagementServiceServicer_to_server
+
+from blueprints_grpc import BluePrintProcessing_pb2_grpc, ScriptExecutorConfiguration
 from blueprints_grpc.blueprint_processing_server import BluePrintProcessingServer
-from blueprints_grpc import ScriptExecutorConfiguration
+from blueprints_grpc.request_header_validator_interceptor import RequestHeaderValidatorInterceptor
 
 logger = logging.getLogger("Server")
 
@@ -53,7 +58,9 @@ def serve(configuration: ScriptExecutorConfiguration):
         # create server
         server = grpc.server(futures.ThreadPoolExecutor(max_workers=int(maxWorkers)))
         BluePrintProcessing_pb2_grpc.add_BluePrintProcessingServiceServicer_to_server(
-            BluePrintProcessingServer(configuration), server)
+            BluePrintProcessingServer(configuration), server
+        )
+        add_BluePrintManagementServiceServicer_to_server(ArtifactManagerServicer(), server)
 
         # add secure port using credentials
         server.add_secure_port('[::]:' + port, server_credentials)
@@ -68,7 +75,9 @@ def serve(configuration: ScriptExecutorConfiguration):
         server = grpc.server(futures.ThreadPoolExecutor(max_workers=int(maxWorkers)),
                              interceptors=(header_validator,))
         BluePrintProcessing_pb2_grpc.add_BluePrintProcessingServiceServicer_to_server(
-            BluePrintProcessingServer(configuration), server)
+            BluePrintProcessingServer(configuration), server
+        )
+        add_BluePrintManagementServiceServicer_to_server(ArtifactManagerServicer(), server)
 
         server.add_insecure_port('[::]:' + port)
         server.start()
@@ -83,15 +92,34 @@ def serve(configuration: ScriptExecutorConfiguration):
 
 
 if __name__ == '__main__':
-    config_file = str(PurePath(Path().absolute())) + '/configuration.ini'
+    default_configuration_file = str(PurePath(Path().absolute(), "../../configuration.ini"))
+    supplied_configuration_file = os.environ.get("CONFIGURATION")
+    config_file = str(os.path.expanduser(Path(supplied_configuration_file or default_configuration_file)))
+
     configuration = ScriptExecutorConfiguration(config_file)
-    logging_formater = '%(asctime)s - %(name)s - %(threadName)s - %(levelname)s - %(message)s'
-    logging.basicConfig(filename=configuration.script_executor_property('logFile'),
-                        level=logging.DEBUG,
+    log_file_name = configuration.script_executor_property('logFile')
+    log_file = os.path.join(os.path.dirname(os.path.abspath(os.path.dirname(__file__))), "logging.yaml")
+    print(log_file)
+    with open(log_file) as log:
+        log_config = yaml.safe_load(log)
+        print(log_config)
+    logging_formater = log_config["formatters"]["default"]["format"]
+    print(log_config["loglevel"])
+    if log_config["loglevel"] == "debug":
+        loglevel = logging.DEBUG
+    elif log_config["loglevel"] == "info":
+        loglevel = logging.INFO
+    elif log_config["loglevel"] == "error":
+        loglevel = logging.ERROR
+    logging.basicConfig(filename=log_file_name,
+                        level=loglevel,
                         format=logging_formater)
-    console = logging.StreamHandler()
-    console.setLevel(logging.INFO)
+    console = logging.handlers.RotatingFileHandler(log_file_name, maxBytes=log_config["logfilesize"],
+                                                   backupCount=log_config["rollovercount"])
+    
+    console.setLevel(loglevel)
     formatter = logging.Formatter(logging_formater)
     console.setFormatter(formatter)
     logging.getLogger('').addHandler(console)
     serve(configuration)
+