Loading proto/monitoring.proto +10 −4 Original line number Diff line number Diff line Loading @@ -5,15 +5,15 @@ package monitoring; import "context.proto"; service MonitoringService { rpc CreateKpi (KpiRequest) returns (KpiId) {} rpc CreateKpi (CreateKpiRequest) returns (KpiId) {} rpc IncludeKpi (IncludeKpiRequest) returns (context.Empty) {} rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {} rpc MonitoriDeviceKpi (MonitorKpiRequest) returns (context.Empty) {} rpc MonitorDeviceKpi (MonitorDeviceKpiRequest) returns (context.Empty) {} rpc GetStreamKpi ( KpiId ) returns (stream Kpi) {} rpc GetInstantKpi ( KpiId ) returns (Kpi) {} } message KpiRequest{ message CreateKpiRequest{ string kpiDescription = 1; context.DeviceId device_id = 2; KpiSampleType kpi_sample_type = 3; Loading @@ -24,7 +24,13 @@ message KpiRequest{ message MonitorKpiRequest{ KpiId kpi_id = 1; uint32 Connexion_time_s = 2; uint32 connexion_time_s = 2; uint32 sample_rate_ms = 3; } message MonitorDeviceKpiRequest{ Kpi kpi = 1; uint32 connexion_time_s = 2; uint32 sample_rate_ms = 3; } Loading src/monitoring/client/monitoring_client.py +17 −5 Original line number Diff line number Diff line Loading @@ -17,17 +17,29 @@ class MonitoringClient: self.channel = grpc.insecure_channel(endpoint) self.server = monitoring_pb2_grpc.MonitoringServiceStub(self.channel) def IncludeKpi(self, request): LOGGER.info('IncludeKpi: {}'.format(request)) response = self.server.IncludeKpi(request) LOGGER.info('IncludeKpi result: {}'.format(response)) def CreateKpi(self, request): LOGGER.info('CreateKpi: {}'.format(request)) response = self.server.CreateKpi(request) LOGGER.info('CreateKpi result: {}'.format(response)) return monitoring_pb2.KpiId() def MonitorKpi(self, request): LOGGER.info('MonitorKpi: {}'.format(request)) response = self.server.MonitorKpi(request) LOGGER.info('MonitorKpi result: {}'.format(response)) return monitoring_pb2.Kpi() return context_pb2.Empty() def MonitorDeviceKpi(self, request): LOGGER.info('MonitorDeviceKpi: {}'.format(request)) response = self.server.MonitorDeviceKpi(request) LOGGER.info('MonitorDeviceKpi result: {}'.format(response)) return context_pb2.Empty() def IncludeKpi(self, request): LOGGER.info('IncludeKpi: {}'.format(request)) response = self.server.IncludeKpi(request) LOGGER.info('IncludeKpi result: {}'.format(response)) return context_pb2.Empty() def GetStreamKpi(self, request): LOGGER.info('GetStreamKpi: {}'.format(request)) Loading src/monitoring/proto/monitoring_pb2.py +93 −39 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ DESCRIPTOR = _descriptor.FileDescriptor( package='monitoring', syntax='proto3', serialized_options=None, serialized_pb=_b('\n\x10monitoring.proto\x12\nmonitoring\x1a\rcontext.proto\"~\n\nKpiRequest\x12\x16\n\x0ekpiDescription\x18\x01 \x01(\t\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\x12\x32\n\x0fkpi_sample_type\x18\x03 \x01(\x0e\x32\x19.monitoring.KpiSampleType\"h\n\x11MonitorKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x18\n\x10\x43onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"s\n\x11IncludeKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x12\n\ntime_stamp\x18\x02 \x01(\t\x12\'\n\tkpi_value\x18\x03 \x01(\x0b\x32\x14.monitoring.KpiValue\"\xd6\x01\n\x03Kpi\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x11\n\ttimestamp\x18\x02 \x01(\t\x12\x16\n\x0ekpiDescription\x18\x03 \x01(\t\x12\'\n\tkpi_value\x18\x04 \x01(\x0b\x32\x14.monitoring.KpiValue\x12\x32\n\x0fkpi_sample_type\x18\x05 \x01(\x0e\x32\x19.monitoring.KpiSampleType\x12$\n\tdevice_id\x18\x06 \x01(\x0b\x32\x11.context.DeviceId\"&\n\x05KpiId\x12\x1d\n\x06kpi_id\x18\x01 \x01(\x0b\x32\r.context.Uuid\"T\n\tKpiDevice\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\"+\n\x07KpiList\x12 \n\x07kpiList\x18\x01 \x03(\x0b\x32\x0f.monitoring.Kpi\"M\n\x08KpiValue\x12\x10\n\x06intVal\x18\x01 \x01(\rH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x11\n\x07\x62oolVal\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value*x\n\rKpiSampleType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x17\n\x13PACKETS_TRANSMITTED\x10\x65\x12\x14\n\x10PACKETS_RECEIVED\x10\x66\x12\x16\n\x11\x42YTES_TRANSMITTED\x10\xc9\x01\x12\x13\n\x0e\x42YTES_RECEIVED\x10\xca\x01\x32\x80\x03\n\x11MonitoringService\x12\x38\n\tCreateKpi\x12\x16.monitoring.KpiRequest\x1a\x11.monitoring.KpiId\"\x00\x12=\n\nIncludeKpi\x12\x1d.monitoring.IncludeKpiRequest\x1a\x0e.context.Empty\"\x00\x12=\n\nMonitorKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x44\n\x11MonitoriDeviceKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x36\n\x0cGetStreamKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x30\x01\x12\x35\n\rGetInstantKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x62\x06proto3') serialized_pb=_b('\n\x10monitoring.proto\x12\nmonitoring\x1a\rcontext.proto\"\x84\x01\n\x10\x43reateKpiRequest\x12\x16\n\x0ekpiDescription\x18\x01 \x01(\t\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\x12\x32\n\x0fkpi_sample_type\x18\x03 \x01(\x0e\x32\x19.monitoring.KpiSampleType\"h\n\x11MonitorKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x18\n\x10\x63onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"i\n\x17MonitorDeviceKpiRequest\x12\x1c\n\x03kpi\x18\x01 \x01(\x0b\x32\x0f.monitoring.Kpi\x12\x18\n\x10\x63onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"s\n\x11IncludeKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x12\n\ntime_stamp\x18\x02 \x01(\t\x12\'\n\tkpi_value\x18\x03 \x01(\x0b\x32\x14.monitoring.KpiValue\"\xd6\x01\n\x03Kpi\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x11\n\ttimestamp\x18\x02 \x01(\t\x12\x16\n\x0ekpiDescription\x18\x03 \x01(\t\x12\'\n\tkpi_value\x18\x04 \x01(\x0b\x32\x14.monitoring.KpiValue\x12\x32\n\x0fkpi_sample_type\x18\x05 \x01(\x0e\x32\x19.monitoring.KpiSampleType\x12$\n\tdevice_id\x18\x06 \x01(\x0b\x32\x11.context.DeviceId\"&\n\x05KpiId\x12\x1d\n\x06kpi_id\x18\x01 \x01(\x0b\x32\r.context.Uuid\"T\n\tKpiDevice\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\"+\n\x07KpiList\x12 \n\x07kpiList\x18\x01 \x03(\x0b\x32\x0f.monitoring.Kpi\"M\n\x08KpiValue\x12\x10\n\x06intVal\x18\x01 \x01(\rH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x11\n\x07\x62oolVal\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value*x\n\rKpiSampleType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x17\n\x13PACKETS_TRANSMITTED\x10\x65\x12\x14\n\x10PACKETS_RECEIVED\x10\x66\x12\x16\n\x11\x42YTES_TRANSMITTED\x10\xc9\x01\x12\x13\n\x0e\x42YTES_RECEIVED\x10\xca\x01\x32\x8b\x03\n\x11MonitoringService\x12>\n\tCreateKpi\x12\x1c.monitoring.CreateKpiRequest\x1a\x11.monitoring.KpiId\"\x00\x12=\n\nIncludeKpi\x12\x1d.monitoring.IncludeKpiRequest\x1a\x0e.context.Empty\"\x00\x12=\n\nMonitorKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12I\n\x10MonitorDeviceKpi\x12#.monitoring.MonitorDeviceKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x36\n\x0cGetStreamKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x30\x01\x12\x35\n\rGetInstantKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x62\x06proto3') , dependencies=[context__pb2.DESCRIPTOR,]) Loading Loading @@ -54,8 +54,8 @@ _KPISAMPLETYPE = _descriptor.EnumDescriptor( ], containing_type=None, serialized_options=None, serialized_start=865, serialized_end=985, serialized_start=979, serialized_end=1099, ) _sym_db.RegisterEnumDescriptor(_KPISAMPLETYPE) Loading @@ -68,29 +68,29 @@ BYTES_RECEIVED = 202 _KPIREQUEST = _descriptor.Descriptor( name='KpiRequest', full_name='monitoring.KpiRequest', _CREATEKPIREQUEST = _descriptor.Descriptor( name='CreateKpiRequest', full_name='monitoring.CreateKpiRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='kpiDescription', full_name='monitoring.KpiRequest.kpiDescription', index=0, name='kpiDescription', full_name='monitoring.CreateKpiRequest.kpiDescription', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='device_id', full_name='monitoring.KpiRequest.device_id', index=1, name='device_id', full_name='monitoring.CreateKpiRequest.device_id', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='kpi_sample_type', full_name='monitoring.KpiRequest.kpi_sample_type', index=2, name='kpi_sample_type', full_name='monitoring.CreateKpiRequest.kpi_sample_type', 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, Loading @@ -108,8 +108,8 @@ _KPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=47, serialized_end=173, serialized_start=48, serialized_end=180, ) Loading @@ -128,7 +128,7 @@ _MONITORKPIREQUEST = _descriptor.Descriptor( is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Connexion_time_s', full_name='monitoring.MonitorKpiRequest.Connexion_time_s', index=1, name='connexion_time_s', full_name='monitoring.MonitorKpiRequest.connexion_time_s', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, Loading @@ -153,8 +153,53 @@ _MONITORKPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=175, serialized_end=279, serialized_start=182, serialized_end=286, ) _MONITORDEVICEKPIREQUEST = _descriptor.Descriptor( name='MonitorDeviceKpiRequest', full_name='monitoring.MonitorDeviceKpiRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='kpi', full_name='monitoring.MonitorDeviceKpiRequest.kpi', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='connexion_time_s', full_name='monitoring.MonitorDeviceKpiRequest.connexion_time_s', index=1, number=2, type=13, cpp_type=3, 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), _descriptor.FieldDescriptor( name='sample_rate_ms', full_name='monitoring.MonitorDeviceKpiRequest.sample_rate_ms', index=2, number=3, type=13, cpp_type=3, 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), ], extensions=[ ], nested_types=[], enum_types=[ ], serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], oneofs=[ ], serialized_start=288, serialized_end=393, ) Loading Loading @@ -198,8 +243,8 @@ _INCLUDEKPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=281, serialized_end=396, serialized_start=395, serialized_end=510, ) Loading Loading @@ -264,8 +309,8 @@ _KPI = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=399, serialized_end=613, serialized_start=513, serialized_end=727, ) Loading Loading @@ -295,8 +340,8 @@ _KPIID = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=615, serialized_end=653, serialized_start=729, serialized_end=767, ) Loading Loading @@ -333,8 +378,8 @@ _KPIDEVICE = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=655, serialized_end=739, serialized_start=769, serialized_end=853, ) Loading Loading @@ -364,8 +409,8 @@ _KPILIST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=741, serialized_end=784, serialized_start=855, serialized_end=898, ) Loading Loading @@ -412,13 +457,14 @@ _KPIVALUE = _descriptor.Descriptor( name='value', full_name='monitoring.KpiValue.value', index=0, containing_type=None, fields=[]), ], serialized_start=786, serialized_end=863, serialized_start=900, serialized_end=977, ) _KPIREQUEST.fields_by_name['device_id'].message_type = context__pb2._DEVICEID _KPIREQUEST.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE _CREATEKPIREQUEST.fields_by_name['device_id'].message_type = context__pb2._DEVICEID _CREATEKPIREQUEST.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE _MONITORKPIREQUEST.fields_by_name['kpi_id'].message_type = _KPIID _MONITORDEVICEKPIREQUEST.fields_by_name['kpi'].message_type = _KPI _INCLUDEKPIREQUEST.fields_by_name['kpi_id'].message_type = _KPIID _INCLUDEKPIREQUEST.fields_by_name['kpi_value'].message_type = _KPIVALUE _KPI.fields_by_name['kpi_id'].message_type = _KPIID Loading @@ -438,8 +484,9 @@ _KPIVALUE.fields_by_name['stringVal'].containing_oneof = _KPIVALUE.oneofs_by_nam _KPIVALUE.oneofs_by_name['value'].fields.append( _KPIVALUE.fields_by_name['boolVal']) _KPIVALUE.fields_by_name['boolVal'].containing_oneof = _KPIVALUE.oneofs_by_name['value'] DESCRIPTOR.message_types_by_name['KpiRequest'] = _KPIREQUEST DESCRIPTOR.message_types_by_name['CreateKpiRequest'] = _CREATEKPIREQUEST DESCRIPTOR.message_types_by_name['MonitorKpiRequest'] = _MONITORKPIREQUEST DESCRIPTOR.message_types_by_name['MonitorDeviceKpiRequest'] = _MONITORDEVICEKPIREQUEST DESCRIPTOR.message_types_by_name['IncludeKpiRequest'] = _INCLUDEKPIREQUEST DESCRIPTOR.message_types_by_name['Kpi'] = _KPI DESCRIPTOR.message_types_by_name['KpiId'] = _KPIID Loading @@ -449,12 +496,12 @@ DESCRIPTOR.message_types_by_name['KpiValue'] = _KPIVALUE DESCRIPTOR.enum_types_by_name['KpiSampleType'] = _KPISAMPLETYPE _sym_db.RegisterFileDescriptor(DESCRIPTOR) KpiRequest = _reflection.GeneratedProtocolMessageType('KpiRequest', (_message.Message,), dict( DESCRIPTOR = _KPIREQUEST, CreateKpiRequest = _reflection.GeneratedProtocolMessageType('CreateKpiRequest', (_message.Message,), dict( DESCRIPTOR = _CREATEKPIREQUEST, __module__ = 'monitoring_pb2' # @@protoc_insertion_point(class_scope:monitoring.KpiRequest) # @@protoc_insertion_point(class_scope:monitoring.CreateKpiRequest) )) _sym_db.RegisterMessage(KpiRequest) _sym_db.RegisterMessage(CreateKpiRequest) MonitorKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorKpiRequest', (_message.Message,), dict( DESCRIPTOR = _MONITORKPIREQUEST, Loading @@ -463,6 +510,13 @@ MonitorKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorKpiRequest' )) _sym_db.RegisterMessage(MonitorKpiRequest) MonitorDeviceKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorDeviceKpiRequest', (_message.Message,), dict( DESCRIPTOR = _MONITORDEVICEKPIREQUEST, __module__ = 'monitoring_pb2' # @@protoc_insertion_point(class_scope:monitoring.MonitorDeviceKpiRequest) )) _sym_db.RegisterMessage(MonitorDeviceKpiRequest) IncludeKpiRequest = _reflection.GeneratedProtocolMessageType('IncludeKpiRequest', (_message.Message,), dict( DESCRIPTOR = _INCLUDEKPIREQUEST, __module__ = 'monitoring_pb2' Loading Loading @@ -513,15 +567,15 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor( file=DESCRIPTOR, index=0, serialized_options=None, serialized_start=988, serialized_end=1372, serialized_start=1102, serialized_end=1497, methods=[ _descriptor.MethodDescriptor( name='CreateKpi', full_name='monitoring.MonitoringService.CreateKpi', index=0, containing_service=None, input_type=_KPIREQUEST, input_type=_CREATEKPIREQUEST, output_type=_KPIID, serialized_options=None, ), Loading @@ -544,11 +598,11 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor( serialized_options=None, ), _descriptor.MethodDescriptor( name='MonitoriDeviceKpi', full_name='monitoring.MonitoringService.MonitoriDeviceKpi', name='MonitorDeviceKpi', full_name='monitoring.MonitoringService.MonitorDeviceKpi', index=3, containing_service=None, input_type=_MONITORKPIREQUEST, input_type=_MONITORDEVICEKPIREQUEST, output_type=context__pb2._EMPTY, serialized_options=None, ), Loading src/monitoring/proto/monitoring_pb2_grpc.py +9 −9 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ class MonitoringServiceStub(object): """ self.CreateKpi = channel.unary_unary( '/monitoring.MonitoringService/CreateKpi', request_serializer=monitoring__pb2.KpiRequest.SerializeToString, request_serializer=monitoring__pb2.CreateKpiRequest.SerializeToString, response_deserializer=monitoring__pb2.KpiId.FromString, ) self.IncludeKpi = channel.unary_unary( Loading @@ -30,9 +30,9 @@ class MonitoringServiceStub(object): request_serializer=monitoring__pb2.MonitorKpiRequest.SerializeToString, response_deserializer=context__pb2.Empty.FromString, ) self.MonitoriDeviceKpi = channel.unary_unary( '/monitoring.MonitoringService/MonitoriDeviceKpi', request_serializer=monitoring__pb2.MonitorKpiRequest.SerializeToString, self.MonitorDeviceKpi = channel.unary_unary( '/monitoring.MonitoringService/MonitorDeviceKpi', request_serializer=monitoring__pb2.MonitorDeviceKpiRequest.SerializeToString, response_deserializer=context__pb2.Empty.FromString, ) self.GetStreamKpi = channel.unary_stream( Loading Loading @@ -72,7 +72,7 @@ class MonitoringServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def MonitoriDeviceKpi(self, request, context): def MonitorDeviceKpi(self, request, context): # missing associated documentation comment in .proto file pass context.set_code(grpc.StatusCode.UNIMPLEMENTED) Loading @@ -98,7 +98,7 @@ def add_MonitoringServiceServicer_to_server(servicer, server): rpc_method_handlers = { 'CreateKpi': grpc.unary_unary_rpc_method_handler( servicer.CreateKpi, request_deserializer=monitoring__pb2.KpiRequest.FromString, request_deserializer=monitoring__pb2.CreateKpiRequest.FromString, response_serializer=monitoring__pb2.KpiId.SerializeToString, ), 'IncludeKpi': grpc.unary_unary_rpc_method_handler( Loading @@ -111,9 +111,9 @@ def add_MonitoringServiceServicer_to_server(servicer, server): request_deserializer=monitoring__pb2.MonitorKpiRequest.FromString, response_serializer=context__pb2.Empty.SerializeToString, ), 'MonitoriDeviceKpi': grpc.unary_unary_rpc_method_handler( servicer.MonitoriDeviceKpi, request_deserializer=monitoring__pb2.MonitorKpiRequest.FromString, 'MonitorDeviceKpi': grpc.unary_unary_rpc_method_handler( servicer.MonitorDeviceKpi, request_deserializer=monitoring__pb2.MonitorDeviceKpiRequest.FromString, response_serializer=context__pb2.Empty.SerializeToString, ), 'GetStreamKpi': grpc.unary_stream_rpc_method_handler( Loading src/monitoring/service/monitoring_server.py +59 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ import os from concurrent import futures from src.monitoring.client import monitoring_client from src.monitoring.client.monitoring_client import MonitoringClient from src.monitoring.proto import context_pb2 import grpc Loading @@ -25,6 +28,7 @@ import threading from prometheus_client import start_http_server, Summary from prometheus_client import Counter, Gauge SERVER_ADDRESS = SERVER_ADDRESS = '127.0.0.1' PORT = 7070 MONITORING_GETINSTANTKPI_REQUEST_TIME = Summary('monitoring_getinstantkpi_processing_seconds', 'Time spent processing monitoring instant kpi request') Loading @@ -35,16 +39,56 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService def __init__(self): LOGGER.info('Init monitoringService') def IncludeKpi(self, request, context): # receives monitoring.KpiRequest returns monitoring.KpiId LOGGER.info('IncludeKpi') MONITORING_INCLUDEKPI_COUNTER.inc() return monitoring_pb2.KpiId() # CreateKpi (CreateKpiRequest) returns (KpiId) {} def CreateKpi(self, request : monitoring_pb2.CreateKpiRequest, context) -> monitoring_pb2.KpiId : LOGGER.info('CreateKpi') # Here the code to create a sqlite query to crete a KPI and return a KpiID # Change these lines by the KpiID assigned by the DB kpi_id = monitoring_pb2.KpiId() kpi_id.kpi_id.uuid = 'KPIID0000' # Create KPI object with the request info and the KpiID kpi = monitoring_pb2.Kpi() kpi.device_id.device_id.uuid = request.device_id.device_id.uuid kpi.kpi_sample_type = request.kpi_sample_type kpi.kpi_id.kpi_id.uuid = kpi_id.kpi_id.uuid return kpi_id # rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {} def MonitorKpi ( self, request : monitoring_pb2.MonitorKpiRequest, context) -> context_pb2.Empty: def MonitorKpi ( self, request, context): # receives monitoring.KpiId returns monitoring.Kpi LOGGER.info('MonitorKpi') return monitoring_pb2.Kpi() # Creates the request to send to the device service monitor_device_request = monitoring_pb2.MonitorDeviceKpiRequest() kpi = get_Kpi(request.kpi_id) monitor_device_request.kpi.kpi_id.kpi_id.uuid = kpi.kpi_id.kpi_id.uuid monitor_device_request.connexion_time_s = request.connexion_time_s monitor_device_request.sample_rate_ms = request.sample_rate_ms client = MonitoringClient(server=SERVER_ADDRESS, port=PORT) client.MonitorDeviceKpi(monitor_device_request) return context_pb2.Empty() # rpc MonitorDeviceKpi(MonitorDeviceKpiRequest) returns(context.Empty) {} def MonitorDeviceKpi ( self, request : monitoring_pb2.MonitorDeviceKpiRequest, context) -> context_pb2.Empty: # Some code device to perform its actions LOGGER.info('MonitorDeviceKpi') return context_pb2.Empty() # rpc IncludeKpi(IncludeKpiRequest) returns(context.Empty) {} def IncludeKpi(self, request : monitoring_pb2.IncludeKpiRequest, context) -> context_pb2.Empty: LOGGER.info('IncludeKpi') return context_pb2.Empty() def GetStreamKpi ( self, request, context): # receives monitoring.KpiId returns stream monitoring.Kpi Loading Loading @@ -81,6 +125,13 @@ def start_server(address='[::]', port=PORT, max_workers=10): def stop_server(serverGRPC, grace_period=0): serverGRPC.stop(grace_period) def get_Kpi(kpiId): LOGGER.info('getting Kpi by KpyID') # Change these lines with the correct ones after DB query kpi = monitoring_pb2.Kpi() kpi.kpi_id.kpi_id.uuid = kpiId.kpi_id.uuid return kpi if __name__ == '__main__': LOGGER.info('initializing monitoringService') port = os.environ.get('PORT', str(PORT)) Loading Loading
proto/monitoring.proto +10 −4 Original line number Diff line number Diff line Loading @@ -5,15 +5,15 @@ package monitoring; import "context.proto"; service MonitoringService { rpc CreateKpi (KpiRequest) returns (KpiId) {} rpc CreateKpi (CreateKpiRequest) returns (KpiId) {} rpc IncludeKpi (IncludeKpiRequest) returns (context.Empty) {} rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {} rpc MonitoriDeviceKpi (MonitorKpiRequest) returns (context.Empty) {} rpc MonitorDeviceKpi (MonitorDeviceKpiRequest) returns (context.Empty) {} rpc GetStreamKpi ( KpiId ) returns (stream Kpi) {} rpc GetInstantKpi ( KpiId ) returns (Kpi) {} } message KpiRequest{ message CreateKpiRequest{ string kpiDescription = 1; context.DeviceId device_id = 2; KpiSampleType kpi_sample_type = 3; Loading @@ -24,7 +24,13 @@ message KpiRequest{ message MonitorKpiRequest{ KpiId kpi_id = 1; uint32 Connexion_time_s = 2; uint32 connexion_time_s = 2; uint32 sample_rate_ms = 3; } message MonitorDeviceKpiRequest{ Kpi kpi = 1; uint32 connexion_time_s = 2; uint32 sample_rate_ms = 3; } Loading
src/monitoring/client/monitoring_client.py +17 −5 Original line number Diff line number Diff line Loading @@ -17,17 +17,29 @@ class MonitoringClient: self.channel = grpc.insecure_channel(endpoint) self.server = monitoring_pb2_grpc.MonitoringServiceStub(self.channel) def IncludeKpi(self, request): LOGGER.info('IncludeKpi: {}'.format(request)) response = self.server.IncludeKpi(request) LOGGER.info('IncludeKpi result: {}'.format(response)) def CreateKpi(self, request): LOGGER.info('CreateKpi: {}'.format(request)) response = self.server.CreateKpi(request) LOGGER.info('CreateKpi result: {}'.format(response)) return monitoring_pb2.KpiId() def MonitorKpi(self, request): LOGGER.info('MonitorKpi: {}'.format(request)) response = self.server.MonitorKpi(request) LOGGER.info('MonitorKpi result: {}'.format(response)) return monitoring_pb2.Kpi() return context_pb2.Empty() def MonitorDeviceKpi(self, request): LOGGER.info('MonitorDeviceKpi: {}'.format(request)) response = self.server.MonitorDeviceKpi(request) LOGGER.info('MonitorDeviceKpi result: {}'.format(response)) return context_pb2.Empty() def IncludeKpi(self, request): LOGGER.info('IncludeKpi: {}'.format(request)) response = self.server.IncludeKpi(request) LOGGER.info('IncludeKpi result: {}'.format(response)) return context_pb2.Empty() def GetStreamKpi(self, request): LOGGER.info('GetStreamKpi: {}'.format(request)) Loading
src/monitoring/proto/monitoring_pb2.py +93 −39 Original line number Diff line number Diff line Loading @@ -21,7 +21,7 @@ DESCRIPTOR = _descriptor.FileDescriptor( package='monitoring', syntax='proto3', serialized_options=None, serialized_pb=_b('\n\x10monitoring.proto\x12\nmonitoring\x1a\rcontext.proto\"~\n\nKpiRequest\x12\x16\n\x0ekpiDescription\x18\x01 \x01(\t\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\x12\x32\n\x0fkpi_sample_type\x18\x03 \x01(\x0e\x32\x19.monitoring.KpiSampleType\"h\n\x11MonitorKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x18\n\x10\x43onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"s\n\x11IncludeKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x12\n\ntime_stamp\x18\x02 \x01(\t\x12\'\n\tkpi_value\x18\x03 \x01(\x0b\x32\x14.monitoring.KpiValue\"\xd6\x01\n\x03Kpi\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x11\n\ttimestamp\x18\x02 \x01(\t\x12\x16\n\x0ekpiDescription\x18\x03 \x01(\t\x12\'\n\tkpi_value\x18\x04 \x01(\x0b\x32\x14.monitoring.KpiValue\x12\x32\n\x0fkpi_sample_type\x18\x05 \x01(\x0e\x32\x19.monitoring.KpiSampleType\x12$\n\tdevice_id\x18\x06 \x01(\x0b\x32\x11.context.DeviceId\"&\n\x05KpiId\x12\x1d\n\x06kpi_id\x18\x01 \x01(\x0b\x32\r.context.Uuid\"T\n\tKpiDevice\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\"+\n\x07KpiList\x12 \n\x07kpiList\x18\x01 \x03(\x0b\x32\x0f.monitoring.Kpi\"M\n\x08KpiValue\x12\x10\n\x06intVal\x18\x01 \x01(\rH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x11\n\x07\x62oolVal\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value*x\n\rKpiSampleType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x17\n\x13PACKETS_TRANSMITTED\x10\x65\x12\x14\n\x10PACKETS_RECEIVED\x10\x66\x12\x16\n\x11\x42YTES_TRANSMITTED\x10\xc9\x01\x12\x13\n\x0e\x42YTES_RECEIVED\x10\xca\x01\x32\x80\x03\n\x11MonitoringService\x12\x38\n\tCreateKpi\x12\x16.monitoring.KpiRequest\x1a\x11.monitoring.KpiId\"\x00\x12=\n\nIncludeKpi\x12\x1d.monitoring.IncludeKpiRequest\x1a\x0e.context.Empty\"\x00\x12=\n\nMonitorKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x44\n\x11MonitoriDeviceKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x36\n\x0cGetStreamKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x30\x01\x12\x35\n\rGetInstantKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x62\x06proto3') serialized_pb=_b('\n\x10monitoring.proto\x12\nmonitoring\x1a\rcontext.proto\"\x84\x01\n\x10\x43reateKpiRequest\x12\x16\n\x0ekpiDescription\x18\x01 \x01(\t\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\x12\x32\n\x0fkpi_sample_type\x18\x03 \x01(\x0e\x32\x19.monitoring.KpiSampleType\"h\n\x11MonitorKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x18\n\x10\x63onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"i\n\x17MonitorDeviceKpiRequest\x12\x1c\n\x03kpi\x18\x01 \x01(\x0b\x32\x0f.monitoring.Kpi\x12\x18\n\x10\x63onnexion_time_s\x18\x02 \x01(\r\x12\x16\n\x0esample_rate_ms\x18\x03 \x01(\r\"s\n\x11IncludeKpiRequest\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x12\n\ntime_stamp\x18\x02 \x01(\t\x12\'\n\tkpi_value\x18\x03 \x01(\x0b\x32\x14.monitoring.KpiValue\"\xd6\x01\n\x03Kpi\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12\x11\n\ttimestamp\x18\x02 \x01(\t\x12\x16\n\x0ekpiDescription\x18\x03 \x01(\t\x12\'\n\tkpi_value\x18\x04 \x01(\x0b\x32\x14.monitoring.KpiValue\x12\x32\n\x0fkpi_sample_type\x18\x05 \x01(\x0e\x32\x19.monitoring.KpiSampleType\x12$\n\tdevice_id\x18\x06 \x01(\x0b\x32\x11.context.DeviceId\"&\n\x05KpiId\x12\x1d\n\x06kpi_id\x18\x01 \x01(\x0b\x32\r.context.Uuid\"T\n\tKpiDevice\x12!\n\x06kpi_id\x18\x01 \x01(\x0b\x32\x11.monitoring.KpiId\x12$\n\tdevice_id\x18\x02 \x01(\x0b\x32\x11.context.DeviceId\"+\n\x07KpiList\x12 \n\x07kpiList\x18\x01 \x03(\x0b\x32\x0f.monitoring.Kpi\"M\n\x08KpiValue\x12\x10\n\x06intVal\x18\x01 \x01(\rH\x00\x12\x13\n\tstringVal\x18\x02 \x01(\tH\x00\x12\x11\n\x07\x62oolVal\x18\x03 \x01(\x08H\x00\x42\x07\n\x05value*x\n\rKpiSampleType\x12\x0b\n\x07UNKNOWN\x10\x00\x12\x17\n\x13PACKETS_TRANSMITTED\x10\x65\x12\x14\n\x10PACKETS_RECEIVED\x10\x66\x12\x16\n\x11\x42YTES_TRANSMITTED\x10\xc9\x01\x12\x13\n\x0e\x42YTES_RECEIVED\x10\xca\x01\x32\x8b\x03\n\x11MonitoringService\x12>\n\tCreateKpi\x12\x1c.monitoring.CreateKpiRequest\x1a\x11.monitoring.KpiId\"\x00\x12=\n\nIncludeKpi\x12\x1d.monitoring.IncludeKpiRequest\x1a\x0e.context.Empty\"\x00\x12=\n\nMonitorKpi\x12\x1d.monitoring.MonitorKpiRequest\x1a\x0e.context.Empty\"\x00\x12I\n\x10MonitorDeviceKpi\x12#.monitoring.MonitorDeviceKpiRequest\x1a\x0e.context.Empty\"\x00\x12\x36\n\x0cGetStreamKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x30\x01\x12\x35\n\rGetInstantKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\x00\x62\x06proto3') , dependencies=[context__pb2.DESCRIPTOR,]) Loading Loading @@ -54,8 +54,8 @@ _KPISAMPLETYPE = _descriptor.EnumDescriptor( ], containing_type=None, serialized_options=None, serialized_start=865, serialized_end=985, serialized_start=979, serialized_end=1099, ) _sym_db.RegisterEnumDescriptor(_KPISAMPLETYPE) Loading @@ -68,29 +68,29 @@ BYTES_RECEIVED = 202 _KPIREQUEST = _descriptor.Descriptor( name='KpiRequest', full_name='monitoring.KpiRequest', _CREATEKPIREQUEST = _descriptor.Descriptor( name='CreateKpiRequest', full_name='monitoring.CreateKpiRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='kpiDescription', full_name='monitoring.KpiRequest.kpiDescription', index=0, name='kpiDescription', full_name='monitoring.CreateKpiRequest.kpiDescription', index=0, number=1, type=9, cpp_type=9, label=1, has_default_value=False, default_value=_b("").decode('utf-8'), message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='device_id', full_name='monitoring.KpiRequest.device_id', index=1, name='device_id', full_name='monitoring.CreateKpiRequest.device_id', index=1, number=2, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='kpi_sample_type', full_name='monitoring.KpiRequest.kpi_sample_type', index=2, name='kpi_sample_type', full_name='monitoring.CreateKpiRequest.kpi_sample_type', 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, Loading @@ -108,8 +108,8 @@ _KPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=47, serialized_end=173, serialized_start=48, serialized_end=180, ) Loading @@ -128,7 +128,7 @@ _MONITORKPIREQUEST = _descriptor.Descriptor( is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='Connexion_time_s', full_name='monitoring.MonitorKpiRequest.Connexion_time_s', index=1, name='connexion_time_s', full_name='monitoring.MonitorKpiRequest.connexion_time_s', index=1, number=2, type=13, cpp_type=3, label=1, has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, Loading @@ -153,8 +153,53 @@ _MONITORKPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=175, serialized_end=279, serialized_start=182, serialized_end=286, ) _MONITORDEVICEKPIREQUEST = _descriptor.Descriptor( name='MonitorDeviceKpiRequest', full_name='monitoring.MonitorDeviceKpiRequest', filename=None, file=DESCRIPTOR, containing_type=None, fields=[ _descriptor.FieldDescriptor( name='kpi', full_name='monitoring.MonitorDeviceKpiRequest.kpi', index=0, number=1, type=11, cpp_type=10, label=1, has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR), _descriptor.FieldDescriptor( name='connexion_time_s', full_name='monitoring.MonitorDeviceKpiRequest.connexion_time_s', index=1, number=2, type=13, cpp_type=3, 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), _descriptor.FieldDescriptor( name='sample_rate_ms', full_name='monitoring.MonitorDeviceKpiRequest.sample_rate_ms', index=2, number=3, type=13, cpp_type=3, 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), ], extensions=[ ], nested_types=[], enum_types=[ ], serialized_options=None, is_extendable=False, syntax='proto3', extension_ranges=[], oneofs=[ ], serialized_start=288, serialized_end=393, ) Loading Loading @@ -198,8 +243,8 @@ _INCLUDEKPIREQUEST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=281, serialized_end=396, serialized_start=395, serialized_end=510, ) Loading Loading @@ -264,8 +309,8 @@ _KPI = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=399, serialized_end=613, serialized_start=513, serialized_end=727, ) Loading Loading @@ -295,8 +340,8 @@ _KPIID = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=615, serialized_end=653, serialized_start=729, serialized_end=767, ) Loading Loading @@ -333,8 +378,8 @@ _KPIDEVICE = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=655, serialized_end=739, serialized_start=769, serialized_end=853, ) Loading Loading @@ -364,8 +409,8 @@ _KPILIST = _descriptor.Descriptor( extension_ranges=[], oneofs=[ ], serialized_start=741, serialized_end=784, serialized_start=855, serialized_end=898, ) Loading Loading @@ -412,13 +457,14 @@ _KPIVALUE = _descriptor.Descriptor( name='value', full_name='monitoring.KpiValue.value', index=0, containing_type=None, fields=[]), ], serialized_start=786, serialized_end=863, serialized_start=900, serialized_end=977, ) _KPIREQUEST.fields_by_name['device_id'].message_type = context__pb2._DEVICEID _KPIREQUEST.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE _CREATEKPIREQUEST.fields_by_name['device_id'].message_type = context__pb2._DEVICEID _CREATEKPIREQUEST.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE _MONITORKPIREQUEST.fields_by_name['kpi_id'].message_type = _KPIID _MONITORDEVICEKPIREQUEST.fields_by_name['kpi'].message_type = _KPI _INCLUDEKPIREQUEST.fields_by_name['kpi_id'].message_type = _KPIID _INCLUDEKPIREQUEST.fields_by_name['kpi_value'].message_type = _KPIVALUE _KPI.fields_by_name['kpi_id'].message_type = _KPIID Loading @@ -438,8 +484,9 @@ _KPIVALUE.fields_by_name['stringVal'].containing_oneof = _KPIVALUE.oneofs_by_nam _KPIVALUE.oneofs_by_name['value'].fields.append( _KPIVALUE.fields_by_name['boolVal']) _KPIVALUE.fields_by_name['boolVal'].containing_oneof = _KPIVALUE.oneofs_by_name['value'] DESCRIPTOR.message_types_by_name['KpiRequest'] = _KPIREQUEST DESCRIPTOR.message_types_by_name['CreateKpiRequest'] = _CREATEKPIREQUEST DESCRIPTOR.message_types_by_name['MonitorKpiRequest'] = _MONITORKPIREQUEST DESCRIPTOR.message_types_by_name['MonitorDeviceKpiRequest'] = _MONITORDEVICEKPIREQUEST DESCRIPTOR.message_types_by_name['IncludeKpiRequest'] = _INCLUDEKPIREQUEST DESCRIPTOR.message_types_by_name['Kpi'] = _KPI DESCRIPTOR.message_types_by_name['KpiId'] = _KPIID Loading @@ -449,12 +496,12 @@ DESCRIPTOR.message_types_by_name['KpiValue'] = _KPIVALUE DESCRIPTOR.enum_types_by_name['KpiSampleType'] = _KPISAMPLETYPE _sym_db.RegisterFileDescriptor(DESCRIPTOR) KpiRequest = _reflection.GeneratedProtocolMessageType('KpiRequest', (_message.Message,), dict( DESCRIPTOR = _KPIREQUEST, CreateKpiRequest = _reflection.GeneratedProtocolMessageType('CreateKpiRequest', (_message.Message,), dict( DESCRIPTOR = _CREATEKPIREQUEST, __module__ = 'monitoring_pb2' # @@protoc_insertion_point(class_scope:monitoring.KpiRequest) # @@protoc_insertion_point(class_scope:monitoring.CreateKpiRequest) )) _sym_db.RegisterMessage(KpiRequest) _sym_db.RegisterMessage(CreateKpiRequest) MonitorKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorKpiRequest', (_message.Message,), dict( DESCRIPTOR = _MONITORKPIREQUEST, Loading @@ -463,6 +510,13 @@ MonitorKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorKpiRequest' )) _sym_db.RegisterMessage(MonitorKpiRequest) MonitorDeviceKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorDeviceKpiRequest', (_message.Message,), dict( DESCRIPTOR = _MONITORDEVICEKPIREQUEST, __module__ = 'monitoring_pb2' # @@protoc_insertion_point(class_scope:monitoring.MonitorDeviceKpiRequest) )) _sym_db.RegisterMessage(MonitorDeviceKpiRequest) IncludeKpiRequest = _reflection.GeneratedProtocolMessageType('IncludeKpiRequest', (_message.Message,), dict( DESCRIPTOR = _INCLUDEKPIREQUEST, __module__ = 'monitoring_pb2' Loading Loading @@ -513,15 +567,15 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor( file=DESCRIPTOR, index=0, serialized_options=None, serialized_start=988, serialized_end=1372, serialized_start=1102, serialized_end=1497, methods=[ _descriptor.MethodDescriptor( name='CreateKpi', full_name='monitoring.MonitoringService.CreateKpi', index=0, containing_service=None, input_type=_KPIREQUEST, input_type=_CREATEKPIREQUEST, output_type=_KPIID, serialized_options=None, ), Loading @@ -544,11 +598,11 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor( serialized_options=None, ), _descriptor.MethodDescriptor( name='MonitoriDeviceKpi', full_name='monitoring.MonitoringService.MonitoriDeviceKpi', name='MonitorDeviceKpi', full_name='monitoring.MonitoringService.MonitorDeviceKpi', index=3, containing_service=None, input_type=_MONITORKPIREQUEST, input_type=_MONITORDEVICEKPIREQUEST, output_type=context__pb2._EMPTY, serialized_options=None, ), Loading
src/monitoring/proto/monitoring_pb2_grpc.py +9 −9 Original line number Diff line number Diff line Loading @@ -17,7 +17,7 @@ class MonitoringServiceStub(object): """ self.CreateKpi = channel.unary_unary( '/monitoring.MonitoringService/CreateKpi', request_serializer=monitoring__pb2.KpiRequest.SerializeToString, request_serializer=monitoring__pb2.CreateKpiRequest.SerializeToString, response_deserializer=monitoring__pb2.KpiId.FromString, ) self.IncludeKpi = channel.unary_unary( Loading @@ -30,9 +30,9 @@ class MonitoringServiceStub(object): request_serializer=monitoring__pb2.MonitorKpiRequest.SerializeToString, response_deserializer=context__pb2.Empty.FromString, ) self.MonitoriDeviceKpi = channel.unary_unary( '/monitoring.MonitoringService/MonitoriDeviceKpi', request_serializer=monitoring__pb2.MonitorKpiRequest.SerializeToString, self.MonitorDeviceKpi = channel.unary_unary( '/monitoring.MonitoringService/MonitorDeviceKpi', request_serializer=monitoring__pb2.MonitorDeviceKpiRequest.SerializeToString, response_deserializer=context__pb2.Empty.FromString, ) self.GetStreamKpi = channel.unary_stream( Loading Loading @@ -72,7 +72,7 @@ class MonitoringServiceServicer(object): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def MonitoriDeviceKpi(self, request, context): def MonitorDeviceKpi(self, request, context): # missing associated documentation comment in .proto file pass context.set_code(grpc.StatusCode.UNIMPLEMENTED) Loading @@ -98,7 +98,7 @@ def add_MonitoringServiceServicer_to_server(servicer, server): rpc_method_handlers = { 'CreateKpi': grpc.unary_unary_rpc_method_handler( servicer.CreateKpi, request_deserializer=monitoring__pb2.KpiRequest.FromString, request_deserializer=monitoring__pb2.CreateKpiRequest.FromString, response_serializer=monitoring__pb2.KpiId.SerializeToString, ), 'IncludeKpi': grpc.unary_unary_rpc_method_handler( Loading @@ -111,9 +111,9 @@ def add_MonitoringServiceServicer_to_server(servicer, server): request_deserializer=monitoring__pb2.MonitorKpiRequest.FromString, response_serializer=context__pb2.Empty.SerializeToString, ), 'MonitoriDeviceKpi': grpc.unary_unary_rpc_method_handler( servicer.MonitoriDeviceKpi, request_deserializer=monitoring__pb2.MonitorKpiRequest.FromString, 'MonitorDeviceKpi': grpc.unary_unary_rpc_method_handler( servicer.MonitorDeviceKpi, request_deserializer=monitoring__pb2.MonitorDeviceKpiRequest.FromString, response_serializer=context__pb2.Empty.SerializeToString, ), 'GetStreamKpi': grpc.unary_stream_rpc_method_handler( Loading
src/monitoring/service/monitoring_server.py +59 −8 Original line number Diff line number Diff line Loading @@ -2,6 +2,9 @@ import os from concurrent import futures from src.monitoring.client import monitoring_client from src.monitoring.client.monitoring_client import MonitoringClient from src.monitoring.proto import context_pb2 import grpc Loading @@ -25,6 +28,7 @@ import threading from prometheus_client import start_http_server, Summary from prometheus_client import Counter, Gauge SERVER_ADDRESS = SERVER_ADDRESS = '127.0.0.1' PORT = 7070 MONITORING_GETINSTANTKPI_REQUEST_TIME = Summary('monitoring_getinstantkpi_processing_seconds', 'Time spent processing monitoring instant kpi request') Loading @@ -35,16 +39,56 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService def __init__(self): LOGGER.info('Init monitoringService') def IncludeKpi(self, request, context): # receives monitoring.KpiRequest returns monitoring.KpiId LOGGER.info('IncludeKpi') MONITORING_INCLUDEKPI_COUNTER.inc() return monitoring_pb2.KpiId() # CreateKpi (CreateKpiRequest) returns (KpiId) {} def CreateKpi(self, request : monitoring_pb2.CreateKpiRequest, context) -> monitoring_pb2.KpiId : LOGGER.info('CreateKpi') # Here the code to create a sqlite query to crete a KPI and return a KpiID # Change these lines by the KpiID assigned by the DB kpi_id = monitoring_pb2.KpiId() kpi_id.kpi_id.uuid = 'KPIID0000' # Create KPI object with the request info and the KpiID kpi = monitoring_pb2.Kpi() kpi.device_id.device_id.uuid = request.device_id.device_id.uuid kpi.kpi_sample_type = request.kpi_sample_type kpi.kpi_id.kpi_id.uuid = kpi_id.kpi_id.uuid return kpi_id # rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {} def MonitorKpi ( self, request : monitoring_pb2.MonitorKpiRequest, context) -> context_pb2.Empty: def MonitorKpi ( self, request, context): # receives monitoring.KpiId returns monitoring.Kpi LOGGER.info('MonitorKpi') return monitoring_pb2.Kpi() # Creates the request to send to the device service monitor_device_request = monitoring_pb2.MonitorDeviceKpiRequest() kpi = get_Kpi(request.kpi_id) monitor_device_request.kpi.kpi_id.kpi_id.uuid = kpi.kpi_id.kpi_id.uuid monitor_device_request.connexion_time_s = request.connexion_time_s monitor_device_request.sample_rate_ms = request.sample_rate_ms client = MonitoringClient(server=SERVER_ADDRESS, port=PORT) client.MonitorDeviceKpi(monitor_device_request) return context_pb2.Empty() # rpc MonitorDeviceKpi(MonitorDeviceKpiRequest) returns(context.Empty) {} def MonitorDeviceKpi ( self, request : monitoring_pb2.MonitorDeviceKpiRequest, context) -> context_pb2.Empty: # Some code device to perform its actions LOGGER.info('MonitorDeviceKpi') return context_pb2.Empty() # rpc IncludeKpi(IncludeKpiRequest) returns(context.Empty) {} def IncludeKpi(self, request : monitoring_pb2.IncludeKpiRequest, context) -> context_pb2.Empty: LOGGER.info('IncludeKpi') return context_pb2.Empty() def GetStreamKpi ( self, request, context): # receives monitoring.KpiId returns stream monitoring.Kpi Loading Loading @@ -81,6 +125,13 @@ def start_server(address='[::]', port=PORT, max_workers=10): def stop_server(serverGRPC, grace_period=0): serverGRPC.stop(grace_period) def get_Kpi(kpiId): LOGGER.info('getting Kpi by KpyID') # Change these lines with the correct ones after DB query kpi = monitoring_pb2.Kpi() kpi.kpi_id.kpi_id.uuid = kpiId.kpi_id.uuid return kpi if __name__ == '__main__': LOGGER.info('initializing monitoringService') port = os.environ.get('PORT', str(PORT)) Loading