Skip to content
Snippets Groups Projects
Commit 5c64c58b authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

KPI Manager:

- Corrected exception handling
parent cef03c41
No related branches found
No related tags found
2 merge requests!359Release TeraFlowSDN 5.0,!320Resolve "(CTTC) Telemetry Enhancement"
...@@ -18,7 +18,7 @@ from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_m ...@@ -18,7 +18,7 @@ from common.method_wrappers.Decorator import MetricsPool, safe_and_metered_rpc_m
from common.proto.context_pb2 import Empty from common.proto.context_pb2 import Empty
from common.proto.kpi_manager_pb2_grpc import KpiManagerServiceServicer from common.proto.kpi_manager_pb2_grpc import KpiManagerServiceServicer
from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList from common.proto.kpi_manager_pb2 import KpiId, KpiDescriptor, KpiDescriptorFilter, KpiDescriptorList
# from kpi_manager.database.Kpi_DB import KpiDB from common.method_wrappers.ServiceExceptions import NotFoundException
from kpi_manager.database.KpiDB import KpiDB from kpi_manager.database.KpiDB import KpiDB
from kpi_manager.database.KpiModel import Kpi as KpiModel from kpi_manager.database.KpiModel import Kpi as KpiModel
...@@ -31,65 +31,48 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer): ...@@ -31,65 +31,48 @@ class KpiManagerServiceServicerImpl(KpiManagerServiceServicer):
self.kpi_db_obj = KpiDB(KpiModel) self.kpi_db_obj = KpiDB(KpiModel)
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def SetKpiDescriptor(self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore def SetKpiDescriptor(
) -> KpiId: # type: ignore self, request: KpiDescriptor, grpc_context: grpc.ServicerContext # type: ignore
) -> KpiId: # type: ignore
response = KpiId() response = KpiId()
LOGGER.info("Received gRPC message object: {:}".format(request)) LOGGER.info("Received gRPC message object: {:}".format(request))
try: kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request)
kpi_to_insert = KpiModel.convert_KpiDescriptor_to_row(request) if self.kpi_db_obj.add_row_to_db(kpi_to_insert):
if(self.kpi_db_obj.add_row_to_db(kpi_to_insert)): response.kpi_id.uuid = request.kpi_id.kpi_id.uuid
response.kpi_id.uuid = request.kpi_id.kpi_id.uuid # LOGGER.info("Added Row: {:}".format(response))
# LOGGER.info("Added Row: {:}".format(response)) return response
return response
except Exception as e:
LOGGER.info("Unable to create KpiModel class object. {:}".format(e))
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def GetKpiDescriptor(self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore def GetKpiDescriptor(
) -> KpiDescriptor: # type: ignore self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
) -> KpiDescriptor: # type: ignore
response = KpiDescriptor() response = KpiDescriptor()
print("--> Received gRPC message object: {:}".format(request))
LOGGER.info("Received gRPC message object: {:}".format(request)) LOGGER.info("Received gRPC message object: {:}".format(request))
try: kpi_id_to_search = request.kpi_id.uuid
kpi_id_to_search = request.kpi_id.uuid row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
row = self.kpi_db_obj.search_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) if row is None:
if row is None: LOGGER.info('No matching row found kpi id: {:}'.format(kpi_id_to_search))
print ('No matching row found for kpi id: {:}'.format(kpi_id_to_search)) raise NotFoundException('KpiDescriptor', kpi_id_to_search)
LOGGER.info('No matching row found kpi id: {:}'.format(kpi_id_to_search)) response = KpiModel.convert_row_to_KpiDescriptor(row)
return Empty() return response
else:
response = KpiModel.convert_row_to_KpiDescriptor(row)
return response
except Exception as e:
print ('Unable to search kpi id. {:}'.format(e))
LOGGER.info('Unable to search kpi id. {:}'.format(e))
raise e
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def DeleteKpiDescriptor(self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore def DeleteKpiDescriptor(
) -> Empty: # type: ignore self, request: KpiId, grpc_context: grpc.ServicerContext # type: ignore
) -> Empty: # type: ignore
LOGGER.info("Received gRPC message object: {:}".format(request)) LOGGER.info("Received gRPC message object: {:}".format(request))
try: kpi_id_to_search = request.kpi_id.uuid
kpi_id_to_search = request.kpi_id.uuid self.kpi_db_obj.delete_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search)
self.kpi_db_obj.delete_db_row_by_id(KpiModel, 'kpi_id', kpi_id_to_search) return Empty()
except Exception as e:
LOGGER.info('Unable to search kpi id. {:}'.format(e))
finally:
return Empty()
@safe_and_metered_rpc_method(METRICS_POOL, LOGGER) @safe_and_metered_rpc_method(METRICS_POOL, LOGGER)
def SelectKpiDescriptor(self, filter: KpiDescriptorFilter, grpc_context: grpc.ServicerContext # type: ignore def SelectKpiDescriptor(
) -> KpiDescriptorList: # type: ignore self, filter: KpiDescriptorFilter, grpc_context: grpc.ServicerContext # type: ignore
) -> KpiDescriptorList: # type: ignore
LOGGER.info("Received gRPC message object: {:}".format(filter)) LOGGER.info("Received gRPC message object: {:}".format(filter))
response = KpiDescriptorList() response = KpiDescriptorList()
try: rows = self.kpi_db_obj.select_with_filter(KpiModel, filter)
rows = self.kpi_db_obj.select_with_filter(KpiModel, filter) for row in rows:
except Exception as e: kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row)
LOGGER.info('Unable to apply filter on kpi descriptor. {:}'.format(e)) response.kpi_descriptor_list.append(kpiDescriptor_obj)
try: return response
for row in rows:
kpiDescriptor_obj = KpiModel.convert_row_to_KpiDescriptor(row)
response.kpi_descriptor_list.append(kpiDescriptor_obj)
return response
except Exception as e:
LOGGER.info('Unable to process filter response {:}'.format(e))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment