Skip to content
Snippets Groups Projects
Commit 3c6a9d5d authored by famelis's avatar famelis
Browse files

fix: parse "NaN" for Min/Max values and appropriate checks

parent 14a226be
No related branches found
No related tags found
2 merge requests!142Release TeraFlowSDN 2.1,!82Monitoring: fixes regarding the kpi value ranges
...@@ -264,63 +264,57 @@ class MetricsDB(): ...@@ -264,63 +264,57 @@ class MetricsDB():
for kpi in kpi_list: for kpi in kpi_list:
alarm = False alarm = False
kpi_value = kpi[2] kpi_value = kpi[2]
kpiMinIsNone = ((kpiMinValue is None) or math.isnan(kpiMinValue))
kpiMaxIsNone = ((kpiMaxValue is None) or math.isnan(kpiMaxValue))
if (kpiMinValue == kpi_value and kpiMaxValue == kpi_value and inRange): if (kpiMinValue == kpi_value and kpiMaxValue == kpi_value and inRange):
alarm = True alarm = True
elif ( elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and includeMaxValue):
inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and includeMaxValue):
if (kpi_value >= kpiMinValue and kpi_value <= kpiMaxValue): if (kpi_value >= kpiMinValue and kpi_value <= kpiMaxValue):
alarm = True alarm = True
elif ( elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and not includeMaxValue):
inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and not includeMaxValue):
if (kpi_value >= kpiMinValue and kpi_value < kpiMaxValue): if (kpi_value >= kpiMinValue and kpi_value < kpiMaxValue):
alarm = True alarm = True
elif ( elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and includeMaxValue):
inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and includeMaxValue):
if (kpi_value > kpiMinValue and kpi_value <= kpiMaxValue): if (kpi_value > kpiMinValue and kpi_value <= kpiMaxValue):
alarm = True alarm = True
elif ( elif (inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and not includeMaxValue):
inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and not includeMaxValue):
if (kpi_value > kpiMinValue and kpi_value < kpiMaxValue): if (kpi_value > kpiMinValue and kpi_value < kpiMaxValue):
alarm = True alarm = True
elif ( elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and includeMaxValue):
not inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and includeMaxValue):
if (kpi_value <= kpiMinValue or kpi_value >= kpiMaxValue): if (kpi_value <= kpiMinValue or kpi_value >= kpiMaxValue):
alarm = True alarm = True
elif ( elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and includeMinValue and not includeMaxValue):
not inRange and kpiMinValue is not None and kpiMaxValue is not None and includeMinValue and not includeMaxValue):
if (kpi_value <= kpiMinValue or kpi_value > kpiMaxValue): if (kpi_value <= kpiMinValue or kpi_value > kpiMaxValue):
alarm = True alarm = True
elif ( elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and includeMaxValue):
not inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and includeMaxValue):
if (kpi_value < kpiMinValue or kpi_value >= kpiMaxValue): if (kpi_value < kpiMinValue or kpi_value >= kpiMaxValue):
alarm = True alarm = True
elif ( elif (not inRange and not kpiMinIsNone and not kpiMaxIsNone and not includeMinValue and not includeMaxValue):
not inRange and kpiMinValue is not None and kpiMaxValue is not None and not includeMinValue and not includeMaxValue):
if (kpi_value < kpiMinValue or kpi_value > kpiMaxValue): if (kpi_value < kpiMinValue or kpi_value > kpiMaxValue):
alarm = True alarm = True
elif (inRange and kpiMinValue is not None and kpiMaxValue is None and includeMinValue): elif (inRange and not kpiMinIsNone and kpiMaxIsNone and includeMinValue):
if (kpi_value >= kpiMinValue): if (kpi_value >= kpiMinValue):
alarm = True alarm = True
elif (inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue): elif (inRange and not kpiMinIsNone and kpiMaxIsNone and not includeMinValue):
if (kpi_value > kpiMinValue): if (kpi_value > kpiMinValue):
alarm = True alarm = True
elif (not inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue): elif (not inRange and not kpiMinIsNone and kpiMaxIsNone and includeMinValue):
if (kpi_value <= kpiMinValue): if (kpi_value <= kpiMinValue):
alarm = True alarm = True
elif (not inRange and kpiMinValue is not None and kpiMaxValue is None and not includeMinValue): elif (not inRange and not kpiMinIsNone and kpiMaxIsNone and not includeMinValue):
if (kpi_value <= kpiMinValue): if (kpi_value < kpiMinValue):
alarm = True alarm = True
elif (inRange and kpiMinValue is None and kpiMaxValue is not None and includeMaxValue): elif (inRange and kpiMinIsNone and not kpiMaxIsNone and includeMaxValue):
if (kpi_value <= kpiMaxValue): if (kpi_value <= kpiMaxValue):
alarm = True alarm = True
elif (inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue): elif (inRange and kpiMinIsNone and not kpiMaxIsNone and not includeMaxValue):
if (kpi_value < kpiMaxValue): if (kpi_value < kpiMaxValue):
alarm = True alarm = True
elif (not inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue): elif (not inRange and kpiMinIsNone and not kpiMaxIsNone and includeMaxValue):
if (kpi_value >= kpiMaxValue): if (kpi_value >= kpiMaxValue):
alarm = True alarm = True
elif (not inRange and kpiMinValue is None and kpiMaxValue is not None and not includeMaxValue): elif (not inRange and kpiMinIsNone and not kpiMaxIsNone and not includeMaxValue):
if (kpi_value >= kpiMaxValue): if (kpi_value > kpiMaxValue):
alarm = True alarm = True
if alarm: if alarm:
valid_kpi_list.append(kpi) valid_kpi_list.append(kpi)
......
...@@ -407,8 +407,8 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer): ...@@ -407,8 +407,8 @@ class MonitoringServiceServicerImpl(MonitoringServiceServicer):
alarm_description = request.alarm_description alarm_description = request.alarm_description
alarm_name = request.name alarm_name = request.name
kpi_id = request.kpi_id.kpi_id.uuid kpi_id = request.kpi_id.kpi_id.uuid
kpi_min_value = request.kpi_value_range.kpiMinValue.floatVal kpi_min_value = float(request.kpi_value_range.kpiMinValue.floatVal)
kpi_max_value = request.kpi_value_range.kpiMaxValue.floatVal kpi_max_value = float(request.kpi_value_range.kpiMaxValue.floatVal)
in_range = request.kpi_value_range.inRange in_range = request.kpi_value_range.inRange
include_min_value = request.kpi_value_range.includeMinValue include_min_value = request.kpi_value_range.includeMinValue
include_max_value = request.kpi_value_range.includeMaxValue include_max_value = request.kpi_value_range.includeMaxValue
......
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