Commit 27b3c87d authored by Javi Moreno's avatar Javi Moreno
Browse files

MonitoringDeviceKpi Method added to Device Service (dummy functionality)

parent f2e70c46
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
import grpc, logging
from common.tools.client.RetryDecorator import retry, delay_exponential
from device.proto.context_pb2 import Device, DeviceId, Empty
from device.proto.device_pb2 import MonitoringSettings
from device.proto.device_pb2_grpc import DeviceServiceStub

LOGGER = logging.getLogger(__name__)
@@ -45,3 +46,10 @@ class DeviceClient:
        response = self.stub.DeleteDevice(request)
        LOGGER.debug('DeleteDevice result: {:s}'.format(str(response)))
        return response

    @retry(exceptions=set(), max_retries=MAX_RETRIES, delay_function=DELAY_FUNCTION, prepare_method_name='connect')
    def MonitorDeviceKpi(self, request: MonitoringSettings) -> Empty:
        LOGGER.debug('MonitorDeviceKpi request: {:s}'.format(str(request)))
        response = self.stub.MonitorDeviceKpi(request)
        LOGGER.debug('MonitorDeviceKpi result: {:s}'.format(str(response)))
        return response
+32 −0
Original line number Diff line number Diff line
@@ -5,6 +5,7 @@ from common.database.api.Database import Database
from common.database.api.context.topology.device.OperationalStatus import OperationalStatus
from common.exceptions.ServiceException import ServiceException
from device.proto.context_pb2 import DeviceId, Device, Empty
from device.proto.device_pb2 import MonitoringSettings
from device.proto.device_pb2_grpc import DeviceServiceServicer
from device.service.Tools import check_device_id_request, check_device_request

@@ -37,6 +38,16 @@ DELETEDEVICE_COUNTER_FAILED = Counter ('device_deletedevice_counter_failed'
DELETEDEVICE_HISTOGRAM_DURATION = Histogram('device_deletedevice_histogram_duration',
                                            'Device:DeleteDevice histogram of request duration')

MONITORDEVICEKPI_COUNTER_STARTED    = Counter  ('device_monitordevicekpi_counter_started',
                                            'Device:MonitorDeviceKpi counter of requests started'  )
MONITORDEVICEKPI_COUNTER_COMPLETED  = Counter  ('device_monitordevicekpi_counter_completed',
                                            'Device:MonitorDeviceKpi counter of requests completed')
MONITORDEVICEKPI_COUNTER_FAILED     = Counter  ('device_monitordevicekpi_counter_failed',
                                            'Device:MonitorDeviceKpi counter of requests failed'   )
MONITORDEVICEKPI_HISTOGRAM_DURATION = Histogram('device_monitordevicekpi_histogram_duration',
                                            'Device:MonitorDeviceKpi histogram of request duration')


class DeviceServiceServicerImpl(DeviceServiceServicer):
    def __init__(self, database : Database):
        LOGGER.debug('Creating Servicer...')
@@ -172,3 +183,24 @@ class DeviceServiceServicerImpl(DeviceServiceServicer):
            LOGGER.exception('DeleteDevice exception')
            DELETEDEVICE_COUNTER_FAILED.inc()
            grpc_context.abort(grpc.StatusCode.INTERNAL, str(e))

    @MONITORDEVICEKPI_HISTOGRAM_DURATION.time()
    def MonitorDeviceKpi(self, request : MonitoringSettings, grpc_context : grpc.ServicerContext) -> Empty:
        MONITORDEVICEKPI_COUNTER_STARTED.inc()
        try:
            LOGGER.debug('MonitorDeviceKpi request: {}'.format(str(request)))

            # ---- Implement method ------------------------------------------------------------------------------------

            reply = Empty()
            LOGGER.debug('MonitorDeviceKpi reply: {}'.format(str(reply)))
            MONITORDEVICEKPI_COUNTER_COMPLETED.inc()
            return reply
        except ServiceException as e:
            LOGGER.exception('MonitorDeviceKpi exception')
            MONITORDEVICEKPI_COUNTER_FAILED.inc()
            grpc_context.abort(e.code, e.details)
        except Exception as e:
            LOGGER.exception('MonitorDeviceKpi exception')
            MONITORDEVICEKPI_COUNTER_FAILED.inc()
            grpc_context.abort(grpc.StatusCode.INTERNAL, str(e))
+15 −16
Original line number Diff line number Diff line
@@ -72,8 +72,8 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
        monitor_device_request.sampling_duration_s                              = request.sampling_duration_s
        monitor_device_request.sampling_interval_s                              = request.sampling_interval_s

        # deviceClient = DeviceClient(address="localhost", port=GRPC_SERVICE_PORT )  # instantiate the client
        # deviceClient.MonitorDeviceKpi(monitor_device_request)
        deviceClient = DeviceClient(address="localhost", port=GRPC_SERVICE_PORT )  # instantiate the client
        deviceClient.MonitorDeviceKpi(monitor_device_request)

        return context_pb2.Empty()

@@ -90,7 +90,6 @@ class MonitoringServiceServicerImpl(monitoring_pb2_grpc.MonitoringServiceService
        deviceId        = kpiDescriptor.device_id.device_uuid.uuid
        endpointId      = kpiDescriptor.endpoint_id.endpoint_uuid.uuid
        serviceId       = kpiDescriptor.service_id.service_uuid.uuid

        time_stamp      = request.timestamp
        kpi_value       = request.kpi_value.intVal