Loading src/monitoring/service/ManagementDBTools.py +40 −2 Original line number Diff line number Diff line Loading @@ -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") Loading Loading @@ -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 src/monitoring/service/MonitoringServiceServicerImpl.py +7 −2 Original line number Diff line number Diff line Loading @@ -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 Loading src/monitoring/tests/test_unitary.py +13 −34 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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') Loading Loading
src/monitoring/service/ManagementDBTools.py +40 −2 Original line number Diff line number Diff line Loading @@ -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") Loading Loading @@ -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
src/monitoring/service/MonitoringServiceServicerImpl.py +7 −2 Original line number Diff line number Diff line Loading @@ -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 Loading
src/monitoring/tests/test_unitary.py +13 −34 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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') Loading