Skip to content
Snippets Groups Projects
Commit 36af4113 authored by francisco.moreno.external@atos.net's avatar francisco.moreno.external@atos.net
Browse files

Modifications in the monitoring information model and skeleton of the methods...

Modifications in the monitoring information model and skeleton of the methods in the server and client
parent b32ba540
No related branches found
No related tags found
1 merge request!54Release 2.0.0
......@@ -19,86 +19,95 @@ import "context.proto";
import "kpi_sample_types.proto";
service MonitoringService {
rpc CreateKpi (KpiDescriptor ) returns (KpiId ) {}
rpc GetKpiDescriptor (KpiId ) returns (KpiDescriptor ) {}
rpc IncludeKpi (Kpi ) returns (context.Empty ) {}
rpc MonitorKpi (MonitorKpiRequest ) returns (context.Empty ) {}
rpc GetStreamKpi (KpiId ) returns (stream Kpi ) {}
rpc GetInstantKpi (KpiId ) returns (Kpi ) {}
rpc CreateMetrics (MetricsDescriptor ) returns (MetricsId ) {}
rpc GetMetricsDescriptor (MetricsId ) returns (MetricsDescriptor) {}
rpc IncludeMetrics (Metrics ) returns (context.Empty ) {}
rpc MonitorMetrics (MonitorMetricsRequest) returns (context.Empty ) {}
rpc GetStreamMetrics (MetricsId ) returns (stream Metrics ) {}
rpc GetInstantMetrics (MetricsId ) returns (Metrics ) {}
rpc CreateKpi (KpiDescriptor ) returns (KpiId ) {}
rpc EditKpiDescriptor (EditedKpiDescriptor ) returns (context.Empty ) {}
rpc DeleteKpi (KpiId ) returns (context.Empty ) {}
rpc GetKpiDescriptorList (context.Empty ) returns (KpiDescriptorList) {}
rpc CreateBundleKpi (BundleKpiDescriptor ) returns (KpiId ) {}
rpc GetKpiDescriptor (KpiId ) returns (KpiDescriptor ) {}
rpc IncludeKpi (Kpi ) returns (context.Empty ) {}
rpc MonitorKpi (MonitorKpiRequest ) returns (context.Empty ) {}
rpc QueryKpiData (KpiQuery ) returns (KpiList ) {}
rpc SubscribeKpi (SubsDescriptor ) returns (stream KpiList ) {}
rpc GetSubsDescriptor (SubscriptionID ) returns (SubsDescriptor ) {}
rpc GetSubscriptions (context.Empty ) returns (SubsIDList ) {}
rpc EditKpiSubscription (SubsDescriptor ) returns (context.Empty ) {}
rpc CreateKpiAlarm (AlarmDescriptor ) returns (AlarmResponse ) {}
rpc EditKpiAlarm (AlarmDescriptor ) returns (context.Empty ) {}
rpc GetAlarms (context.Empty ) returns (AlarmIDList ) {}
rpc GetAlarmDescriptor (AlarmID ) returns (AlarmDescriptor ) {}
// rpc GetStreamKpi (KpiId ) returns (stream Kpi ) {}
// rpc GetInstantKpi (KpiId ) returns (KpiList ) {}
}
message KpiDescriptor {
string kpi_description = 1;
kpi_sample_types.KpiSampleType kpi_sample_type = 2;
context.DeviceId device_id = 3;
context.EndPointId endpoint_id = 4;
context.ServiceId service_id = 5;
// context.SliceId slice_id = 6;
string kpi_description = 1;
kpi_sample_types.KpiSampleType kpi_sample_type = 2;
context.DeviceId device_id = 3;
context.EndPointId endpoint_id = 4;
context.ServiceId service_id = 5;
context.SliceId slice_id = 6;
}
message MetricsDescriptor {
string metrics_description = 1;
kpi_sample_types.KpiSampleType kpi_sample_type = 2;
context.DeviceId device_id = 3;
context.EndPointId endpoint_id = 4;
context.ServiceId service_id = 5;
// context.SliceId slice_id = 6;
message BundleKpiDescriptor {
string kpi_description = 1;
repeated KpiId kpi_id_list = 2;
kpi_sample_types.KpiSampleType kpi_sample_type = 3;
context.DeviceId device_id = 4;
context.EndPointId endpoint_id = 5;
context.ServiceId service_id = 6;
context.SliceId slice_id = 7;
}
message MonitorKpiRequest{
KpiId kpi_id = 1;
float sampling_duration_s = 2;
float sampling_interval_s = 3;
message EditedKpiDescriptor {
KpiId kpi_id = 1;
string kpi_description = 2;
repeated KpiId kpi_id_list = 3;
kpi_sample_types.KpiSampleType kpi_sample_type = 4;
context.DeviceId device_id = 5;
context.EndPointId endpoint_id = 6;
context.ServiceId service_id = 7;
context.SliceId slice_id = 8;
}
message MonitorMetricsRequest{
MetricsId metrics_id = 1;
float sampling_duration_s = 2;
float sampling_interval_s = 3;
message MonitorKpiRequest {
KpiId kpi_id = 1;
float monitoring_window_s = 2;
float sampling_rate_s = 3;
// Pending add field to reflect Available Device Protocols
}
message KpiId {
context.Uuid kpi_id = 1;
message KpiQuery {
repeated KpiId kpi_id = 1;
float monitoring_window_s = 2;
float sampling_rate_s = 3;
uint32 last_n_samples = 4; // used when you want something like "get the last N many samples
string start_date = 5; // used when you want something like "get the samples since X date/time"
string end_date = 6; // used when you want something like "get the samples until X date/time"
// Pending add field to reflect Available Device Protocols
}
message MetricsId {
message KpiId {
context.Uuid kpi_id = 1;
}
message Kpi {
KpiId kpi_id = 1;
string timestamp = 2;
KpiValue kpi_value = 4;
KpiId kpi_id = 1;
string timestamp = 2;
KpiValue kpi_value = 3;
}
message Metrics {
MetricsId metrics_id = 1;
string timestamp = 2;
MetricsValue metrics_value = 4;
message KpiValueRange {
KpiValue kpiMinValue = 1;
KpiValue kpiMaxValue = 2;
}
message KpiValue {
oneof value {
uint32 intVal = 1;
float floatVal = 2;
string stringVal = 3;
bool boolVal = 4;
}
}
message MetricsValue {
oneof value {
uint32 intVal = 1;
float floatVal = 2;
string stringVal = 3;
bool boolVal = 4;
uint32 intVal = 1;
float floatVal = 2;
string stringVal = 3;
bool boolVal = 4;
}
}
......@@ -106,6 +115,50 @@ message KpiList {
repeated Kpi kpi_list = 1;
}
message MetricsList {
repeated Metrics metrics_list = 1;
message KpiDescriptorList {
repeated KpiDescriptor kpi_descriptor_list = 1;
}
message SubsDescriptor{
KpiId kpi_id = 1;
float sampling_duration_s = 2;
float sampling_interval_s = 3;
string start_date = 4; // used when you want something like "get the samples since X date/time"
string end_date = 5; // used when you want something like "get the samples until X date/time"
// Pending add field to reflect Available Device Protocols
}
message SubscriptionID {
context.Uuid subs_id = 1;
}
message SubsResponse {
SubscriptionID subs_id = 1;
repeated KpiList kpi_list = 2;
}
message SubsIDList {
repeated SubscriptionID subs_list = 1;
}
message AlarmDescriptor {
string alarm_description = 1;
string name = 2;
KpiId kpi_id = 3;
KpiValueRange kpi_value_range = 4;
string timestamp = 5;
}
message AlarmID{
context.Uuid alarm_id = 1;
}
message AlarmResponse {
AlarmID alarm_id = 1;
string text = 2;
KpiValue kpi_value = 3;
}
message AlarmIDList {
repeated AlarmID alarm_list = 1;
}
\ No newline at end of file
......@@ -37,6 +37,36 @@ class MonitoringClient:
LOGGER.info('CreateKpi result: {}'.format(response))
return response
def EditKpiDescriptor(self, request):
LOGGER.info('EditKpiDescriptor: {}'.format(request))
response = self.server.EditKpiDescriptor(request)
LOGGER.info('EditKpiDescriptor result: {}'.format(response))
return response
def DeleteKpi(self, request):
LOGGER.info('DeleteKpi: {}'.format(request))
response = self.server.DeleteKpi(request)
LOGGER.info('DeleteKpi result: {}'.format(response))
return response
def GetKpiDescriptorList(self, request):
LOGGER.info('GetKpiDescriptorList: {}'.format(request))
response = self.server.GetKpiDescriptorList(request)
LOGGER.info('GetKpiDescriptorList result: {}'.format(response))
return response
def CreateBundleKpi(self, request):
LOGGER.info('CreateBundleKpi: {}'.format(request))
response = self.server.CreateBundleKpi(request)
LOGGER.info('CreateBundleKpi result: {}'.format(response))
return response
def GetKpiDescriptor(self, request):
LOGGER.info('GetKpiDescriptor: {}'.format(request))
response = self.server.GetKpiDescriptor(request)
LOGGER.info('GetKpiDescriptor result: {}'.format(response))
return response
def MonitorKpi(self, request):
LOGGER.info('MonitorKpi: {}'.format(request))
response = self.server.MonitorKpi(request)
......@@ -49,24 +79,69 @@ class MonitoringClient:
LOGGER.info('IncludeKpi result: {}'.format(response))
return response
def GetStreamKpi(self, request):
LOGGER.info('GetStreamKpi: {}'.format(request))
response = self.server.GetStreamKpi(request)
LOGGER.info('GetStreamKpi result: {}'.format(response))
yield monitoring_pb2.Kpi()
def QueryKpiData(self, request):
LOGGER.info('QueryKpiData: {}'.format(request))
response = self.server.QueryKpiData(request)
LOGGER.info('QueryKpiData result: {}'.format(response))
return response
def GetInstantKpi(self, request):
LOGGER.info('GetInstantKpi: {}'.format(request))
response = self.server.GetInstantKpi(request)
LOGGER.info('GetInstantKpi result: {}'.format(response))
return monitoring_pb2.Kpi()
def SubscribeKpi(self, request):
LOGGER.info('SubscribeKpi: {}'.format(request))
response = self.server.SubscribeKpi(request)
LOGGER.info('SubscribeKpi result: {}'.format(response))
return response
def GetKpiDescriptor(self, request):
LOGGER.info('GetKpiDescriptor: {}'.format(request))
response = self.server.GetKpiDescriptor(request)
LOGGER.info('GetKpiDescriptor result: {}'.format(response))
def GetSubsDescriptor(self, request):
LOGGER.info('GetSubsDescriptor: {}'.format(request))
response = self.server.GetSubsDescriptor(request)
LOGGER.info('GetSubsDescriptor result: {}'.format(response))
return response
def EditKpiSubscription(self, request):
LOGGER.info('EditKpiSubscription: {}'.format(request))
response = self.server.EditKpiSubscription(request)
LOGGER.info('EditKpiSubscription result: {}'.format(response))
return response
def CreateKpiAlarm(self, request):
LOGGER.info('CreateKpiAlarm: {}'.format(request))
response = self.server.CreateKpiAlarm(request)
LOGGER.info('CreateKpiAlarm result: {}'.format(response))
return response
def EditKpiAlarm(self, request):
LOGGER.info('EditKpiAlarm: {}'.format(request))
response = self.server.EditKpiAlarm(request)
LOGGER.info('EditKpiAlarm result: {}'.format(response))
return response
def GetAlarms(self, request):
LOGGER.info('GetAlarms: {}'.format(request))
response = self.server.GetAlarms(request)
LOGGER.info('GetAlarms result: {}'.format(response))
return response
def GetAlarmDescriptor(self, request):
LOGGER.info('GetAlarmDescriptor: {}'.format(request))
response = self.server.GetAlarmDescriptor(request)
LOGGER.info('GetAlarmDescriptor result: {}'.format(response))
return response
# def GetStreamKpi(self, request):
# LOGGER.info('GetStreamKpi: {}'.format(request))
# response = self.server.GetStreamKpi(request)
# LOGGER.info('GetStreamKpi result: {}'.format(response))
# yield monitoring_pb2.Kpi()
#
# def GetInstantKpi(self, request):
# LOGGER.info('GetInstantKpi: {}'.format(request))
# response = self.server.GetInstantKpi(request)
# LOGGER.info('GetInstantKpi result: {}'.format(response))
# return monitoring_pb2.Kpi()
if __name__ == '__main__':
# get port
port = sys.argv[1] if len(sys.argv) > 1 else '7070'
......
#!/bin/bash -eu
py -m grpc_tools.protoc -I../../proto --python_out=proto --grpc_python_out=proto monitoring.proto
py -m grpc_tools.protoc -I../../proto --python_out=proto --grpc_python_out=proto context.proto
py -m grpc_tools.protoc -I../../proto --python_out=proto --grpc_python_out=proto kpi_sample_types.proto
rm proto/context_pb2_grpc.py
rm proto/kpi_sample_types_pb2_grpc.py
sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' proto/monitoring_pb2.py
sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' proto/monitoring_pb2_grpc.py
sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' proto/context_pb2.py
......@@ -12,7 +12,7 @@ from google.protobuf import symbol_database as _symbol_database
_sym_db = _symbol_database.Default()
import kpi_sample_types_pb2 as kpi__sample__types__pb2
from . import kpi_sample_types_pb2 as kpi__sample__types__pb2
DESCRIPTOR = _descriptor.FileDescriptor(
......
This diff is collapsed.
This diff is collapsed.
......@@ -86,6 +86,55 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
# CREATEKPI_COUNTER_FAILED.inc()
grpc_context.abort(grpc.StatusCode.INTERNAL, str(e))
def EditKpiDescriptor ( self, request : monitoring_pb2.EditedKpiDescriptor, grpc_context : grpc.ServicerContext) -> context_pb2.Empty:
LOGGER.info('EditKpiDescriptor')
try:
# TBC
return context_pb2.Empty()
except ServiceException as e:
LOGGER.exception('EditKpiDescriptor exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('EditKpiDescriptor exception')
def DeleteKpi ( self, request : monitoring_pb2.KpiId, grpc_context : grpc.ServicerContext) -> context_pb2.Empty:
LOGGER.info('DeleteKpi')
try:
# TBC
return context_pb2.Empty()
except ServiceException as e:
LOGGER.exception('DeleteKpi exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('DeleteKpi exception')
def GetKpiDescriptorList ( self, request : context_pb2.Empty, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiDescriptorList:
LOGGER.info('GetKpiDescriptorList')
try:
# TBC
return monitoring_pb2.KpiDescriptorList()
except ServiceException as e:
LOGGER.exception('GetKpiDescriptorList exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetKpiDescriptorList exception')
def CreateBundleKpi ( self, request : monitoring_pb2.BundleKpiDescriptor, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiId:
LOGGER.info('CreateBundleKpi')
try:
# TBC
return monitoring_pb2.KpiId()
except ServiceException as e:
LOGGER.exception('CreateBundleKpi exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('CreateBundleKpi exception')
# rpc MonitorKpi (MonitorKpiRequest) returns (context.Empty) {}
def MonitorKpi ( self, request : monitoring_pb2.MonitorKpiRequest, grpc_context : grpc.ServicerContext) -> context_pb2.Empty:
......@@ -150,16 +199,16 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
# CREATEKPI_COUNTER_FAILED.inc()
return context_pb2.Empty()
def GetStreamKpi ( self, request, grpc_context : grpc.ServicerContext):
# receives monitoring.KpiId returns stream monitoring.Kpi
LOGGER.info('GetStreamKpi')
yield monitoring_pb2.Kpi()
@MONITORING_GETINSTANTKPI_REQUEST_TIME.time()
def GetInstantKpi ( self, request, grpc_context : grpc.ServicerContext):
# receives monitoring.KpiId returns monitoring.Kpi
LOGGER.info('GetInstantKpi')
return monitoring_pb2.Kpi()
# def GetStreamKpi ( self, request, grpc_context : grpc.ServicerContext):
#
# LOGGER.info('GetStreamKpi')
# yield monitoring_pb2.Kpi()
#
# @MONITORING_GETINSTANTKPI_REQUEST_TIME.time()
# def GetInstantKpi ( self, request, grpc_context : grpc.ServicerContext):
#
# LOGGER.info('GetInstantKpi')
# return monitoring_pb2.Kpi()
def GetKpiDescriptor(self, request : monitoring_pb2.KpiId, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiDescriptor:
......@@ -185,3 +234,112 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
except Exception as e: # pragma: no cover
LOGGER.exception('GetKpiDescriptor exception')
def QueryKpiData ( self, request : monitoring_pb2.KpiQuery, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiList:
LOGGER.info('QueryKpiData')
try:
# TBC
return monitoring_pb2.KpiQuery()
except ServiceException as e:
LOGGER.exception('QueryKpiData exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('QueryKpiData exception')
def SubscribeKpi ( self, request : monitoring_pb2.SubsDescriptor, grpc_context : grpc.ServicerContext) -> monitoring_pb2.KpiList:
LOGGER.info('SubscribeKpi')
try:
# TBC
yield monitoring_pb2.KpiList()
except ServiceException as e:
LOGGER.exception('SubscribeKpi exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('SubscribeKpi exception')
def GetSubsDescriptor ( self, request : monitoring_pb2.SubscriptionID, grpc_context : grpc.ServicerContext) -> monitoring_pb2.SubsDescriptor:
LOGGER.info('GetSubsDescriptor')
try:
# TBC
return monitoring_pb2.SubsDescriptor()
except ServiceException as e:
LOGGER.exception('GetSubsDescriptor exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetSubsDescriptor exception')
def GetSubscriptions ( self, request : context_pb2.Empty, grpc_context : grpc.ServicerContext) -> monitoring_pb2.SubsIDList:
LOGGER.info('GetSubscriptions')
try:
# TBC
return monitoring_pb2.SubsIDList()
except ServiceException as e:
LOGGER.exception('GetSubscriptions exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetSubscriptions exception')
def EditKpiSubscription ( self, request : monitoring_pb2.SubsDescriptor, grpc_context : grpc.ServicerContext) -> context_pb2.Empty:
LOGGER.info('EditKpiSubscription')
try:
# TBC
return context_pb2.Empty()
except ServiceException as e:
LOGGER.exception('EditKpiSubscription exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('EditKpiSubscription exception')
def CreateKpiAlarm ( self, request : monitoring_pb2.AlarmDescriptor, grpc_context : grpc.ServicerContext) -> monitoring_pb2.AlarmResponse:
LOGGER.info('CreateKpiAlarm')
try:
# TBC
return monitoring_pb2.AlarmResponse()
except ServiceException as e:
LOGGER.exception('CreateKpiAlarm exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('CreateKpiAlarm exception')
def EditKpiAlarm ( self, request : monitoring_pb2.AlarmDescriptor, grpc_context : grpc.ServicerContext) -> context_pb2.Empty:
LOGGER.info('EditKpiAlarm')
try:
# TBC
return context_pb2.Empty()
except ServiceException as e:
LOGGER.exception('EditKpiAlarm exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('EditKpiAlarm exception')
def GetAlarms ( self, request : context_pb2.Empty, grpc_context : grpc.ServicerContext) -> monitoring_pb2.AlarmIDList:
LOGGER.info('GetAlarms')
try:
# TBC
return monitoring_pb2.AlarmIDList()
except ServiceException as e:
LOGGER.exception('GetAlarms exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetAlarms exception')
def GetAlarmDescriptor ( self, request : monitoring_pb2.AlarmID, grpc_context : grpc.ServicerContext) -> monitoring_pb2.AlarmDescriptor:
LOGGER.info('GetAlarmDescriptor')
try:
# TBC
return monitoring_pb2.AlarmDescriptor()
except ServiceException as e:
LOGGER.exception('GetAlarmDescriptor exception')
grpc_context.abort(e.code, e.details)
except Exception as e: # pragma: no cover
LOGGER.exception('GetAlarmDescriptor exception')
\ No newline at end of file
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