Loading src/kpi_management/kpi_manager/database/service/KpiModel.py +40 −21 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from sqlalchemy import Column, Integer, String, Float, Text, ForeignKey # from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import registry from sqlalchemy.orm import sessionmaker, relationship from common.proto.kpi_management_pb2 import KpiDescriptor logging.basicConfig(level=logging.INFO) LOGGER = logging.getLogger(__name__) Loading Loading @@ -49,7 +49,7 @@ class Kpi(Base): f"link_id='{self.link_id}')>") @classmethod def create_row_from_kpiDescriptor(cls, request): def convert_KpiDescriptor_to_row(cls, request): """ Create an instance of Kpi from a request object. Args: request: The request object containing the data. Loading @@ -66,3 +66,22 @@ class Kpi(Base): connection_id = request.connection_id.connection_uuid.uuid, link_id = request.link_id.link_uuid.uuid ) @classmethod def convert_row_to_KpiDescriptor(cls, row): """ Create and return a dictionary representation of a Kpi instance. Args: row: The Kpi instance (row) containing the data. Returns: KpiDescriptor object """ response = KpiDescriptor() response.kpi_id.kpi_id.uuid = row.kpi_id response.kpi_description = row.kpi_description response.kpi_sample_type = row.kpi_sample_type response.service_id.service_uuid.uuid = row.service_id response.device_id.device_uuid.uuid = row.device_id response.slice_id.slice_uuid.uuid = row.slice_id response.endpoint_id.endpoint_uuid.uuid = row.endpoint_id response.connection_id.connection_uuid.uuid = row.connection_id response.link_id.link_uuid.uuid = row.link_id return response No newline at end of file src/kpi_management/kpi_manager/service/KpiManagerServiceServicerImpl.py +3 −30 Original line number Diff line number Diff line Loading @@ -37,24 +37,13 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): LOGGER.info('Init KpiManagerService') self.Kpi_DBobj = Kpi_DB() @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetKpiDescriptor(self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore ) -> KpiId: # type: ignore response = KpiId() LOGGER.info("Received gRPC message object: {:}".format(request)) try: # kpi_to_insert = KpiModel() # kpi_to_insert.kpi_id = request.kpi_id.kpi_id.uuid # kpi_to_insert.kpi_description = request.kpi_description # kpi_to_insert.kpi_sample_type = request.kpi_sample_type # kpi_to_insert.device_id = request.device_id.device_uuid.uuid # kpi_to_insert.endpoint_id = request.endpoint_id.endpoint_uuid.uuid # kpi_to_insert.service_id = request.service_id.service_uuid.uuid # kpi_to_insert.slice_id = request.slice_id.slice_uuid.uuid # kpi_to_insert.connection_id = request.connection_id.connection_uuid.uuid # kpi_to_insert.link_id = request.link_id.link_uuid.uuid kpi_to_insert = KpiModel.create_row_from_kpiDescriptor(request) kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request) if(self.Kpi_DBobj.add_row_to_db(kpi_to_insert)): response.kpi_id.uuid = request.kpi_id.kpi_id.uuid # LOGGER.info("Added Row: {:}".format(response)) Loading @@ -71,15 +60,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): kpi_id_to_search = request.kpi_id.uuid row = self.Kpi_DBobj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) if row is not None: response.kpi_id.kpi_id.uuid = row.kpi_id response.kpi_description = row.kpi_description response.kpi_sample_type = row.kpi_sample_type response.service_id.service_uuid.uuid = row.service_id response.device_id.device_uuid.uuid = row.device_id response.slice_id.slice_uuid.uuid = row.slice_id response.endpoint_id.endpoint_uuid.uuid = row.endpoint_id response.connection_id.connection_uuid.uuid = row.connection_id response.link_id.link_uuid.uuid = row.link_id response = KpiModel.convert_row_to_KpiDescriptor(row) return response except Exception as e: LOGGER.info('Unable to search kpi id. {:}'.format(e)) Loading Loading @@ -118,15 +99,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): try: if len(rows) != 0: for row in rows: kpiDescriptor_obj = KpiDescriptor() kpiDescriptor_obj.kpi_id.kpi_id.uuid = row.kpi_id kpiDescriptor_obj.kpi_description = row.kpi_description kpiDescriptor_obj.kpi_sample_type = row.kpi_sample_type kpiDescriptor_obj.service_id.service_uuid.uuid = row.service_id kpiDescriptor_obj.device_id.device_uuid.uuid = row.device_id kpiDescriptor_obj.slice_id.slice_uuid.uuid = row.slice_id kpiDescriptor_obj.endpoint_id.endpoint_uuid.uuid = row.endpoint_id kpiDescriptor_obj.connection_id.connection_uuid.uuid = row.connection_id kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row) response.kpi_descriptor_list.append(kpiDescriptor_obj) return response except Exception as e: Loading src/kpi_management/kpi_manager/tests/test_kpi_manager.py +23 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ from device.service.driver_api.DriverInstanceCache import DriverInstanceCache from device.service.DeviceService import DeviceService from device.client.DeviceClient import DeviceClient from kpi_management.kpi_manager.tests.test_messages import create_kpi_descriptor_request from kpi_management.kpi_manager.tests.test_messages import create_kpi_descriptor_request, create_kpi_filter_request # from monitoring.service.MonitoringService import MonitoringService from kpi_management.kpi_manager.service.KpiManagerService import KpiManagerService # from monitoring.client.MonitoringClient import MonitoringClient Loading Loading @@ -219,14 +219,32 @@ def test_SetKpiDescriptor(kpi_manager_client): def test_DeleteKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_DeleteKpiDescriptor: START <<< ") # adding KPI response = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # deleting KPI del_response = kpi_manager_client.DeleteKpiDescriptor(response) # verifing KPI kpi_manager_client.GetKpiDescriptor(response) del_response = kpi_manager_client.DeleteKpiDescriptor(response_id) # select KPI kpi_manager_client.GetKpiDescriptor(response_id) LOGGER.info("Response of delete method gRPC message object: {:}".format(del_response)) assert isinstance(del_response, Empty) def test_GetKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_GetKpiDescriptor: START <<< ") # adding KPI response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # get KPI response = kpi_manager_client.GetKpiDescriptor(response_id) LOGGER.info("Response gRPC message object: {:}".format(response)) assert isinstance(response, KpiDescriptor) def test_SelectKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_SelectKpiDescriptor: START <<< ") # adding KPI kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # select KPI(s) response = kpi_manager_client.SelectKpiDescriptor(create_kpi_filter_request()) LOGGER.info("Response gRPC message object: {:}".format(response)) assert isinstance(response, KpiDescriptorList) # ---------- 2nd Iteration Tests ----------------- # def test_SetKpiDescriptor(kpi_manager_client): Loading src/kpi_management/kpi_manager/tests/test_messages.py +32 −3 Original line number Diff line number Diff line Loading @@ -15,16 +15,45 @@ import uuid from common.proto import kpi_management_pb2 from common.proto.kpi_sample_types_pb2 import KpiSampleType from common.proto.context_pb2 import DeviceId, LinkId, ServiceId, SliceId,\ ConnectionId, EndPointId def create_kpi_descriptor_request(descriptor_name: str = "Test_name"): _create_kpi_request = kpi_management_pb2.KpiDescriptor() _create_kpi_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) _create_kpi_request.kpi_description = descriptor_name _create_kpi_request.kpi_sample_type = KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED _create_kpi_request.device_id.device_uuid.uuid = 'DEV1' # pylint: disable=maybe-no-member _create_kpi_request.service_id.service_uuid.uuid = 'SERV1' # pylint: disable=maybe-no-member _create_kpi_request.device_id.device_uuid.uuid = 'DEV2' # pylint: disable=maybe-no-member _create_kpi_request.service_id.service_uuid.uuid = 'SERV2' # pylint: disable=maybe-no-member _create_kpi_request.slice_id.slice_uuid.uuid = 'SLC1' # pylint: disable=maybe-no-member _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END1' # pylint: disable=maybe-no-member _create_kpi_request.connection_id.connection_uuid.uuid = 'CON1' # pylint: disable=maybe-no-member _create_kpi_request.link_id.link_uuid.uuid = 'LNK1' # pylint: disable=maybe-no-member return _create_kpi_request def create_kpi_filter_request(): _create_kpi_filter_request = kpi_management_pb2.KpiDescriptorFilter() _create_kpi_filter_request.kpi_sample_type.append(KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED) device_id_obj = DeviceId() service_id_obj = ServiceId() slice_id_obj = SliceId() endpoint_id_obj = EndPointId() connection_id_obj = ConnectionId() link_id_obj = LinkId() device_id_obj.device_uuid.uuid = "DEV2" service_id_obj.service_uuid.uuid = "SERV2" slice_id_obj.slice_uuid.uuid = "SLC1" endpoint_id_obj.endpoint_uuid.uuid = "END1" connection_id_obj.connection_uuid.uuid = "CON1" link_id_obj.link_uuid.uuid = "LNK1" _create_kpi_filter_request.device_id.append(device_id_obj) _create_kpi_filter_request.service_id.append(service_id_obj) _create_kpi_filter_request.slice_id.append(slice_id_obj) _create_kpi_filter_request.endpoint_id.append(endpoint_id_obj) _create_kpi_filter_request.connection_id.append(connection_id_obj) _create_kpi_filter_request.link_id.append(link_id_obj) return _create_kpi_filter_request No newline at end of file Loading
src/kpi_management/kpi_manager/database/service/KpiModel.py +40 −21 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ from sqlalchemy import Column, Integer, String, Float, Text, ForeignKey # from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import registry from sqlalchemy.orm import sessionmaker, relationship from common.proto.kpi_management_pb2 import KpiDescriptor logging.basicConfig(level=logging.INFO) LOGGER = logging.getLogger(__name__) Loading Loading @@ -49,7 +49,7 @@ class Kpi(Base): f"link_id='{self.link_id}')>") @classmethod def create_row_from_kpiDescriptor(cls, request): def convert_KpiDescriptor_to_row(cls, request): """ Create an instance of Kpi from a request object. Args: request: The request object containing the data. Loading @@ -66,3 +66,22 @@ class Kpi(Base): connection_id = request.connection_id.connection_uuid.uuid, link_id = request.link_id.link_uuid.uuid ) @classmethod def convert_row_to_KpiDescriptor(cls, row): """ Create and return a dictionary representation of a Kpi instance. Args: row: The Kpi instance (row) containing the data. Returns: KpiDescriptor object """ response = KpiDescriptor() response.kpi_id.kpi_id.uuid = row.kpi_id response.kpi_description = row.kpi_description response.kpi_sample_type = row.kpi_sample_type response.service_id.service_uuid.uuid = row.service_id response.device_id.device_uuid.uuid = row.device_id response.slice_id.slice_uuid.uuid = row.slice_id response.endpoint_id.endpoint_uuid.uuid = row.endpoint_id response.connection_id.connection_uuid.uuid = row.connection_id response.link_id.link_uuid.uuid = row.link_id return response No newline at end of file
src/kpi_management/kpi_manager/service/KpiManagerServiceServicerImpl.py +3 −30 Original line number Diff line number Diff line Loading @@ -37,24 +37,13 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): LOGGER.info('Init KpiManagerService') self.Kpi_DBobj = Kpi_DB() @safe_and_metered_rpc_method(METRICS_POOL, LOGGER) def SetKpiDescriptor(self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore ) -> KpiId: # type: ignore response = KpiId() LOGGER.info("Received gRPC message object: {:}".format(request)) try: # kpi_to_insert = KpiModel() # kpi_to_insert.kpi_id = request.kpi_id.kpi_id.uuid # kpi_to_insert.kpi_description = request.kpi_description # kpi_to_insert.kpi_sample_type = request.kpi_sample_type # kpi_to_insert.device_id = request.device_id.device_uuid.uuid # kpi_to_insert.endpoint_id = request.endpoint_id.endpoint_uuid.uuid # kpi_to_insert.service_id = request.service_id.service_uuid.uuid # kpi_to_insert.slice_id = request.slice_id.slice_uuid.uuid # kpi_to_insert.connection_id = request.connection_id.connection_uuid.uuid # kpi_to_insert.link_id = request.link_id.link_uuid.uuid kpi_to_insert = KpiModel.create_row_from_kpiDescriptor(request) kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request) if(self.Kpi_DBobj.add_row_to_db(kpi_to_insert)): response.kpi_id.uuid = request.kpi_id.kpi_id.uuid # LOGGER.info("Added Row: {:}".format(response)) Loading @@ -71,15 +60,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): kpi_id_to_search = request.kpi_id.uuid row = self.Kpi_DBobj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) if row is not None: response.kpi_id.kpi_id.uuid = row.kpi_id response.kpi_description = row.kpi_description response.kpi_sample_type = row.kpi_sample_type response.service_id.service_uuid.uuid = row.service_id response.device_id.device_uuid.uuid = row.device_id response.slice_id.slice_uuid.uuid = row.slice_id response.endpoint_id.endpoint_uuid.uuid = row.endpoint_id response.connection_id.connection_uuid.uuid = row.connection_id response.link_id.link_uuid.uuid = row.link_id response = KpiModel.convert_row_to_KpiDescriptor(row) return response except Exception as e: LOGGER.info('Unable to search kpi id. {:}'.format(e)) Loading Loading @@ -118,15 +99,7 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): try: if len(rows) != 0: for row in rows: kpiDescriptor_obj = KpiDescriptor() kpiDescriptor_obj.kpi_id.kpi_id.uuid = row.kpi_id kpiDescriptor_obj.kpi_description = row.kpi_description kpiDescriptor_obj.kpi_sample_type = row.kpi_sample_type kpiDescriptor_obj.service_id.service_uuid.uuid = row.service_id kpiDescriptor_obj.device_id.device_uuid.uuid = row.device_id kpiDescriptor_obj.slice_id.slice_uuid.uuid = row.slice_id kpiDescriptor_obj.endpoint_id.endpoint_uuid.uuid = row.endpoint_id kpiDescriptor_obj.connection_id.connection_uuid.uuid = row.connection_id kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row) response.kpi_descriptor_list.append(kpiDescriptor_obj) return response except Exception as e: Loading
src/kpi_management/kpi_manager/tests/test_kpi_manager.py +23 −5 Original line number Diff line number Diff line Loading @@ -43,7 +43,7 @@ from device.service.driver_api.DriverInstanceCache import DriverInstanceCache from device.service.DeviceService import DeviceService from device.client.DeviceClient import DeviceClient from kpi_management.kpi_manager.tests.test_messages import create_kpi_descriptor_request from kpi_management.kpi_manager.tests.test_messages import create_kpi_descriptor_request, create_kpi_filter_request # from monitoring.service.MonitoringService import MonitoringService from kpi_management.kpi_manager.service.KpiManagerService import KpiManagerService # from monitoring.client.MonitoringClient import MonitoringClient Loading Loading @@ -219,14 +219,32 @@ def test_SetKpiDescriptor(kpi_manager_client): def test_DeleteKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_DeleteKpiDescriptor: START <<< ") # adding KPI response = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # deleting KPI del_response = kpi_manager_client.DeleteKpiDescriptor(response) # verifing KPI kpi_manager_client.GetKpiDescriptor(response) del_response = kpi_manager_client.DeleteKpiDescriptor(response_id) # select KPI kpi_manager_client.GetKpiDescriptor(response_id) LOGGER.info("Response of delete method gRPC message object: {:}".format(del_response)) assert isinstance(del_response, Empty) def test_GetKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_GetKpiDescriptor: START <<< ") # adding KPI response_id = kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # get KPI response = kpi_manager_client.GetKpiDescriptor(response_id) LOGGER.info("Response gRPC message object: {:}".format(response)) assert isinstance(response, KpiDescriptor) def test_SelectKpiDescriptor(kpi_manager_client): LOGGER.info(" >>> test_SelectKpiDescriptor: START <<< ") # adding KPI kpi_manager_client.SetKpiDescriptor(create_kpi_descriptor_request()) # select KPI(s) response = kpi_manager_client.SelectKpiDescriptor(create_kpi_filter_request()) LOGGER.info("Response gRPC message object: {:}".format(response)) assert isinstance(response, KpiDescriptorList) # ---------- 2nd Iteration Tests ----------------- # def test_SetKpiDescriptor(kpi_manager_client): Loading
src/kpi_management/kpi_manager/tests/test_messages.py +32 −3 Original line number Diff line number Diff line Loading @@ -15,16 +15,45 @@ import uuid from common.proto import kpi_management_pb2 from common.proto.kpi_sample_types_pb2 import KpiSampleType from common.proto.context_pb2 import DeviceId, LinkId, ServiceId, SliceId,\ ConnectionId, EndPointId def create_kpi_descriptor_request(descriptor_name: str = "Test_name"): _create_kpi_request = kpi_management_pb2.KpiDescriptor() _create_kpi_request.kpi_id.kpi_id.uuid = str(uuid.uuid4()) _create_kpi_request.kpi_description = descriptor_name _create_kpi_request.kpi_sample_type = KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED _create_kpi_request.device_id.device_uuid.uuid = 'DEV1' # pylint: disable=maybe-no-member _create_kpi_request.service_id.service_uuid.uuid = 'SERV1' # pylint: disable=maybe-no-member _create_kpi_request.device_id.device_uuid.uuid = 'DEV2' # pylint: disable=maybe-no-member _create_kpi_request.service_id.service_uuid.uuid = 'SERV2' # pylint: disable=maybe-no-member _create_kpi_request.slice_id.slice_uuid.uuid = 'SLC1' # pylint: disable=maybe-no-member _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END1' # pylint: disable=maybe-no-member _create_kpi_request.connection_id.connection_uuid.uuid = 'CON1' # pylint: disable=maybe-no-member _create_kpi_request.link_id.link_uuid.uuid = 'LNK1' # pylint: disable=maybe-no-member return _create_kpi_request def create_kpi_filter_request(): _create_kpi_filter_request = kpi_management_pb2.KpiDescriptorFilter() _create_kpi_filter_request.kpi_sample_type.append(KpiSampleType.KPISAMPLETYPE_PACKETS_RECEIVED) device_id_obj = DeviceId() service_id_obj = ServiceId() slice_id_obj = SliceId() endpoint_id_obj = EndPointId() connection_id_obj = ConnectionId() link_id_obj = LinkId() device_id_obj.device_uuid.uuid = "DEV2" service_id_obj.service_uuid.uuid = "SERV2" slice_id_obj.slice_uuid.uuid = "SLC1" endpoint_id_obj.endpoint_uuid.uuid = "END1" connection_id_obj.connection_uuid.uuid = "CON1" link_id_obj.link_uuid.uuid = "LNK1" _create_kpi_filter_request.device_id.append(device_id_obj) _create_kpi_filter_request.service_id.append(service_id_obj) _create_kpi_filter_request.slice_id.append(slice_id_obj) _create_kpi_filter_request.endpoint_id.append(endpoint_id_obj) _create_kpi_filter_request.connection_id.append(connection_id_obj) _create_kpi_filter_request.link_id.append(link_id_obj) return _create_kpi_filter_request No newline at end of file