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

Add monitoring flag when a kpi is started to be monitored

parent 2d410ea8
Loading
Loading
Loading
Loading
+40 −2
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ class ManagementDB():
                    endpoint_id INTEGER,
                    service_id INTEGER,
                    slice_id INTEGER,
                    connection_id INTEGER
                    connection_id INTEGER,
                    monitor_flag INTEGER
                );
            """)
            LOGGER.debug("KPI table created in the ManagementDB")
@@ -248,3 +249,40 @@ class ManagementDB():
            return data
        except sqlite3.Error as e:
            LOGGER.debug(f"Alarms cannot be retrieved from the ManagementDB: {e}")

    def check_monitoring_flag(self,kpi_id):
        try:
            c = self.client.cursor()
            c.execute("SELECT monitor_flag FROM kpi WHERE kpi_id is ?",(kpi_id,))
            data=c.fetchone()
            if data is None:
                LOGGER.debug(f"KPI {kpi_id} does not exists")
                return None
            else:
                if data[0] == 1:
                    return True
                elif data[0] == 0:
                    return False
                else:
                    LOGGER.debug(f"KPI {kpi_id} is wrong")
                    return None
        except sqlite3.Error as e:
            LOGGER.debug(f"KPI {kpi_id} cannot be checked from the ManagementDB: {e}")


    def set_monitoring_flag(self,kpi_id,flag):
        try:
            c = self.client.cursor()
            data = c.execute("SELECT * FROM kpi WHERE kpi_id is ?",(kpi_id,)).fetchone()
            if data is None:
                LOGGER.debug(f"KPI {kpi_id} does not exists")
                return None
            else:
                if flag :
                    value = 1
                else:
                    value = 0
                c.execute("UPDATE kpi SET monitor_flag = ? WHERE kpi_id is ?",(value,kpi_id))
                return True
        except sqlite3.Error as e:
            LOGGER.debug(f"KPI {kpi_id} cannot be checked from the ManagementDB: {e}")
 No newline at end of file
+7 −2
Original line number Diff line number Diff line
@@ -229,8 +229,13 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
                monitor_device_request.sampling_duration_s = request.monitoring_window_s
                monitor_device_request.sampling_interval_s = request.sampling_rate_s

                if not self.management_db.check_monitoring_flag(kpi_id):
                    device_client = DeviceClient()
                    device_client.MonitorDeviceKpi(monitor_device_request)
                    self.management_db.set_monitoring_flag(kpi_id,True)
                    self.management_db.check_monitoring_flag(kpi_id)
                else:
                    LOGGER.warning('MonitorKpi warning: KpiID({:s}) is currently being monitored'.format(str(kpi_id)))
            else:
                LOGGER.info('MonitorKpi error: KpiID({:s}): not found in database'.format(str(kpi_id)))
            return response
+13 −34
Original line number Diff line number Diff line
@@ -405,22 +405,8 @@ def test_get_stream_kpi(monitoring_client): # pylint: disable=redefined-outer-na
#     LOGGER.debug(response)
#     assert isinstance(response, Kpi)

def test_managementdb_tools_insert_kpi(management_db): # pylint: disable=redefined-outer-name
    LOGGER.warning('test_managementdb_tools_insert_kpi begin')
    _create_kpi_request = create_kpi_request('5')
    kpi_description = _create_kpi_request.kpi_description                # pylint: disable=maybe-no-member
    kpi_sample_type = _create_kpi_request.kpi_sample_type                # pylint: disable=maybe-no-member
    kpi_device_id   = _create_kpi_request.device_id.device_uuid.uuid     # pylint: disable=maybe-no-member
    kpi_endpoint_id = _create_kpi_request.endpoint_id.endpoint_uuid.uuid # pylint: disable=maybe-no-member
    kpi_service_id  = _create_kpi_request.service_id.service_uuid.uuid   # pylint: disable=maybe-no-member
    kpi_slice_id = _create_kpi_request.slice_id.slice_uuid.uuid
    kpi_connection_id = _create_kpi_request.connection_id.connection_uuid.uuid

    response = management_db.insert_KPI(kpi_description, kpi_sample_type, kpi_device_id, kpi_endpoint_id, kpi_service_id,kpi_slice_id,kpi_connection_id)
    assert isinstance(response, int)

def test_managementdb_tools_get_kpi(management_db): # pylint: disable=redefined-outer-name
    LOGGER.warning('test_managementdb_tools_get_kpi begin')
def test_managementdb_tools_kpis(management_db): # pylint: disable=redefined-outer-name
    LOGGER.warning('test_managementdb_tools_kpis begin')
    _create_kpi_request = create_kpi_request('5')
    kpi_description = _create_kpi_request.kpi_description                # pylint: disable=maybe-no-member
    kpi_sample_type = _create_kpi_request.kpi_sample_type                # pylint: disable=maybe-no-member
@@ -431,33 +417,26 @@ def test_managementdb_tools_get_kpi(management_db): # pylint: disable=redefined-
    kpi_connection_id  = _create_kpi_request.connection_id.connection_uuid.uuid

    _kpi_id = management_db.insert_KPI(kpi_description, kpi_sample_type, kpi_device_id, kpi_endpoint_id, kpi_service_id,kpi_slice_id,kpi_connection_id)
    assert isinstance(_kpi_id, int)

    response = management_db.get_KPI(_kpi_id)
    assert isinstance(response, tuple)

def test_managementdb_tools_get_kpis(management_db): # pylint: disable=redefined-outer-name
    LOGGER.warning('test_managementdb_tools_get_kpis begin')
    response = management_db.set_monitoring_flag(_kpi_id,True)
    assert response is True
    response = management_db.check_monitoring_flag(_kpi_id)
    assert response is True
    management_db.set_monitoring_flag(_kpi_id, False)
    response = management_db.check_monitoring_flag(_kpi_id)
    assert response is False

    response = management_db.get_KPIS()
    assert isinstance(response, list)

def test_managementdb_tools_delete_kpi(management_db): # pylint: disable=redefined-outer-name
    LOGGER.warning('test_managementdb_tools_get_kpi begin')

    _create_kpi_request = create_kpi_request('5')
    kpi_description = _create_kpi_request.kpi_description  # pylint: disable=maybe-no-member
    kpi_sample_type = _create_kpi_request.kpi_sample_type  # pylint: disable=maybe-no-member
    kpi_device_id = _create_kpi_request.device_id.device_uuid.uuid  # pylint: disable=maybe-no-member
    kpi_endpoint_id = _create_kpi_request.endpoint_id.endpoint_uuid.uuid  # pylint: disable=maybe-no-member
    kpi_service_id = _create_kpi_request.service_id.service_uuid.uuid  # pylint: disable=maybe-no-member
    kpi_slice_id = _create_kpi_request.slice_id.slice_uuid.uuid
    kpi_connection_id = _create_kpi_request.connection_id.connection_uuid.uuid

    _kpi_id = management_db.insert_KPI(kpi_description, kpi_sample_type, kpi_device_id, kpi_endpoint_id,
                                        kpi_service_id, kpi_slice_id, kpi_connection_id)

    response = management_db.delete_KPI(_kpi_id)

    assert response


def test_managementdb_tools_insert_alarm(management_db):
    LOGGER.warning('test_managementdb_tools_insert_alarm begin')