62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
#!/usr/bin/python
|
|
# -*- encoding: utf-8; py-indent-offset: 4 -*-
|
|
# SpearHead Systems
|
|
#
|
|
|
|
|
|
flex_blade_bays_module_state = {
|
|
0: 'standby',
|
|
1: 'on',
|
|
2: 'notPresent',
|
|
255: 'notApplicable',
|
|
}
|
|
|
|
def flex_blade_bays_make_item(line):
|
|
# "3.IO Module 5"
|
|
pd, name = line[0].split(".", 1)
|
|
if pd == '2':
|
|
power_domain = 1
|
|
else:
|
|
power_domain = 2
|
|
return "PD%d %s" % (power_domain, name)
|
|
|
|
def inventory_flex_blade_bays(info):
|
|
# find only modules that are present and switched on or standby
|
|
inventory = []
|
|
for line in info:
|
|
if line[1] in [ '0', '1' ]:
|
|
item = flex_blade_bays_make_item(line)
|
|
inventory.append((item, None))
|
|
return inventory
|
|
|
|
def check_flex_blade_bays(item, _no_params, info):
|
|
for line in info:
|
|
if item == flex_blade_bays_make_item(line):
|
|
state = saveint(line[1])
|
|
type = line[2].split('(')[0]
|
|
if state == 1:
|
|
return (0, "State %s (Type: %s, ID: %s)" %
|
|
(flex_blade_bays_module_state.get(state, 'Unhandled'), type, line[3]))
|
|
elif state == 2:
|
|
return (1, "Not present")
|
|
elif state == 3:
|
|
return (1, "Device is switched off")
|
|
elif state == 0:
|
|
return (1, "Device is in standby")
|
|
else:
|
|
return (2, "invalid state %d" % state)
|
|
return (3, "no data for '%s' in SNMP info" % item)
|
|
|
|
check_info["flex_blade_bays"] = {
|
|
'check_function': check_flex_blade_bays,
|
|
'inventory_function': inventory_flex_blade_bays,
|
|
'service_description': 'IBM Flex Bay %s',
|
|
'snmp_info': (
|
|
".1.3.6.1.4.1.2.3.51.2.2.10", [
|
|
"2", # powerDomain1
|
|
"3", # powerDomain2
|
|
], [ "1.1.5", "1.1.6", "1.1.2", "1.1.1" ] ), # BLADE-MIB
|
|
'snmp_scan_function': \
|
|
lambda oid: re.match('IBM Flex Chassis Management Module', oid(".1.3.6.1.2.1.1.1.0")) != None,
|
|
}
|