Commit b7396f37 authored by Francisco-Javier Moreno-Muro's avatar Francisco-Javier Moreno-Muro
Browse files

Added ConnectionID to the KpiDescriptor

parent b2bc69ea
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ message KpiDescriptor {
  context.EndPointId             endpoint_id     = 6;
  context.ServiceId              service_id      = 7;
  context.SliceId                slice_id        = 8;
  context.ConnectionId           connection_id   = 9;
}

message MonitorKpiRequest {
+5 −4
Original line number Diff line number Diff line
@@ -38,7 +38,8 @@ class ManagementDB():
                    kpi_sample_type INTEGER,
                    device_id INTEGER,
                    endpoint_id INTEGER,
                    service_id INTEGER
                    service_id INTEGER,
                    connection_id INTEGER
                );
            """)
            LOGGER.debug("KPI table created in the ManagementDB")
@@ -84,13 +85,13 @@ class ManagementDB():
            LOGGER.debug(f"Alarm table cannot be created in the ManagementDB. {e}")
            raise Exception

    def insert_KPI(self,kpi_description,kpi_sample_type,device_id,endpoint_id,service_id):
    def insert_KPI(self,kpi_description,kpi_sample_type,device_id,endpoint_id,service_id, connection_id):
        try:
            c = self.client.cursor()
            c.execute("SELECT kpi_id FROM kpi WHERE device_id is ? AND kpi_sample_type is ? AND endpoint_id is ? AND service_id is ?",(device_id,kpi_sample_type,endpoint_id,service_id))
            c.execute("SELECT kpi_id FROM kpi WHERE device_id is ? AND kpi_sample_type is ? AND endpoint_id is ? AND service_id is ?",(device_id,kpi_sample_type,endpoint_id,service_id, connection_id))
            data=c.fetchone()
            if data is None:
                c.execute("INSERT INTO kpi (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id) VALUES (?,?,?,?,?)", (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id))
                c.execute("INSERT INTO kpi (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id) VALUES (?,?,?,?,?)", (kpi_description,kpi_sample_type,device_id,endpoint_id,service_id, connection_id))
                self.client.commit()
                kpi_id = c.lastrowid
                LOGGER.debug(f"KPI {kpi_id} succesfully inserted in the ManagementDB")
+4 −2
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ class MetricsDB():
                    'device_id SYMBOL,' \
                    'endpoint_id SYMBOL,' \
                    'service_id SYMBOL,' \
                    'connection_id SYMBOL,' \
                    'timestamp TIMESTAMP,' \
                    'kpi_value DOUBLE)' \
                    'TIMESTAMP(timestamp);'
@@ -97,7 +98,7 @@ class MetricsDB():
            LOGGER.debug(f"Table {self.table} cannot be created. {e}")
            raise Exception

    def write_KPI(self, time, kpi_id, kpi_sample_type, device_id, endpoint_id, service_id, kpi_value):
    def write_KPI(self, time, kpi_id, kpi_sample_type, device_id, endpoint_id, service_id,connection_id, kpi_value):
        counter = 0
        while (counter < self.retries):
            try:
@@ -109,7 +110,8 @@ class MetricsDB():
                            'kpi_sample_type': kpi_sample_type,
                            'device_id': device_id,
                            'endpoint_id': endpoint_id,
                            'service_id': service_id},
                            'service_id': service_id,
                            'connection_id': connection_id,},
                        columns={
                            'kpi_value': kpi_value},
                        at=datetime.datetime.fromtimestamp(time))
+6 −2
Original line number Diff line number Diff line
@@ -85,13 +85,14 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
            kpi_device_id = request.device_id.device_uuid.uuid
            kpi_endpoint_id = request.endpoint_id.endpoint_uuid.uuid
            kpi_service_id = request.service_id.service_uuid.uuid
            kpi_connection_id = request.connection_id.connection_id.uuid

            if request.kpi_id.kpi_id.uuid is not "":
                response.kpi_id.uuid = request.kpi_id.kpi_id.uuid
            #     Here the code to modify an existing kpi
            else:
                data = self.management_db.insert_KPI(
                    kpi_description, kpi_sample_type, kpi_device_id, kpi_endpoint_id, kpi_service_id)
                    kpi_description, kpi_sample_type, kpi_device_id, kpi_endpoint_id, kpi_service_id, kpi_connection_id)
                response.kpi_id.uuid = str(data)

            return response
@@ -136,6 +137,7 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
                kpiDescriptor.device_id.device_uuid.uuid = str(kpi_db[3])
                kpiDescriptor.endpoint_id.endpoint_uuid.uuid = str(kpi_db[4])
                kpiDescriptor.service_id.service_uuid.uuid = str(kpi_db[5])
                kpiDescriptor.connection_id.connection_id.uuid = str(kpi_db[6])
            return kpiDescriptor
        except ServiceException as e:
            LOGGER.exception('GetKpiDescriptor exception')
@@ -160,6 +162,7 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
                kpi_descriptor.device_id.device_uuid.uuid = str(item[3])
                kpi_descriptor.endpoint_id.endpoint_uuid.uuid = str(item[4])
                kpi_descriptor.service_id.service_uuid.uuid = str(item[5])
                kpi_descriptor.connection_id.connection_id.uuid = str(item[6])

                kpi_descriptor_list.kpi_descriptor_list.append(kpi_descriptor)

@@ -186,11 +189,12 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
                deviceId = kpiDescriptor.device_id.device_uuid.uuid
                endpointId = kpiDescriptor.endpoint_id.endpoint_uuid.uuid
                serviceId = kpiDescriptor.service_id.service_uuid.uuid
                connectionId = kpiDescriptor.connection_id.connection_id.uuid
                time_stamp = request.timestamp.timestamp
                kpi_value = getattr(request.kpi_value, request.kpi_value.WhichOneof('value'))

                # Build the structure to be included as point in the MetricsDB
                self.metrics_db.write_KPI(time_stamp, kpiId, kpiSampleType, deviceId, endpointId, serviceId, kpi_value)
                self.metrics_db.write_KPI(time_stamp, kpiId, kpiSampleType, deviceId, endpointId, serviceId, connectionId, kpi_value)

            return Empty()
        except ServiceException as e:
+3 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ def create_kpi_request():
    _create_kpi_request.device_id.device_uuid.uuid     = 'DEV1'     # pylint: disable=maybe-no-member
    _create_kpi_request.service_id.service_uuid.uuid   = 'SERV1'    # pylint: disable=maybe-no-member
    _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END1'     # pylint: disable=maybe-no-member
    _create_kpi_request.connection_id.connection_id.uuid = 'CON1'  # pylint: disable=maybe-no-member
    return _create_kpi_request

def create_kpi_request_b():
@@ -39,6 +40,7 @@ def create_kpi_request_b():
    _create_kpi_request.device_id.device_uuid.uuid     = 'DEV2'     # pylint: disable=maybe-no-member
    _create_kpi_request.service_id.service_uuid.uuid   = 'SERV2'    # pylint: disable=maybe-no-member
    _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END2'     # pylint: disable=maybe-no-member
    _create_kpi_request.connection_id.connection_id.uuid = 'CON2'  # pylint: disable=maybe-no-member
    return _create_kpi_request

def create_kpi_request_c():
@@ -48,6 +50,7 @@ def create_kpi_request_c():
    _create_kpi_request.device_id.device_uuid.uuid     = 'DEV3'     # pylint: disable=maybe-no-member
    _create_kpi_request.service_id.service_uuid.uuid   = 'SERV3'    # pylint: disable=maybe-no-member
    _create_kpi_request.endpoint_id.endpoint_uuid.uuid = 'END3'     # pylint: disable=maybe-no-member
    _create_kpi_request.connection_id.connection_id.uuid = 'CON3'  # pylint: disable=maybe-no-member
    return _create_kpi_request

def monitor_kpi_request(kpi_uuid, monitoring_window_s, sampling_rate_s):
Loading