Commit 1aae174c authored by francisco.moreno.external@atos.net's avatar francisco.moreno.external@atos.net
Browse files

Update monitoring.proto Information Model

parent 484f1bc5
Loading
Loading
Loading
Loading
+21 −39
Original line number Diff line number Diff line
@@ -19,22 +19,18 @@ import "context.proto";
import "kpi_sample_types.proto";

service MonitoringService {
  rpc CreateKpi             (KpiDescriptor      ) returns (KpiId               ) {}
  rpc EditKpiDescriptor     (EditedKpiDescriptor) returns (context.Empty       ) {}
  rpc SetKpi                (KpiDescriptor      ) returns (KpiId               ) {}
  rpc DeleteKpi             (KpiId              ) returns (context.Empty       ) {}
  rpc GetKpiDescriptor      (KpiId              ) returns (KpiDescriptor       ) {}
  rpc GetKpiDescriptorList  (context.Empty      ) returns (KpiDescriptorList   ) {}
  rpc CreateBundleKpi       (BundleKpiDescriptor) returns (KpiId               ) {}
  rpc IncludeKpi            (Kpi                ) returns (context.Empty       ) {}
  rpc MonitorKpi            (MonitorKpiRequest  ) returns (context.Empty       ) {}
  rpc QueryKpiData          (KpiQuery           ) returns (KpiList             ) {}
  rpc SubscribeKpi          (SubsDescriptor     ) returns (stream KpiList      ) {}
  rpc SetKpiSubscription    (SubsDescriptor     ) returns (stream KpiList      ) {}
  rpc GetSubsDescriptor     (SubscriptionID     ) returns (SubsDescriptor      ) {}
  rpc GetSubscriptions      (context.Empty      ) returns (SubsIDList          ) {}
  rpc DeleteSubscription    (SubscriptionID     ) returns (context.Empty       ) {}
  rpc EditKpiSubscription   (SubsDescriptor     ) returns (context.Empty       ) {}
  rpc CreateKpiAlarm        (AlarmDescriptor    ) returns (AlarmID             ) {}
  rpc EditKpiAlarm          (AlarmDescriptor    ) returns (context.Empty       ) {}
  rpc SetKpiAlarm           (AlarmDescriptor    ) returns (AlarmID             ) {}
  rpc GetAlarms             (context.Empty      ) returns (AlarmIDList         ) {}
  rpc GetAlarmDescriptor    (AlarmID            ) returns (AlarmDescriptor     ) {}
  rpc GetAlarmResponseStream(AlarmSubscription  ) returns (stream AlarmResponse) {}
@@ -44,25 +40,6 @@ service MonitoringService {
}

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;
}

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 EditedKpiDescriptor {
  KpiId                          kpi_id          = 1;
  string                         kpi_description = 2;
  repeated KpiId                 kpi_id_list     = 3;
@@ -103,7 +80,9 @@ message Kpi {
message KpiValueRange {
  KpiValue  kpiMinValue     = 1;
  KpiValue  kpiMaxValue     = 2;
  bool inRange         = 3;  // by default False
  bool      inRange         = 3;  // by default True
  bool      includeMinValue = 4;  // False is outside the interval
  bool      includeMaxValue = 5;  // False is outside the interval
}

message KpiValue {
@@ -118,6 +97,7 @@ message KpiValue {
  }
}


message KpiList {
  repeated Kpi kpi_list = 1;
}
@@ -127,11 +107,12 @@ message KpiDescriptorList {
}

message SubsDescriptor{
  KpiId             kpi_id              = 1;
  float             sampling_duration_s = 2;
  float             sampling_interval_s = 3;
  context.Timestamp start_timestamp     = 4;  // used when you want something like "get the samples since X date/time"
  context.Timestamp end_timestamp       = 5;  // used when you want something like "get the samples until X date/time"
  SubscriptionID    subs_id             = 1;
  KpiId             kpi_id              = 2;
  float             sampling_duration_s = 3;
  float             sampling_interval_s = 4;
  context.Timestamp start_timestamp     = 5;  // used when you want something like "get the samples since X date/time"
  context.Timestamp end_timestamp       = 6;  // used when you want something like "get the samples until X date/time"
  // Pending add field to reflect Available Device Protocols
}

@@ -149,11 +130,12 @@ message SubsIDList {
}

message AlarmDescriptor {
  string            alarm_description = 1;
  string            name              = 2;
  KpiId             kpi_id            = 3;
  KpiValueRange     kpi_value_range   = 4;
  context.Timestamp timestamp         = 5;
  AlarmID                     alarm_id              = 1;
  string                      alarm_description     = 2;
  string                      name                  = 3;
  repeated KpiId              kpi_id                = 4;
  repeated KpiValueRange      kpi_value_range       = 5;
  context.Timestamp           timestamp             = 6;
}

message AlarmID{
+10 −38
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ from common.Settings import get_service_host, get_service_port_grpc
from common.tools.client.RetryDecorator import retry, delay_exponential
from common.tools.grpc.Tools import grpc_message_to_json_string
from common.proto.context_pb2 import Empty
from common.proto.monitoring_pb2 import Kpi, KpiDescriptor, KpiId, MonitorKpiRequest, EditedKpiDescriptor, \
    KpiDescriptorList, BundleKpiDescriptor, KpiQuery, KpiList, SubsDescriptor, SubscriptionID, SubsIDList, \
from common.proto.monitoring_pb2 import Kpi, KpiDescriptor, KpiId, MonitorKpiRequest, \
    KpiDescriptorList, KpiQuery, KpiList, SubsDescriptor, SubscriptionID, SubsIDList, \
    AlarmDescriptor, AlarmID, AlarmIDList, AlarmResponse, AlarmSubscription
from common.proto.monitoring_pb2_grpc import MonitoringServiceStub

@@ -51,17 +51,10 @@ class MonitoringClient:
        self.stub = None

    @RETRY_DECORATOR
    def CreateKpi(self, request : KpiDescriptor) -> KpiId:
        LOGGER.debug('CreateKpi: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.CreateKpi(request)
        LOGGER.debug('CreateKpi result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def EditKpiDescriptor(self, request : EditedKpiDescriptor) -> Empty:
        LOGGER.debug('EditKpiDescriptor: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.EditKpiDescriptor(request)
        LOGGER.info('EditKpiDescriptor result: {:s}'.format(grpc_message_to_json_string(response)))
    def SetKpi(self, request : KpiDescriptor) -> KpiId:
        LOGGER.debug('SetKpi: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.SetKpi(request)
        LOGGER.debug('SetKpi result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
@@ -85,13 +78,6 @@ class MonitoringClient:
        LOGGER.debug('GetKpiDescriptorList result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def CreateBundleKpi(self, request : BundleKpiDescriptor) -> KpiId:
        LOGGER.debug('CreateBundleKpi: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.CreateBundleKpi(request)
        LOGGER.debug('CreateBundleKpi result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def IncludeKpi(self, request : Kpi) -> Empty:
        LOGGER.debug('IncludeKpi: {:s}'.format(grpc_message_to_json_string(request)))
@@ -142,24 +128,10 @@ class MonitoringClient:
        return response

    @RETRY_DECORATOR
    def EditKpiSubscription(self, request : SubsDescriptor) -> Empty:
        LOGGER.debug('EditKpiSubscription: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.GetSubscriptions(request)
        LOGGER.debug('EditKpiSubscription result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def CreateKpiAlarm(self, request : AlarmDescriptor) -> AlarmID:
        LOGGER.debug('CreateKpiAlarm: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.CreateKpiAlarm(request)
        LOGGER.debug('CreateKpiAlarm result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
    def EditKpiAlarm(self, request : AlarmDescriptor) -> Empty:
        LOGGER.debug('EditKpiAlarm: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.EditKpiAlarm(request)
        LOGGER.debug('EditKpiAlarm result: {:s}'.format(grpc_message_to_json_string(response)))
    def SetKpiAlarm(self, request : AlarmDescriptor) -> AlarmID:
        LOGGER.debug('SetKpiAlarm: {:s}'.format(grpc_message_to_json_string(request)))
        response = self.stub.SetKpiAlarm(request)
        LOGGER.debug('SetKpiAlarm result: {:s}'.format(grpc_message_to_json_string(response)))
        return response

    @RETRY_DECORATOR
+13 −61
Original line number Diff line number Diff line
@@ -23,8 +23,8 @@ from common.proto.device_pb2 import MonitoringSettings
from common.proto.kpi_sample_types_pb2 import KpiSampleType
from common.proto.monitoring_pb2_grpc import MonitoringServiceServicer
from common.proto.monitoring_pb2 import AlarmResponse, AlarmDescriptor, AlarmIDList, SubsIDList, KpiId, \
    KpiDescriptor, KpiList, KpiQuery, SubsDescriptor, SubscriptionID, AlarmID, EditedKpiDescriptor, KpiDescriptorList, \
    BundleKpiDescriptor, MonitorKpiRequest, Kpi, AlarmSubscription
    KpiDescriptor, KpiList, KpiQuery, SubsDescriptor, SubscriptionID, AlarmID, KpiDescriptorList, \
    MonitorKpiRequest, Kpi, AlarmSubscription
from common.rpc_method_wrapper.ServiceExceptions import ServiceException
from common.tools.timestamp.Converters import timestamp_float_to_string

@@ -57,15 +57,15 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
        self.sql_db = SqliteTools.SQLite('monitoring.db')
        self.deviceClient = DeviceClient(host=DEVICESERVICE_SERVICE_HOST, port=DEVICESERVICE_SERVICE_PORT_GRPC)  # instantiate the client

        # Create metrics_db client
        # Set metrics_db client
        self.metrics_db = MetricsDBTools.MetricsDB(METRICSDB_HOSTNAME,METRICSDB_ILP_PORT,METRICSDB_REST_PORT,METRICSDB_TABLE)

    # CreateKpi (CreateKpiRequest) returns (KpiId) {}
    def CreateKpi(
    # SetKpi (SetKpiRequest) returns (KpiId) {}
    def SetKpi(
        self, request : KpiDescriptor, grpc_context : grpc.ServicerContext
    ) -> KpiId:
        # CREATEKPI_COUNTER_STARTED.inc()
        LOGGER.info('CreateKpi')
        LOGGER.info('SetKpi')
        try:
            # Here the code to create a sqlite query to crete a KPI and return a KpiID
            kpi_id = KpiId()
@@ -84,26 +84,14 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
            # CREATEKPI_COUNTER_COMPLETED.inc()
            return kpi_id
        except ServiceException as e:
            LOGGER.exception('CreateKpi exception')
            LOGGER.exception('SetKpi exception')
            # CREATEKPI_COUNTER_FAILED.inc()
            grpc_context.abort(e.code, e.details)
        except Exception as e:  # pragma: no cover
            LOGGER.exception('CreateKpi exception')
            LOGGER.exception('SetKpi exception')
            # CREATEKPI_COUNTER_FAILED.inc()
            grpc_context.abort(grpc.StatusCode.INTERNAL, str(e))

    def EditKpiDescriptor ( self, request : EditedKpiDescriptor, grpc_context : grpc.ServicerContext) -> Empty:

        LOGGER.info('EditKpiDescriptor')
        try:
             # TBC
            return 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 : KpiId, grpc_context : grpc.ServicerContext) -> Empty:

        LOGGER.info('DeleteKpi')
@@ -128,25 +116,12 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
        except Exception as e:  # pragma: no cover
            LOGGER.exception('GetKpiDescriptorList exception')

    def CreateBundleKpi ( self, request : BundleKpiDescriptor, grpc_context : grpc.ServicerContext) -> KpiId:

        LOGGER.info('CreateBundleKpi')
        try:
             # TBC
            return 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 : MonitorKpiRequest, grpc_context : grpc.ServicerContext) -> Empty:

        LOGGER.info('MonitorKpi')
        try:
            # Creates the request to send to the device service
            # Sets the request to send to the device service
            monitor_device_request = MonitoringSettings()

            kpiDescriptor = self.GetKpiDescriptor(request.kpi_id, grpc_context)
@@ -300,41 +275,18 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
        except Exception as e:  # pragma: no cover
            LOGGER.exception('DeleteSubscription exception')

    def EditKpiSubscription ( self, request : SubsDescriptor, grpc_context : grpc.ServicerContext) -> Empty:
    def SetKpiAlarm ( self, request : AlarmDescriptor, grpc_context : grpc.ServicerContext) -> AlarmResponse:

        LOGGER.info('EditKpiSubscription')
        try:
             # TBC
            return 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 : AlarmDescriptor, grpc_context : grpc.ServicerContext) -> AlarmResponse:

        LOGGER.info('CreateKpiAlarm')
        LOGGER.info('SetKpiAlarm')
        try:
             # TBC
            return AlarmResponse()
        except ServiceException as e:
            LOGGER.exception('CreateKpiAlarm exception')
            LOGGER.exception('SetKpiAlarm exception')
            grpc_context.abort(e.code, e.details)
        except Exception as e:  # pragma: no cover
            LOGGER.exception('CreateKpiAlarm exception')
            LOGGER.exception('SetKpiAlarm exception')

    def EditKpiAlarm ( self, request : AlarmDescriptor, grpc_context : grpc.ServicerContext) -> Empty:

        LOGGER.info('EditKpiAlarm')
        try:
             # TBC
            return 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 : Empty, grpc_context : grpc.ServicerContext) -> AlarmIDList: