Module: check_mk
Branch: master
Commit: 143cbaf1ec0afa87b4a531a207ba77ce2e8a67d6
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=143cbaf1ec0afa…
Author: Simon Betz <si(a)mathias-kettner.de>
Date: Tue Sep 19 16:13:09 2017 +0200
5292 FIX ucs_bladecenter_if: Fixed wrong indexing of single interfaces
Change-Id: Ida8143ec79e3f361bf8c00c62ab53c841f2e35a2
---
.werks/5292 | 14 ++++++++++++++
checks/ucs_bladecenter_if | 23 ++++++++---------------
2 files changed, 22 insertions(+), 15 deletions(-)
diff --git a/.werks/5292 b/.werks/5292
new file mode 100644
index 0000000..c58d95d
--- /dev/null
+++ b/.werks/5292
@@ -0,0 +1,14 @@
+Title: ucs_bladecenter_if: Fixed wrong indexing of single detected interfaces
+Level: 1
+Component: checks
+Compatible: incomp
+Edition: cre
+Version: 1.5.0i1
+Date: 1505830369
+Class: fix
+
+Indexing of single interfaces was wrong which had only an impact
+on single discovered interfaces where the index was used as item
+in service description.
+Interface groups and single interfaces with interface alias or
+description are not affected.
diff --git a/checks/ucs_bladecenter_if b/checks/ucs_bladecenter_if
index d98ded7..3aed73c 100644
--- a/checks/ucs_bladecenter_if
+++ b/checks/ucs_bladecenter_if
@@ -252,7 +252,6 @@ def parse_ucs_bladecenter_if(info):
}
}
-
# Ethernet
converted = []
last_index = 0
@@ -261,39 +260,34 @@ def parse_ucs_bladecenter_if(info):
("ethernet", "Ethernet-Group", eth_interfaces,
"Slot %s Switch %s Port %s"),
("interconnect", "Interconnect-Group", icnt_interfaces,
"Slot %s IC-Switch %s Port %s"),
]:
+ index = 0
for index, (name, values) in enumerate(interfaces.items()):
item = item_template % ( values.get("SlotId"),
values.get("SwitchId"),
values.get("PortId") )
-
entry = ['0'] * 20
converted.append(entry)
# Interfaces in portchannels are automatically grouped by within if.include
# Grouped interfaces are identified when the type of the ifIndex field is a
tuple
+ # Speed and OperState
if "portchannel" in values:
entry[0] = (group_prefix + " " +
values["portchannel"].get("Name",
values["portchannel"].get("PortId", "")),\
- str(last_index + index))
- else:
- entry[0] = str(last_index + index)
- entry[1] = item
-
- # Speed and OperState
- if values.get("portchannel"):
+ str(last_index + index))
speed = values["portchannel"].get("AdminSpeed") or
values["portchannel"].get("OperSpeed")
# It looks like that the AdminSpeed of a portchannel is the speed of one
member
# speed = str(int(float(speed.replace("gbps",
"000000000")) / values["portchannel"]["members"]))
- speed = speed.replace("gbps", "000000000")
+ entry[3] = speed.replace("gbps", "000000000")
operStatus = values["portchannel"].get("AdminState",
"disabled") == "enabled" and \
values["portchannel"].get("OperState",
"down") == "up"
else:
- speed = values.get("AdminSpeed",
"").replace("gbps", "000000000")
+ entry[0] = str(last_index + index)
+ entry[3] = values.get("AdminSpeed",
"").replace("gbps", "000000000")
operStatus = values.get("AdminState", "disabled") ==
"enabled" and \
values.get("OperState", "down") ==
"up"
- entry[3] = speed
+ entry[1] = item
entry[4] = operStatus and "1" or "2"
-
entry[18] = item # ifAlias
entry[19] = '' # MAC address not known here
for table_index , ctr_keys in tableindex.get(what).items():
@@ -309,8 +303,7 @@ def parse_ucs_bladecenter_if(info):
else:
ctr_value += int(values.get(ctr_key, "0"))
entry[table_index] = str(ctr_value)
- else:
- index = 0
+
last_index += index + 1
return converted