Module: check_mk
Branch: master
Commit: 80ae0d52c6d6be89f2bf41d7a44fe1110c0d25a4
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=80ae0d52c6d6be…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Wed Jan 9 09:39:43 2019 +0100
7001 FIX dell_om_fans: Fixed crash if only one device level (crit) is given
Change-Id: I3520cc824743461dd09a21a68c30acd86e10be98
---
.werks/7001 | 10 ++++++++++
checks/dell_om_fans | 36 ++++++++++++++++++++++++++----------
2 files changed, 36 insertions(+), 10 deletions(-)
diff --git a/.werks/7001 b/.werks/7001
new file mode 100644
index 0000000..78a5a3c
--- /dev/null
+++ b/.werks/7001
@@ -0,0 +1,10 @@
+Title: dell_om_fans: Fixed crash if only one device level (crit) is given
+Level: 1
+Component: checks
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1547023047
+Class: fix
+
+
diff --git a/checks/dell_om_fans b/checks/dell_om_fans
index 19c8d97..f0b36ee 100644
--- a/checks/dell_om_fans
+++ b/checks/dell_om_fans
@@ -30,6 +30,28 @@ def inventory_dell_om_fans(info):
yield (line[0], {})
+def _construct_levels(warn_upper, crit_upper, warn_lower, crit_lower):
+ # We've seen several possibilities:
+ # - 1, 2, 3, 4
+ # - "", "", 3, 4
+ # - "", "", "", 4
+ if warn_lower not in ["", None] and crit_lower not in ["",
None]:
+ lower = (int(warn_lower), int(crit_lower))
+ elif crit_lower not in ["", None]:
+ lower = (int(crit_lower), int(crit_lower))
+ else:
+ lower = (None, None)
+
+ if warn_upper not in ["", None] and crit_upper not in ["",
None]:
+ upper = (int(warn_upper), int(crit_upper))
+ elif crit_upper not in ["", None]:
+ upper = (int(crit_upper), int(crit_upper))
+ else:
+ upper = (None, None)
+
+ return lower, upper
+
+
def check_dell_om_fans(item, params, info):
translate_status = {
"1": (3, "OTHER"),
@@ -50,17 +72,11 @@ def check_dell_om_fans(item, params, info):
state, state_readable = translate_status[status]
yield state, "Status: %s, Name: %s" % \
(state_readable, name)
-
- value = int(value)
if not params:
- params = {
- 'lower': (int(warn_lower), int(crit_lower)),
- }
- if not warn_upper == "" and \
- crit_upper == "":
- params["upper"] = (int(warn_upper), int(crit_upper))
-
- yield check_fan(value, params)
+ lower, upper = _construct_levels(warn_upper, crit_upper, warn_lower,
crit_lower)
+ params['lower'] = lower
+ params['upper'] = upper
+ yield check_fan(int(value), params)
check_info["dell_om_fans"] = {