-
Notifications
You must be signed in to change notification settings - Fork 2
/
dell_omsa_coolingdevice
92 lines (87 loc) · 3.67 KB
/
dell_omsa_coolingdevice
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
def string2int(str):
try:
res = int(str)
except ValueError:
res = 0
return res
def inventory_dell_omsa_coolingdevice(info):
inventory = []
for line in info:
inventory.append(( line[0], None ))
return inventory
def check_dell_omsa_coolingdevice(item, params, info):
coolingdevice_state = {
1 : 'Other',
2 : 'Unknown',
3 : 'OK',
4 : 'NonCritical',
5 : 'Critical',
6 : 'NonRecoverable',
}
coolingdevice_type = {
1: 'Other',
2: 'Unknown',
3: 'Fan',
4: 'Centrifugal Blower',
5: 'Fan on Integrated Circuit',
6: 'Cabinet Fan',
7: 'Power Supply Fan',
8: 'Heat Pipe',
9: 'Integrated Refrigeration Unit',
10: 'Active Cooling Device',
11: 'Passive Cooling Device',
}
coolingdevice_subtype = {
1: 'Other',
2: 'Unknown',
3: 'Fan that reads RPM',
4: 'Fan that reads Off or On',
5: 'Power Supply Fan that reads RPM',
6: 'Power Supply Fan that reads Off or On',
16: 'Cooling Device with discrete reading',
}
for line in info:
if line[0] != item:
continue
state = int(line[1])
try:
info_text = "%s (%s): State %s" % (line[5],
coolingdevice_type[int(line[2])],
coolingdevice_state[state],
)
except KeyError:
info_text = "%s %s %d" % (line[5], line[2], state)
subtype = int(line[3])
if subtype in [3, 5]:
perfdata = [ ( "RPM", string2int(line[4]), string2int(line[8]), string2int(line[9]) ) ]
info_text += " %dRPM" % string2int(line[4])
else:
perfdata = []
if state in [3]:
return (0, info_text, perfdata)
if state in [4]:
return (1, info_text, perfdata)
if state in [5, 6]:
return (2, info_text, perfdata)
return (3, info_text, perfdata)
return (3, "Coolingdevice %s not found" % item, [])
check_info["dell_omsa_coolingdevice"] = {
'check_function' : check_dell_omsa_coolingdevice,
'inventory_function' : inventory_dell_omsa_coolingdevice,
'service_description' : 'OMSA Cooling Device %s',
'has_perfdata' : True,
'snmp_info' : ('.1.3.6.1.4.1.674.10892.1.700.12.1', ['2.1', # coolingDeviceIndex
'5.1', # coolingDeviceStatus
'7.1', # coolingDeviceType
'16.1', # coolingDeviceSubType
'6.1', # coolingDeviceReading
'8.1', # coolingDeviceLocationName
'10.1', # coolingDeviceUpperCriticalThreshold
'11.1', # coolingDeviceUpperNonCriticalThreshold
'12.1', # coolingDeviceLowerNonCriticalThreshold
'13.1', # coolingDeviceLowerCriticalThreshold
] ),
'snmp_scan_function' : lambda oid: oid(".1.3.6.1.4.1.674.10892.1.700.12.1.2.1.1") != None,
}