From e46e60a8b78501fa8d1e4f1c18ed94d245574184 Mon Sep 17 00:00:00 2001
From: Javi Moreno <francisco.moreno.external@atos.net>
Date: Thu, 30 Sep 2021 11:13:02 -0400
Subject: [PATCH] Data Model update WIP

---
 proto/monitoring.proto                      |  18 ++-
 src/monitoring/proto/monitoring_pb2.py      | 171 +++++++++++++++++---
 src/monitoring/proto/monitoring_pb2_grpc.py |  51 +++++-
 3 files changed, 208 insertions(+), 32 deletions(-)

diff --git a/proto/monitoring.proto b/proto/monitoring.proto
index 7fca036aa..1b1f1fbb7 100644
--- a/proto/monitoring.proto
+++ b/proto/monitoring.proto
@@ -5,8 +5,10 @@ package monitoring;
 import "context.proto";
 
 service MonitoringService {
-  rpc IncludeKpi (KpiRequest) returns (KpiId) {}
-  rpc MonitorKpi ( KpiId ) returns (Kpi) {}
+  rpc CreateKpi (KpiRequest) returns (KpiId) {}
+  rpc IncludeKpi (IncludeKpiRequest) returns (context.Empty) {}
+  rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {}
+  rpc MonitoriDeviceKpi (MonitorKpiRequest) returns (context.Empty) {}
   rpc GetStreamKpi ( KpiId ) returns (stream Kpi) {}
   rpc GetInstantKpi ( KpiId ) returns (Kpi) {}
 }
@@ -20,6 +22,18 @@ message KpiRequest{
 //  context.SliceId    slice_id    = 6;  // entities
 }
 
+message MonitorKpiRequest{
+  KpiId kpi_id = 1;
+  uint32 Connexion_time_s = 2;
+  uint32 sample_rate_ms = 3;
+}
+
+message IncludeKpiRequest{
+    KpiId kpi_id = 1;
+    string time_stamp = 2;
+    KpiValue kpi_value= 3;
+}
+
 message Kpi {
   KpiId kpi_id = 1;
   string timestamp = 2;
diff --git a/src/monitoring/proto/monitoring_pb2.py b/src/monitoring/proto/monitoring_pb2.py
index 0f65fde81..b586f3e94 100644
--- a/src/monitoring/proto/monitoring_pb2.py
+++ b/src/monitoring/proto/monitoring_pb2.py
@@ -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\"\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\xf1\x01\n\x11MonitoringService\x12\x39\n\nIncludeKpi\x12\x16.monitoring.KpiRequest\x1a\x11.monitoring.KpiId\"\x00\x12\x32\n\nMonitorKpi\x12\x11.monitoring.KpiId\x1a\x0f.monitoring.Kpi\"\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\"~\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')
   ,
   dependencies=[context__pb2.DESCRIPTOR,])
 
@@ -54,8 +54,8 @@ _KPISAMPLETYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=642,
-  serialized_end=762,
+  serialized_start=865,
+  serialized_end=985,
 )
 _sym_db.RegisterEnumDescriptor(_KPISAMPLETYPE)
 
@@ -113,6 +113,96 @@ _KPIREQUEST = _descriptor.Descriptor(
 )
 
 
+_MONITORKPIREQUEST = _descriptor.Descriptor(
+  name='MonitorKpiRequest',
+  full_name='monitoring.MonitorKpiRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='kpi_id', full_name='monitoring.MonitorKpiRequest.kpi_id', 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.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,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='sample_rate_ms', full_name='monitoring.MonitorKpiRequest.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=175,
+  serialized_end=279,
+)
+
+
+_INCLUDEKPIREQUEST = _descriptor.Descriptor(
+  name='IncludeKpiRequest',
+  full_name='monitoring.IncludeKpiRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='kpi_id', full_name='monitoring.IncludeKpiRequest.kpi_id', 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='time_stamp', full_name='monitoring.IncludeKpiRequest.time_stamp', index=1,
+      number=2, 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='kpi_value', full_name='monitoring.IncludeKpiRequest.kpi_value', index=2,
+      number=3, 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),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=281,
+  serialized_end=396,
+)
+
+
 _KPI = _descriptor.Descriptor(
   name='Kpi',
   full_name='monitoring.Kpi',
@@ -174,8 +264,8 @@ _KPI = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=176,
-  serialized_end=390,
+  serialized_start=399,
+  serialized_end=613,
 )
 
 
@@ -205,8 +295,8 @@ _KPIID = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=392,
-  serialized_end=430,
+  serialized_start=615,
+  serialized_end=653,
 )
 
 
@@ -243,8 +333,8 @@ _KPIDEVICE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=432,
-  serialized_end=516,
+  serialized_start=655,
+  serialized_end=739,
 )
 
 
@@ -274,8 +364,8 @@ _KPILIST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=518,
-  serialized_end=561,
+  serialized_start=741,
+  serialized_end=784,
 )
 
 
@@ -322,12 +412,15 @@ _KPIVALUE = _descriptor.Descriptor(
       name='value', full_name='monitoring.KpiValue.value',
       index=0, containing_type=None, fields=[]),
   ],
-  serialized_start=563,
-  serialized_end=640,
+  serialized_start=786,
+  serialized_end=863,
 )
 
 _KPIREQUEST.fields_by_name['device_id'].message_type = context__pb2._DEVICEID
 _KPIREQUEST.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE
+_MONITORKPIREQUEST.fields_by_name['kpi_id'].message_type = _KPIID
+_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
 _KPI.fields_by_name['kpi_value'].message_type = _KPIVALUE
 _KPI.fields_by_name['kpi_sample_type'].enum_type = _KPISAMPLETYPE
@@ -346,6 +439,8 @@ _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['MonitorKpiRequest'] = _MONITORKPIREQUEST
+DESCRIPTOR.message_types_by_name['IncludeKpiRequest'] = _INCLUDEKPIREQUEST
 DESCRIPTOR.message_types_by_name['Kpi'] = _KPI
 DESCRIPTOR.message_types_by_name['KpiId'] = _KPIID
 DESCRIPTOR.message_types_by_name['KpiDevice'] = _KPIDEVICE
@@ -361,6 +456,20 @@ KpiRequest = _reflection.GeneratedProtocolMessageType('KpiRequest', (_message.Me
   ))
 _sym_db.RegisterMessage(KpiRequest)
 
+MonitorKpiRequest = _reflection.GeneratedProtocolMessageType('MonitorKpiRequest', (_message.Message,), dict(
+  DESCRIPTOR = _MONITORKPIREQUEST,
+  __module__ = 'monitoring_pb2'
+  # @@protoc_insertion_point(class_scope:monitoring.MonitorKpiRequest)
+  ))
+_sym_db.RegisterMessage(MonitorKpiRequest)
+
+IncludeKpiRequest = _reflection.GeneratedProtocolMessageType('IncludeKpiRequest', (_message.Message,), dict(
+  DESCRIPTOR = _INCLUDEKPIREQUEST,
+  __module__ = 'monitoring_pb2'
+  # @@protoc_insertion_point(class_scope:monitoring.IncludeKpiRequest)
+  ))
+_sym_db.RegisterMessage(IncludeKpiRequest)
+
 Kpi = _reflection.GeneratedProtocolMessageType('Kpi', (_message.Message,), dict(
   DESCRIPTOR = _KPI,
   __module__ = 'monitoring_pb2'
@@ -404,31 +513,49 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor(
   file=DESCRIPTOR,
   index=0,
   serialized_options=None,
-  serialized_start=765,
-  serialized_end=1006,
+  serialized_start=988,
+  serialized_end=1372,
   methods=[
   _descriptor.MethodDescriptor(
-    name='IncludeKpi',
-    full_name='monitoring.MonitoringService.IncludeKpi',
+    name='CreateKpi',
+    full_name='monitoring.MonitoringService.CreateKpi',
     index=0,
     containing_service=None,
     input_type=_KPIREQUEST,
     output_type=_KPIID,
     serialized_options=None,
   ),
+  _descriptor.MethodDescriptor(
+    name='IncludeKpi',
+    full_name='monitoring.MonitoringService.IncludeKpi',
+    index=1,
+    containing_service=None,
+    input_type=_INCLUDEKPIREQUEST,
+    output_type=context__pb2._EMPTY,
+    serialized_options=None,
+  ),
   _descriptor.MethodDescriptor(
     name='MonitorKpi',
     full_name='monitoring.MonitoringService.MonitorKpi',
-    index=1,
+    index=2,
     containing_service=None,
-    input_type=_KPIID,
-    output_type=_KPI,
+    input_type=_MONITORKPIREQUEST,
+    output_type=context__pb2._EMPTY,
+    serialized_options=None,
+  ),
+  _descriptor.MethodDescriptor(
+    name='MonitoriDeviceKpi',
+    full_name='monitoring.MonitoringService.MonitoriDeviceKpi',
+    index=3,
+    containing_service=None,
+    input_type=_MONITORKPIREQUEST,
+    output_type=context__pb2._EMPTY,
     serialized_options=None,
   ),
   _descriptor.MethodDescriptor(
     name='GetStreamKpi',
     full_name='monitoring.MonitoringService.GetStreamKpi',
-    index=2,
+    index=4,
     containing_service=None,
     input_type=_KPIID,
     output_type=_KPI,
@@ -437,7 +564,7 @@ _MONITORINGSERVICE = _descriptor.ServiceDescriptor(
   _descriptor.MethodDescriptor(
     name='GetInstantKpi',
     full_name='monitoring.MonitoringService.GetInstantKpi',
-    index=3,
+    index=5,
     containing_service=None,
     input_type=_KPIID,
     output_type=_KPI,
diff --git a/src/monitoring/proto/monitoring_pb2_grpc.py b/src/monitoring/proto/monitoring_pb2_grpc.py
index 045a6a790..13fadc3eb 100644
--- a/src/monitoring/proto/monitoring_pb2_grpc.py
+++ b/src/monitoring/proto/monitoring_pb2_grpc.py
@@ -1,6 +1,7 @@
 # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
 import grpc
 
+from . import context_pb2 as context__pb2
 from . import monitoring_pb2 as monitoring__pb2
 
 
@@ -14,15 +15,25 @@ class MonitoringServiceStub(object):
     Args:
       channel: A grpc.Channel.
     """
-    self.IncludeKpi = channel.unary_unary(
-        '/monitoring.MonitoringService/IncludeKpi',
+    self.CreateKpi = channel.unary_unary(
+        '/monitoring.MonitoringService/CreateKpi',
         request_serializer=monitoring__pb2.KpiRequest.SerializeToString,
         response_deserializer=monitoring__pb2.KpiId.FromString,
         )
+    self.IncludeKpi = channel.unary_unary(
+        '/monitoring.MonitoringService/IncludeKpi',
+        request_serializer=monitoring__pb2.IncludeKpiRequest.SerializeToString,
+        response_deserializer=context__pb2.Empty.FromString,
+        )
     self.MonitorKpi = channel.unary_unary(
         '/monitoring.MonitoringService/MonitorKpi',
-        request_serializer=monitoring__pb2.KpiId.SerializeToString,
-        response_deserializer=monitoring__pb2.Kpi.FromString,
+        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,
+        response_deserializer=context__pb2.Empty.FromString,
         )
     self.GetStreamKpi = channel.unary_stream(
         '/monitoring.MonitoringService/GetStreamKpi',
@@ -40,6 +51,13 @@ class MonitoringServiceServicer(object):
   # missing associated documentation comment in .proto file
   pass
 
+  def CreateKpi(self, request, context):
+    # missing associated documentation comment in .proto file
+    pass
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
   def IncludeKpi(self, request, context):
     # missing associated documentation comment in .proto file
     pass
@@ -54,6 +72,13 @@ class MonitoringServiceServicer(object):
     context.set_details('Method not implemented!')
     raise NotImplementedError('Method not implemented!')
 
+  def MonitoriDeviceKpi(self, request, context):
+    # missing associated documentation comment in .proto file
+    pass
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
   def GetStreamKpi(self, request, context):
     # missing associated documentation comment in .proto file
     pass
@@ -71,15 +96,25 @@ class MonitoringServiceServicer(object):
 
 def add_MonitoringServiceServicer_to_server(servicer, server):
   rpc_method_handlers = {
-      'IncludeKpi': grpc.unary_unary_rpc_method_handler(
-          servicer.IncludeKpi,
+      'CreateKpi': grpc.unary_unary_rpc_method_handler(
+          servicer.CreateKpi,
           request_deserializer=monitoring__pb2.KpiRequest.FromString,
           response_serializer=monitoring__pb2.KpiId.SerializeToString,
       ),
+      'IncludeKpi': grpc.unary_unary_rpc_method_handler(
+          servicer.IncludeKpi,
+          request_deserializer=monitoring__pb2.IncludeKpiRequest.FromString,
+          response_serializer=context__pb2.Empty.SerializeToString,
+      ),
       'MonitorKpi': grpc.unary_unary_rpc_method_handler(
           servicer.MonitorKpi,
-          request_deserializer=monitoring__pb2.KpiId.FromString,
-          response_serializer=monitoring__pb2.Kpi.SerializeToString,
+          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,
+          response_serializer=context__pb2.Empty.SerializeToString,
       ),
       'GetStreamKpi': grpc.unary_stream_rpc_method_handler(
           servicer.GetStreamKpi,
-- 
GitLab