Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!66Changes in scenario2 workflow3 tests
...@@ -40,7 +40,8 @@ class ManagementDB(): ...@@ -40,7 +40,8 @@ class ManagementDB():
endpoint_id INTEGER, endpoint_id INTEGER,
service_id INTEGER, service_id INTEGER,
slice_id INTEGER, slice_id INTEGER,
connection_id INTEGER connection_id INTEGER,
monitor_flag INTEGER
); );
""") """)
LOGGER.debug("KPI table created in the ManagementDB") LOGGER.debug("KPI table created in the ManagementDB")
...@@ -247,4 +248,41 @@ class ManagementDB(): ...@@ -247,4 +248,41 @@ class ManagementDB():
LOGGER.debug(f"Alarms succesfully retrieved from the ManagementDB") LOGGER.debug(f"Alarms succesfully retrieved from the ManagementDB")
return data return data
except sqlite3.Error as e: except sqlite3.Error as e:
LOGGER.debug(f"Alarms cannot be retrieved from the ManagementDB: {e}") LOGGER.debug(f"Alarms cannot be retrieved from the ManagementDB: {e}")
\ No newline at end of file
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
...@@ -229,8 +229,13 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer): ...@@ -229,8 +229,13 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
monitor_device_request.sampling_duration_s = request.monitoring_window_s monitor_device_request.sampling_duration_s = request.monitoring_window_s
monitor_device_request.sampling_interval_s = request.sampling_rate_s monitor_device_request.sampling_interval_s = request.sampling_rate_s
device_client = DeviceClient() if not self.management_db.check_monitoring_flag(kpi_id):
device_client.MonitorDeviceKpi(monitor_device_request) 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: else:
LOGGER.info('MonitorKpi error: KpiID({:s}): not found in database'.format(str(kpi_id))) LOGGER.info('MonitorKpi error: KpiID({:s}): not found in database'.format(str(kpi_id)))
return response return response
......
...@@ -405,22 +405,8 @@ def test_get_stream_kpi(monitoring_client): # pylint: disable=redefined-outer-na ...@@ -405,22 +405,8 @@ def test_get_stream_kpi(monitoring_client): # pylint: disable=redefined-outer-na
# LOGGER.debug(response) # LOGGER.debug(response)
# assert isinstance(response, Kpi) # assert isinstance(response, Kpi)
def test_managementdb_tools_insert_kpi(management_db): # pylint: disable=redefined-outer-name def test_managementdb_tools_kpis(management_db): # pylint: disable=redefined-outer-name
LOGGER.warning('test_managementdb_tools_insert_kpi begin') 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
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')
_create_kpi_request = create_kpi_request('5') _create_kpi_request = create_kpi_request('5')
kpi_description = _create_kpi_request.kpi_description # pylint: disable=maybe-no-member 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_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- ...@@ -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_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) _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) response = management_db.get_KPI(_kpi_id)
assert isinstance(response, tuple) assert isinstance(response, tuple)
def test_managementdb_tools_get_kpis(management_db): # pylint: disable=redefined-outer-name response = management_db.set_monitoring_flag(_kpi_id,True)
LOGGER.warning('test_managementdb_tools_get_kpis begin') 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() response = management_db.get_KPIS()
assert isinstance(response, list) 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) response = management_db.delete_KPI(_kpi_id)
assert response assert response
def test_managementdb_tools_insert_alarm(management_db): def test_managementdb_tools_insert_alarm(management_db):
LOGGER.warning('test_managementdb_tools_insert_alarm begin') LOGGER.warning('test_managementdb_tools_insert_alarm begin')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment