From 7772c39ee2667bbbc014e002282d39d26d2719cf Mon Sep 17 00:00:00 2001
From: Carlos Natalino <carlos.natalino@chalmers.se>
Date: Thu, 28 Jul 2022 16:43:00 +0200
Subject: [PATCH] Changes to the DBSCANServing service updating its general
 structure.

---
 .../client/DbscanServingClient.py             |   4 +-
 src/dbscanserving/proto/__init__.py           |  14 -
 src/dbscanserving/proto/dbscanserving_pb2.py  | 244 ------------------
 .../proto/dbscanserving_pb2_grpc.py           |  66 -----
 src/dbscanserving/service/DbscanService.py    |   2 +-
 .../service/DbscanServiceServicerImpl.py      |   4 +-
 src/dbscanserving/service/__main__.py         |  11 +-
 src/dbscanserving/tests/test_unitary.py       |   2 +-
 8 files changed, 12 insertions(+), 335 deletions(-)
 delete mode 100644 src/dbscanserving/proto/__init__.py
 delete mode 100644 src/dbscanserving/proto/dbscanserving_pb2.py
 delete mode 100644 src/dbscanserving/proto/dbscanserving_pb2_grpc.py

diff --git a/src/dbscanserving/client/DbscanServingClient.py b/src/dbscanserving/client/DbscanServingClient.py
index 286b3318e..4e77cfb60 100644
--- a/src/dbscanserving/client/DbscanServingClient.py
+++ b/src/dbscanserving/client/DbscanServingClient.py
@@ -14,8 +14,8 @@
 
 import grpc, logging
 from common.tools.client.RetryDecorator import retry, delay_exponential
-from dbscanserving.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse
-from dbscanserving.proto.dbscanserving_pb2_grpc import DetectorStub
+from common.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse
+from common.proto.dbscanserving_pb2_grpc import DetectorStub
 
 LOGGER = logging.getLogger(__name__)
 MAX_RETRIES = 15
diff --git a/src/dbscanserving/proto/__init__.py b/src/dbscanserving/proto/__init__.py
deleted file mode 100644
index 70a332512..000000000
--- a/src/dbscanserving/proto/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2021-2023 H2020 TeraFlow (https://www.teraflow-h2020.eu/)
-#
-# 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.
-
diff --git a/src/dbscanserving/proto/dbscanserving_pb2.py b/src/dbscanserving/proto/dbscanserving_pb2.py
deleted file mode 100644
index f2d6c37c7..000000000
--- a/src/dbscanserving/proto/dbscanserving_pb2.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# -*- coding: utf-8 -*-
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: dbscanserving.proto
-"""Generated protocol buffer code."""
-from google.protobuf.internal import enum_type_wrapper
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='dbscanserving.proto',
-  package='dbscanserving',
-  syntax='proto3',
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_pb=b'\n\x13\x64\x62scanserving.proto\x12\rdbscanserving\"\x1a\n\x06Sample\x12\x10\n\x08\x66\x65\x61tures\x18\x01 \x03(\x02\"\xc2\x01\n\x10\x44\x65tectionRequest\x12\x0b\n\x03\x65ps\x18\x01 \x01(\x02\x12\x13\n\x0bmin_samples\x18\x02 \x01(\x05\x12%\n\x06metric\x18\x03 \x01(\x0e\x32\x15.dbscanserving.Metric\x12\x13\n\x0bnum_samples\x18\x04 \x01(\x05\x12\x14\n\x0cnum_features\x18\x05 \x01(\x05\x12&\n\x07samples\x18\x06 \x03(\x0b\x32\x15.dbscanserving.Sample\x12\x12\n\nidentifier\x18\x07 \x01(\x05\",\n\x11\x44\x65tectionResponse\x12\x17\n\x0f\x63luster_indices\x18\x01 \x03(\x05*\x17\n\x06Metric\x12\r\n\tEUCLIDEAN\x10\x00\x32W\n\x08\x44\x65tector\x12K\n\x06\x44\x65tect\x12\x1f.dbscanserving.DetectionRequest\x1a .dbscanserving.DetectionResponseb\x06proto3'
-)
-
-_METRIC = _descriptor.EnumDescriptor(
-  name='Metric',
-  full_name='dbscanserving.Metric',
-  filename=None,
-  file=DESCRIPTOR,
-  create_key=_descriptor._internal_create_key,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='EUCLIDEAN', index=0, number=0,
-      serialized_options=None,
-      type=None,
-      create_key=_descriptor._internal_create_key),
-  ],
-  containing_type=None,
-  serialized_options=None,
-  serialized_start=309,
-  serialized_end=332,
-)
-_sym_db.RegisterEnumDescriptor(_METRIC)
-
-Metric = enum_type_wrapper.EnumTypeWrapper(_METRIC)
-EUCLIDEAN = 0
-
-
-
-_SAMPLE = _descriptor.Descriptor(
-  name='Sample',
-  full_name='dbscanserving.Sample',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='features', full_name='dbscanserving.Sample.features', index=0,
-      number=1, type=2, cpp_type=6, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=38,
-  serialized_end=64,
-)
-
-
-_DETECTIONREQUEST = _descriptor.Descriptor(
-  name='DetectionRequest',
-  full_name='dbscanserving.DetectionRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='eps', full_name='dbscanserving.DetectionRequest.eps', index=0,
-      number=1, type=2, cpp_type=6, label=1,
-      has_default_value=False, default_value=float(0),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='min_samples', full_name='dbscanserving.DetectionRequest.min_samples', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='metric', full_name='dbscanserving.DetectionRequest.metric', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='num_samples', full_name='dbscanserving.DetectionRequest.num_samples', index=3,
-      number=4, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='num_features', full_name='dbscanserving.DetectionRequest.num_features', index=4,
-      number=5, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='samples', full_name='dbscanserving.DetectionRequest.samples', index=5,
-      number=6, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-    _descriptor.FieldDescriptor(
-      name='identifier', full_name='dbscanserving.DetectionRequest.identifier', index=6,
-      number=7, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=67,
-  serialized_end=261,
-)
-
-
-_DETECTIONRESPONSE = _descriptor.Descriptor(
-  name='DetectionResponse',
-  full_name='dbscanserving.DetectionResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  create_key=_descriptor._internal_create_key,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='cluster_indices', full_name='dbscanserving.DetectionResponse.cluster_indices', index=0,
-      number=1, type=5, cpp_type=1, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=263,
-  serialized_end=307,
-)
-
-_DETECTIONREQUEST.fields_by_name['metric'].enum_type = _METRIC
-_DETECTIONREQUEST.fields_by_name['samples'].message_type = _SAMPLE
-DESCRIPTOR.message_types_by_name['Sample'] = _SAMPLE
-DESCRIPTOR.message_types_by_name['DetectionRequest'] = _DETECTIONREQUEST
-DESCRIPTOR.message_types_by_name['DetectionResponse'] = _DETECTIONRESPONSE
-DESCRIPTOR.enum_types_by_name['Metric'] = _METRIC
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-Sample = _reflection.GeneratedProtocolMessageType('Sample', (_message.Message,), {
-  'DESCRIPTOR' : _SAMPLE,
-  '__module__' : 'dbscanserving_pb2'
-  # @@protoc_insertion_point(class_scope:dbscanserving.Sample)
-  })
-_sym_db.RegisterMessage(Sample)
-
-DetectionRequest = _reflection.GeneratedProtocolMessageType('DetectionRequest', (_message.Message,), {
-  'DESCRIPTOR' : _DETECTIONREQUEST,
-  '__module__' : 'dbscanserving_pb2'
-  # @@protoc_insertion_point(class_scope:dbscanserving.DetectionRequest)
-  })
-_sym_db.RegisterMessage(DetectionRequest)
-
-DetectionResponse = _reflection.GeneratedProtocolMessageType('DetectionResponse', (_message.Message,), {
-  'DESCRIPTOR' : _DETECTIONRESPONSE,
-  '__module__' : 'dbscanserving_pb2'
-  # @@protoc_insertion_point(class_scope:dbscanserving.DetectionResponse)
-  })
-_sym_db.RegisterMessage(DetectionResponse)
-
-
-
-_DETECTOR = _descriptor.ServiceDescriptor(
-  name='Detector',
-  full_name='dbscanserving.Detector',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=None,
-  create_key=_descriptor._internal_create_key,
-  serialized_start=334,
-  serialized_end=421,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='Detect',
-    full_name='dbscanserving.Detector.Detect',
-    index=0,
-    containing_service=None,
-    input_type=_DETECTIONREQUEST,
-    output_type=_DETECTIONRESPONSE,
-    serialized_options=None,
-    create_key=_descriptor._internal_create_key,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_DETECTOR)
-
-DESCRIPTOR.services_by_name['Detector'] = _DETECTOR
-
-# @@protoc_insertion_point(module_scope)
diff --git a/src/dbscanserving/proto/dbscanserving_pb2_grpc.py b/src/dbscanserving/proto/dbscanserving_pb2_grpc.py
deleted file mode 100644
index 895ced148..000000000
--- a/src/dbscanserving/proto/dbscanserving_pb2_grpc.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
-"""Client and server classes corresponding to protobuf-defined services."""
-import grpc
-
-from . import dbscanserving_pb2 as dbscanserving__pb2
-
-
-class DetectorStub(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def __init__(self, channel):
-        """Constructor.
-
-        Args:
-            channel: A grpc.Channel.
-        """
-        self.Detect = channel.unary_unary(
-                '/dbscanserving.Detector/Detect',
-                request_serializer=dbscanserving__pb2.DetectionRequest.SerializeToString,
-                response_deserializer=dbscanserving__pb2.DetectionResponse.FromString,
-                )
-
-
-class DetectorServicer(object):
-    """Missing associated documentation comment in .proto file."""
-
-    def Detect(self, request, context):
-        """Missing associated documentation comment in .proto file."""
-        context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-        context.set_details('Method not implemented!')
-        raise NotImplementedError('Method not implemented!')
-
-
-def add_DetectorServicer_to_server(servicer, server):
-    rpc_method_handlers = {
-            'Detect': grpc.unary_unary_rpc_method_handler(
-                    servicer.Detect,
-                    request_deserializer=dbscanserving__pb2.DetectionRequest.FromString,
-                    response_serializer=dbscanserving__pb2.DetectionResponse.SerializeToString,
-            ),
-    }
-    generic_handler = grpc.method_handlers_generic_handler(
-            'dbscanserving.Detector', rpc_method_handlers)
-    server.add_generic_rpc_handlers((generic_handler,))
-
-
- # This class is part of an EXPERIMENTAL API.
-class Detector(object):
-    """Missing associated documentation comment in .proto file."""
-
-    @staticmethod
-    def Detect(request,
-            target,
-            options=(),
-            channel_credentials=None,
-            call_credentials=None,
-            insecure=False,
-            compression=None,
-            wait_for_ready=None,
-            timeout=None,
-            metadata=None):
-        return grpc.experimental.unary_unary(request, target, '/dbscanserving.Detector/Detect',
-            dbscanserving__pb2.DetectionRequest.SerializeToString,
-            dbscanserving__pb2.DetectionResponse.FromString,
-            options, channel_credentials,
-            insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
diff --git a/src/dbscanserving/service/DbscanService.py b/src/dbscanserving/service/DbscanService.py
index 97654fa30..b5d3edbe5 100644
--- a/src/dbscanserving/service/DbscanService.py
+++ b/src/dbscanserving/service/DbscanService.py
@@ -18,7 +18,7 @@ from concurrent import futures
 from grpc_health.v1.health import HealthServicer, OVERALL_HEALTH
 from grpc_health.v1.health_pb2 import HealthCheckResponse
 from grpc_health.v1.health_pb2_grpc import add_HealthServicer_to_server
-from dbscanserving.proto.dbscanserving_pb2_grpc import add_DetectorServicer_to_server
+from common.proto.dbscanserving_pb2_grpc import add_DetectorServicer_to_server
 from dbscanserving.service.DbscanServiceServicerImpl import DbscanServiceServicerImpl
 from dbscanserving.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD
 
diff --git a/src/dbscanserving/service/DbscanServiceServicerImpl.py b/src/dbscanserving/service/DbscanServiceServicerImpl.py
index 5560eec1e..258f3a619 100644
--- a/src/dbscanserving/service/DbscanServiceServicerImpl.py
+++ b/src/dbscanserving/service/DbscanServiceServicerImpl.py
@@ -15,8 +15,8 @@
 import os, grpc, logging
 from sklearn.cluster import DBSCAN
 from common.rpc_method_wrapper.Decorator import create_metrics, safe_and_metered_rpc_method
-from dbscanserving.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse
-from dbscanserving.proto.dbscanserving_pb2_grpc import DetectorServicer
+from common.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse
+from common.proto.dbscanserving_pb2_grpc import DetectorServicer
 
 LOGGER = logging.getLogger(__name__)
 
diff --git a/src/dbscanserving/service/__main__.py b/src/dbscanserving/service/__main__.py
index cad074a40..d8d1af664 100644
--- a/src/dbscanserving/service/__main__.py
+++ b/src/dbscanserving/service/__main__.py
@@ -14,7 +14,7 @@
 
 import os, logging, signal, sys, time, threading, multiprocessing
 from prometheus_client import start_http_server
-from common.Settings import get_setting
+from common.Settings import get_log_level, get_metrics_port, get_setting
 from dbscanserving.Config import (
     GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD, LOG_LEVEL, METRICS_PORT)
 from dbscanserving.service.DbscanService import DbscanService
@@ -29,14 +29,14 @@ def signal_handler(signal, frame): # pylint: disable=redefined-outer-name
 def main():
     global LOGGER # pylint: disable=global-statement
 
+    log_level = get_log_level()
+    logging.basicConfig(level=log_level)
+    LOGGER = logging.getLogger(__name__)
+
     service_port = get_setting('DBSCANSERVICE_SERVICE_PORT_GRPC', default=GRPC_SERVICE_PORT)
     max_workers  = get_setting('MAX_WORKERS',                     default=GRPC_MAX_WORKERS )
     grace_period = get_setting('GRACE_PERIOD',                    default=GRPC_GRACE_PERIOD)
     log_level    = get_setting('LOG_LEVEL',                       default=LOG_LEVEL        )
-    metrics_port = get_setting('METRICS_PORT',                    default=METRICS_PORT     )
-
-    logging.basicConfig(level=log_level)
-    LOGGER = logging.getLogger(__name__)
 
     signal.signal(signal.SIGINT,  signal_handler)
     signal.signal(signal.SIGTERM, signal_handler)
@@ -44,6 +44,7 @@ def main():
     LOGGER.info('Starting...')
 
     # Start metrics server
+    metrics_port = get_metrics_port()
     start_http_server(metrics_port)
 
     # Starting CentralizedCybersecurity service
diff --git a/src/dbscanserving/tests/test_unitary.py b/src/dbscanserving/tests/test_unitary.py
index 8198c9e21..4156734e6 100644
--- a/src/dbscanserving/tests/test_unitary.py
+++ b/src/dbscanserving/tests/test_unitary.py
@@ -16,7 +16,7 @@ import random, logging, pytest, numpy
 from dbscanserving.Config import GRPC_SERVICE_PORT, GRPC_MAX_WORKERS, GRPC_GRACE_PERIOD
 from dbscanserving.client.DbscanServingClient import DbscanServingClient
 from dbscanserving.service.DbscanService import DbscanService
-from dbscanserving.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse, Sample
+from common.proto.dbscanserving_pb2 import DetectionRequest, DetectionResponse, Sample
 
 port = 10000 + GRPC_SERVICE_PORT # avoid privileged ports
 
-- 
GitLab