mirror of
https://github.com/xcat2/confluent.git
synced 2026-06-03 01:38:30 +00:00
bfc27595dc
If someone asks for it independently, we can break it out again. But for now, assume it's only for confluent.
1887 lines
65 KiB
Python
1887 lines
65 KiB
Python
# Copyright 2013 IBM Corporation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
import aiohmi.constants as const
|
|
|
|
IPMI_BMC_ADDRESS = 0x20
|
|
IPMI_SEND_MESSAGE_CMD = 0x34
|
|
|
|
|
|
payload_types = {
|
|
'ipmi': 0x0,
|
|
'sol': 0x1,
|
|
'rmcpplusopenreq': 0x10,
|
|
'rmcpplusopenresponse': 0x11,
|
|
'rakp1': 0x12,
|
|
'rakp2': 0x13,
|
|
'rakp3': 0x14,
|
|
'rakp4': 0x15,
|
|
}
|
|
|
|
# sensor type codes, table 42-3
|
|
sensor_type_codes = {
|
|
1: 'Temperature',
|
|
2: 'Voltage',
|
|
3: 'Current',
|
|
4: 'Fan',
|
|
5: 'Physical Security',
|
|
6: 'Platform Security',
|
|
7: 'Processor',
|
|
8: 'Power Supply',
|
|
9: 'Power Unit',
|
|
0xa: 'Cooling Device',
|
|
0xb: 'Other',
|
|
0xc: 'Memory',
|
|
0xC6: 'PSU Redundancy',
|
|
0xd: 'Drive Bay',
|
|
0xe: 'POST Memory Resize',
|
|
0xf: 'System Firmware',
|
|
0x10: 'Event Log Disabled',
|
|
0x11: 'Watchdog',
|
|
0x12: 'System Event',
|
|
0x13: 'Critical interrupt',
|
|
0x14: 'Button/switch',
|
|
0x15: 'Module/Board',
|
|
0x16: 'Microcontroller/Coprocessor',
|
|
0x17: 'Add-in Card',
|
|
0x18: 'Chassis',
|
|
0x19: 'Chip Set',
|
|
0x1a: 'Other FRU',
|
|
0x1b: 'Cable/Interconnect',
|
|
0x1c: 'Terminator',
|
|
0x1d: 'System Boot',
|
|
0x1e: 'Boot Error',
|
|
0x1f: 'OS Boot',
|
|
0x20: 'OS Stop',
|
|
0x21: 'Slot/Connector',
|
|
0x22: 'System ACPI Power State',
|
|
0x23: 'Watchdog',
|
|
0x24: 'Platform alert',
|
|
0x25: 'Entity Presence',
|
|
0x26: 'Monitor ASIC/IC',
|
|
0x27: 'LAN',
|
|
0x28: 'Management Subsystem Health',
|
|
0x29: 'Battery',
|
|
0x2a: 'Session',
|
|
0x2b: 'Version Change',
|
|
0x2c: 'FRU State',
|
|
}
|
|
|
|
# This is from table 42-2
|
|
# digital discrete poses a challenge from a health perspective. So far all
|
|
# observed ones are no more or less 'healthy' by being asserted or not asserted
|
|
# for example asserting that an add-on is installed
|
|
|
|
generic_type_offsets = {
|
|
1: { # threshold based
|
|
# Some explanation is offered in the specification around 'get sensor
|
|
# event status' command. Assertions should indicate the new state
|
|
# and deassertion should indicate leaving the state. The 'going high'
|
|
# and 'going low' do not denote leaving a state. For example, going
|
|
# from Lower Critical to Lower Non-Critical would be 'going high'
|
|
# Will just report the new state rather than the direction from
|
|
# which things came from, since in a vacuum it is not useful data
|
|
# and in the context of event log, it should be better discerned
|
|
# from the pattern of prior events
|
|
0: {
|
|
'desc': 'Lower non-critical', # - going low',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Lower Non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Lower non-critical', # - going high',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Lower non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Lower Critical', # - going low',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Lower critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Lower Critical', # - going high',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Lower critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Lower non-recoverable', # - going low
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Lower non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Lower non-recoverable', # - going high
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Lower non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Upper non-critical', # - going low
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Upper non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Upper non-critical', # - going high
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Upper non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Upper critical', # - going low
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Upper critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
9: {
|
|
'desc': 'Upper critical', # - going high
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Upper critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'Upper non-recoverable', # - going low
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Upper non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xb: {
|
|
'desc': 'Upper non-recoverable', # - going high
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Upper non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
2: {
|
|
0: {
|
|
'desc': 'Idle',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Idle deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Active',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Active deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Busy',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Busy deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
3: {
|
|
0: {
|
|
'desc': 'Deasserted',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Asserted', # this would be very peculiar
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Asserted',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
4: {
|
|
0: {
|
|
'desc': 'Predictive failure deasserted',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Predictive failure',
|
|
'deassertion_severity': const.Health.Warning,
|
|
},
|
|
1: {
|
|
'desc': 'Predictive failure',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Predictive failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
5: {
|
|
0: {
|
|
'desc': 'Limit not exceeded',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Limit exceeded',
|
|
'deassertion_severity': const.Health.Warning,
|
|
},
|
|
1: {
|
|
'desc': 'Limit exceeded',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Limit no longer exceeded',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
6: {
|
|
0: {
|
|
'desc': 'Performance met',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Performance lags',
|
|
'deassertion_severity': const.Health.Warning,
|
|
},
|
|
1: {
|
|
'desc': 'Performance lags',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Performance no longer lags',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
7: {
|
|
0: {
|
|
'desc': 'Ok',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Not ok',
|
|
'deassertion_severity': const.Health.Warning,
|
|
},
|
|
1: {
|
|
'desc': 'Non-Critical',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Critical',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Non-recoverable',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Non-critical',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Non-critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Critical',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Critical deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Non-recoverable',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Non-recoverable deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Monitor',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Monitor deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Informational',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Informational deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
8: {
|
|
0: {
|
|
'desc': 'Absent',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Present',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
9: {
|
|
0: {
|
|
'desc': 'Disabled',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Enabled',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Disabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xa: {
|
|
0: {
|
|
'desc': 'Running',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Running deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'In test',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'In test deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Power off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power off deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Online',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Online deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Offline',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Offline deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Off duty',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Off duty deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Degraded',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Degraded deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Power save',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power save deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Install error',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Install error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xb: {
|
|
0: {
|
|
'desc': 'Redundant',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Redundant lost',
|
|
'deassertion_severity': const.Health.Critical,
|
|
},
|
|
1: {
|
|
'desc': 'Not redundant', # redundancy lost
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Redundancy degraded',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Not redundant', # down to non redundant
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Not Redundant', # it has come back, but not redundant
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Degraded', # abnormal operation
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Present',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Redundancy degraded',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Redundancy degraded',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Redundancy restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xc: {
|
|
0: {
|
|
'desc': 'ACPI D0',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'ACPI D0 deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'ACPI D1',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'ACPI D1 deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'ACPI D2',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'ACPI D2 deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'ACPI D3',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'ACPI D3 deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
}
|
|
|
|
sensor_type_offsets = {
|
|
# For the security sensors, we assume if armed,
|
|
# the operator considers these to be critical situations
|
|
# Even though many of these would never reasonably be 'deasserted', provide
|
|
# some language that hypothetically would make sense if it were ever
|
|
# observed
|
|
5: {
|
|
0: {
|
|
'desc': 'Chassis intrusion',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Chassis intrusion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Drive area intrusion',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Drive area intrusion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'I/O card area intrusion',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'I/O card area intrusion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Processor area intrusion',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Processor area intrusion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'LAN connection lost',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'LAN connection restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Unauthorized dock',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Unauthorized dock deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Fan area intrusion',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Fan area intrusion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
6: {
|
|
0: {
|
|
'desc': 'Front Panel Lockout Violation attempt',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Front Panel Lockout deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Pre-boot password violation - user',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_severity': const.Health.Ok,
|
|
'deassertion_desc': 'Boot Password violation deasserted',
|
|
},
|
|
2: {
|
|
'desc': 'Pre-boot password violation - setup',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Setup password violation deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Pre-boot password violation - netboot',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc':
|
|
'Pre-boot password violation - netboot deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Pre-boot password violation',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Pre-boot password violation deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Out-of-band access password violation',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc':
|
|
'Out-of-band access password violation deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
7: {
|
|
0: {
|
|
'desc': 'Internal error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Internal error recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Thermal trip',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Thermal trip recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Self test failure',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Self test recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Hang in POST',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Hang in POST recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
|
|
},
|
|
4: {
|
|
'desc': 'Startup failure',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Startup recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Configuration error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Configuration error recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Uncorrectable cpu complex error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Uncorrectable cpu complex error recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Disabled',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
9: {
|
|
'desc': 'Terminator presence detected',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Terminator absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'Throttled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'No longer throttled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xb: {
|
|
'desc': 'Uncorrectable machine check exception',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Uncorrectable machine check recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xc: {
|
|
'desc': 'Correctable machine check exception',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Correctable machine check recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
8: { # power supply
|
|
0: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Failure',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
|
|
},
|
|
2: {
|
|
'desc': 'Predictive failure',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Predictive failure recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Power input lost',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Power input restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Power input out of range or lost',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Power input present and in range',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Power input out of range',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Power input in range',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
# clarified by SEL/PET event data 3
|
|
'desc': 'Configuration error',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Configuration error recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Standby',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Active',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
9: { # power unit
|
|
0: {
|
|
'desc': 'Power off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power on',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Power cycle',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power cycle deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': '240VA power down',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': '240VA power down deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Interlock power down',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Interlock power down deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Power input lost',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Power input restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Soft power control failure',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Soft power control failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Power unit failure',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Power unit failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Power unit predictive failure',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Power unit predictive failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xc: { # memory
|
|
0: {
|
|
'desc': 'Correctable error',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Correctable error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Uncorrectable error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Uncorrectable error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Parity error',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Parity error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Scrub failed',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Scrub failed deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Device disabled',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Device enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Correctable memory error logging limit reached',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Correctable memory error logging restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Configuration error',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Configuration error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Spare', # event data 3 available
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Spare deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
9: {
|
|
'desc': 'Throttled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'No longer throttled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'Critical over temperature',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Critical over temperature deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xd: { # drive bay
|
|
0: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Drive fault',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Drive fault deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Predictive drive failure',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Predictive drive failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Hot spare drive',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hot spare drive deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Drive consistency check in progress',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Drive consistency check complete',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Drive in critical array',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Drive in critical array deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Drive in failed array',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Drive in failed array deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Rebuild in progress',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Rebuild complete',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Rebuild aborted',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Rebuild abort deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0xf: {
|
|
0: {
|
|
'desc': 'Boot error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Boot error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Hang',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Hang deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Progress',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Progress deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x10: { # event log disabled
|
|
0: {
|
|
'desc': 'Correctable memory error logging disabled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Correctable memory error logging enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Specific event logging disabled',
|
|
'deassertion_desc': 'Event logging enabled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Log clear',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Log clear complete',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Logging disabled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Logging enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Event log full',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Event log no longer full',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Event log nearly full',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Event log no longer nearly full',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Correctable machine check logging disabled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Correctable machine check logging enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x12: { # system event
|
|
0: {
|
|
'desc': 'System reconfigured',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'System reconfiguration deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'OEM boot event',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OEM boot event deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Undetermined hardware failure',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Undetermined hardware failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Aux log entry',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Aux log entry deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Event response',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Event response deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Clock time change',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Clock time change deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x13: { # critical interrupt
|
|
0: {
|
|
'desc': 'Front panel diagnostic interrupt',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Front panel diagnostic interrupt deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Bus timeout',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Bus timeout recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'I/O NMI',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'I/O NMI deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Software NMI',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Software NMI deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'PCI PERR',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'PCI PERR deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'PCI SERR',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'PCI SERR deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'EISA fail safe timeout',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'EISA fail safe timeout deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Bus correctable error',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Bus correctable error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'Bus uncorrectable error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Bus uncorrectable error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
9: {
|
|
'desc': 'Fatal NMI',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Fatal NMI deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'Bus fatal error',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Bus fatal error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xb: {
|
|
'desc': 'Bus degraded',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Bus degraded deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x14: { # button/switch
|
|
0: {
|
|
'desc': 'Power button pressed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power button released',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Sleep button pressed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Sleep button released',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Reset button pressed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Reset button released',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'FRU latch open',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'FRU latch closed',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Service requested',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Service no longer requested',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x19: { # chip set
|
|
0: {
|
|
'desc': 'Soft power control failure',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Soft power control failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Thermal trip',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Thermal trip deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x1b: { # Cable/Interconnect
|
|
0: {
|
|
'desc': 'Connected',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Disconnected',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Connection error',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Connection error deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x1d: { # system boot initiated
|
|
0: {
|
|
'desc': 'Power up',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Power up deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Hard reset',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hard reset deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Warm reset',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Warm reset deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'PXE boot',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'PXE boot deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Automatic boot to diagnostic',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Automatic boot to diagnostic deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'OS hard reset',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS hard reset deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'OS warm reset',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS warm reset deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'System restart',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'System restart deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x1e: { # boot error
|
|
0: {
|
|
'desc': 'No bootable media',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'No bootable media deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Unbootable removable media',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Unbootable removable media deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'PXE failure',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'PXE failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
|
|
},
|
|
3: {
|
|
'desc': 'Invalid boot sector',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Invalid boot sector deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Interactive boot timeout',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'Interactive boot timeout deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x1f: { # OS boot
|
|
0: {
|
|
'desc': 'A: boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Unbootable removable media deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Hard drive boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hard drive boot completed not failed',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Network boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Network boot completion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Diagnostic boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Diagnostic boot deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'CD boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'CD boot completion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'ROM boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'ROM boot completion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Boot completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Boot completion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'OS deployment started',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS deployment deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
8: {
|
|
'desc': 'OS deployment completed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS deployment completion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
9: {
|
|
'desc': 'OS deployment aborted',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS deployment abortion deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'OS deployment failed',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'OS deployment failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x20: { # OS Stop
|
|
0: {
|
|
'desc': 'OS boot stop',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'OS boot stop deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'OS crash',
|
|
'severity': const.Health.Failed,
|
|
'deassertion_desc': 'OS crash deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'OS cleanly halted',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS clean halt deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'OS cleanly shutdown',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'OS clean shutdown deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Event driven soft shutdown',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Event driven soft shutdown deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Event driven soft shutdown failed',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc':
|
|
'Event driven soft shutdown failure deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x21: { # slot/connector
|
|
0x0: {
|
|
'desc': 'Fault',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Fault recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x1: {
|
|
'desc': 'Identify',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Identify deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x2: {
|
|
'desc': 'Slot/connector installed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot/connector removed',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x3: {
|
|
'desc': 'Slot/connector ready for install',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot/connector no longer ready for install',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x4: {
|
|
'desc': 'Slot/connector ready for removal',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot/connector no longer ready for removal',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x5: {
|
|
'desc': 'Slot powered down',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot powered up',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x6: {
|
|
'desc': 'Slot/connector device removal requested',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc':
|
|
'Slot/connector device removal no longer requested',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x7: {
|
|
'desc': 'Slot/connector interlock',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot/connector interlock deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x8: {
|
|
'desc': 'Slot/connector disabled',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Slot/connector enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x9: {
|
|
'desc': 'Slot holds spare device',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Slot no longer holds spare device',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x22: { # system acpi power state
|
|
0x0: {
|
|
'desc': 'Online',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Online deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x1: {
|
|
'desc': 'S1 sleep',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'S1 sleep deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x2: {
|
|
'desc': 'S2 sleep',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'S2 sleep deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x3: {
|
|
'desc': 'Sleep',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Sleep deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x4: {
|
|
'desc': 'Hibernated',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hibernation deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x5: {
|
|
'desc': 'Off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Off deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x6: {
|
|
'desc': 'Hibernated or off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hibernate or off deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x7: {
|
|
'desc': 'Mechanically off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Mechanically on',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x8: {
|
|
'desc': 'Sleep',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Sleep deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x9: {
|
|
'desc': 'G1 sleep',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'G1 sleep deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xa: {
|
|
'desc': 'Shutdown',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Shutdown deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xb: {
|
|
'desc': 'On',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Off',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xc: {
|
|
'desc': 'Off',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'On',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0xe: {
|
|
'desc': 'Unknown',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Unknown deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x23: { # watchdog
|
|
0x0: {
|
|
'desc': 'Watchdog expired',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Watchdog expiry deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x1: {
|
|
'desc': 'Watchdog hard reset',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Watchdog hard reset deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x2: {
|
|
'desc': 'Watchdog power down',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Watchdog power down deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x3: {
|
|
'desc': 'Watchdog power cycle',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Watchdog power cycle deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x8: {
|
|
'desc': 'Watchdog interrupt',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Watchdog interrupt deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x24: { # platform event
|
|
0x0: {
|
|
'desc': 'Platform generated page',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Platform generated page deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x1: {
|
|
'desc': 'Platform generated network alert',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Platform generated network alert deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x2: {
|
|
'desc': 'Platform generated PET alert',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Platform generated PET alert deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
0x3: {
|
|
'desc': 'Platform generated OEM SNMP Alert',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Platform generated OEM SNMP Alert deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x25: { # entity presence
|
|
0: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Absent',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Present',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Disabled',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x27: { # LAN heartbeat
|
|
0: {
|
|
'desc': 'Heartbeat lost',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Heartbeat recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Heartbeat',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Heartbeat lost',
|
|
'deassertion_severity': const.Health.Warning,
|
|
},
|
|
},
|
|
0x28: { # management subsystem health
|
|
0: {
|
|
'desc': 'Sensor access degraded or unavailable',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Sensor access restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Controller access degraded or unavailable',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Controller access restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Controller Offline',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Controller online',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Controller Offline',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Controller online',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Sensor Error',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Sensor recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'FRU Failure',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'FRU recovered',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x29: { # battery
|
|
0: {
|
|
'desc': 'Low',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Battery no longer low',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Failed',
|
|
# Critical here because typical battery failure
|
|
# does not indicate a 'failed' runtime
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Recovered',
|
|
'deassertion_severity': const.Health.Ok
|
|
},
|
|
2: {
|
|
'desc': 'Present',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Absent',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x2a: { # session audit
|
|
0: {
|
|
'desc': 'Activated',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Deactivated',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Deactivated',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Activated',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Invalid username/password',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Valid username/password',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Account disabled due to failure count',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Account re-enabled',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x2b: { # Version Change
|
|
0: {
|
|
'desc': 'Hardware change detected',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Hardware change deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Firmware or software change detected',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Firmware or software change deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Hardware incompatibility detected',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Hardware incompatibility deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Firmware/software incompatibility detected',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc': 'Firmware/software incompatibility deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Invalid/Unsupported hardware revision',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc':
|
|
'Invalid/unsupported hardware revision deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Invalid/unsupported firmware/software version',
|
|
'severity': const.Health.Critical,
|
|
'deassertion_desc':
|
|
'Invalid/unsupported firmware/software version',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Successful hardware change',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Successful hardware change deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Successful software/firmware change',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc':
|
|
'Successful software/firmware change deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
0x2c: { # FRU state
|
|
0: {
|
|
'desc': 'Not Installed',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Installed',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
1: {
|
|
'desc': 'Inactive',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Inactive deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
2: {
|
|
'desc': 'Activation requested',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Activation request deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
3: {
|
|
'desc': 'Activation in progress',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Activation no longer in progress',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
4: {
|
|
'desc': 'Active',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Inactive',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
5: {
|
|
'desc': 'Deactivation requested',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Deactivation request deasserted',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
6: {
|
|
'desc': 'Deactivation in progress',
|
|
'severity': const.Health.Ok,
|
|
'deassertion_desc': 'Deactivation no longer in progress',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
7: {
|
|
'desc': 'Communication lost',
|
|
'severity': const.Health.Warning,
|
|
'deassertion_desc': 'Communication restored',
|
|
'deassertion_severity': const.Health.Ok,
|
|
},
|
|
},
|
|
}
|
|
|
|
# entity ids from table 43-13 entity id codes
|
|
entity_ids = {
|
|
0x0: 'Unspecified',
|
|
0x1: 'Other',
|
|
0x2: 'Unknown',
|
|
0x3: 'Processor',
|
|
0x4: 'Disk or disk bay',
|
|
0x5: 'Peripheral bay',
|
|
0x6: 'System management module',
|
|
0x7: 'System board',
|
|
0x8: 'Memory module',
|
|
0x9: 'Processor module',
|
|
0xa: 'Power supply',
|
|
0xb: 'Add-in card',
|
|
0xc: 'Front panel board',
|
|
0xd: 'Back panel board',
|
|
0xe: 'Power system board',
|
|
0xf: 'Drive backplane',
|
|
0x10: 'System internal expansion board',
|
|
0x11: 'Other system board',
|
|
0x12: 'Processor board',
|
|
0x13: 'Power unit / power domain',
|
|
0x14: 'Power module / DC-to-DC converter',
|
|
0x15: 'Power management /power distribution board',
|
|
0x16: 'Chassis back panel board',
|
|
0x17: 'System chassis',
|
|
0x18: 'Sub-chassis',
|
|
0x19: 'Other chassis board',
|
|
0x1a: 'Disk drive bay',
|
|
0x1b: 'Peripheral bay',
|
|
0x1c: 'Device bay',
|
|
0x1d: 'Fan/cooling device',
|
|
0x1e: 'Cooling unit / cooling domain',
|
|
0x1f: 'Cable / interconnect',
|
|
0x20: 'Memory device',
|
|
0x21: 'System management software',
|
|
0x22: 'System firmware',
|
|
0x23: 'Operating system',
|
|
0x24: 'System bus',
|
|
0x25: 'Group',
|
|
0x26: 'Remote management communication device',
|
|
0x27: 'External environment',
|
|
0x28: 'Battery',
|
|
0x29: 'Processing blade',
|
|
0x2a: 'Connectivity switch',
|
|
0x2b: 'Processor/memory module',
|
|
0x2c: 'I/O module',
|
|
0x2d: 'Processor I/O module',
|
|
0x2e: 'Management controller firmware',
|
|
0x2f: 'IPMI channel',
|
|
0x30: 'PCI Bus',
|
|
0x31: 'PCIe Bus',
|
|
0x32: 'SCSI Bus',
|
|
0x33: 'SATA/SAS Bus',
|
|
0x34: 'Processor / front-side bus',
|
|
0x35: 'Real time clock',
|
|
0x37: 'Air inlet',
|
|
0x40: 'Air inlet',
|
|
0x41: 'Processor',
|
|
0x42: 'System board',
|
|
}
|
|
|
|
|
|
rmcp_codes = {
|
|
1: ("Insufficient resources to create new session (wait for existing "
|
|
"sessions to timeout)"),
|
|
2: "Invalid Session ID",
|
|
3: "Invalid payload type",
|
|
4: "Invalid authentication algorithm",
|
|
5: "Invalid integrity algorithm",
|
|
6: "No matching integrity payload",
|
|
7: "No matching integrity payload",
|
|
8: "Inactive Session ID",
|
|
9: "Invalid role",
|
|
0xa: "Unauthorized role or privilege level requested",
|
|
0xb: "Insufficient resources to create a session at the requested role",
|
|
0xc: "Invalid username length",
|
|
0xd: "Unauthorized name",
|
|
0xe: "Unauthorized GUID",
|
|
0xf: "Invalid integrity check value",
|
|
0x10: "Invalid confidentiality algorithm",
|
|
0x11: "No Cipher suite match with proposed security algorithms",
|
|
0x12: "Illegal or unrecognized parameter",
|
|
}
|
|
|
|
netfn_codes = {
|
|
"chassis": 0x0,
|
|
"bridge": 0x2,
|
|
"sensorevent": 0x4,
|
|
"application": 0x6,
|
|
"firmware": 0x8,
|
|
"storage": 0xa,
|
|
"transport": 0xc,
|
|
}
|
|
|
|
command_completion_codes = {
|
|
(7, 0x39): {
|
|
0x81: "Invalid user name",
|
|
0x82: "Null user disabled",
|
|
},
|
|
(7, 0x3a): {
|
|
0x81: "No available login slots",
|
|
0x82: "No available login slots for requested user",
|
|
0x83: "No slot available with requested privilege level",
|
|
0x84: "Session sequence number out of range",
|
|
0x85: "Invalid session ID",
|
|
0x86: ("Requested privilege level exceeds requested user permissions "
|
|
"on this channel"),
|
|
},
|
|
(7, 0x3b): { # Set session privilege level
|
|
0x80: "User is not allowed requested privilege level",
|
|
0x81: "Requested privilege level is not allowed over this channel",
|
|
0x82: "Cannot disable user level authentication",
|
|
},
|
|
(1, 8): { # set system boot options
|
|
0x80: "Parameter not supported",
|
|
0x81: "Attempt to set set 'set in progress' when not 'set complete'",
|
|
0x82: "Attempt to write read-only parameter",
|
|
},
|
|
(7, 0x48): { # activate payload
|
|
0x80: "Payload already active on another session",
|
|
0x81: "Payload is disabled",
|
|
0x82: "Payload activation limit reached",
|
|
0x83: "Cannot activate payload with encryption",
|
|
0x84: "Cannot activate payload without encryption",
|
|
},
|
|
(6, 0x47): { # set user password
|
|
0x80: "Password test failed. Password does not match stored value",
|
|
0x81: "Password test failed. Wrong password size was used"
|
|
},
|
|
}
|
|
|
|
ipmi_completion_codes = {
|
|
0x00: "Success",
|
|
0xc0: "Node Busy",
|
|
0xc1: "Invalid command",
|
|
0xc2: "Invalid command for given LUN",
|
|
0xc3: "Timeout while processing command",
|
|
0xc4: "Out of storage space on BMC",
|
|
0xc5: "Reservation canceled or invalid reservation ID",
|
|
0xc6: "Request data truncated",
|
|
0xc7: "Request data length invalid",
|
|
0xc8: "Request data field length limit exceeded",
|
|
0xc9: "Parameter out of range",
|
|
0xca: "Cannot return number of requested data bytes",
|
|
0xcb: "Requested sensor, data, or record not present",
|
|
0xcc: "Invalid data field in request",
|
|
0xcd: "Command illegal for specified sensor or record type",
|
|
0xce: "Command response could not be provided",
|
|
0xcf: "Cannot execute duplicated request",
|
|
0xd0: "SDR repository in update mode",
|
|
0xd1: "Device in firmware update mode",
|
|
0xd2: "BMC initialization in progress",
|
|
0xd3: "Internal destination unavailable",
|
|
0xd4: "Insufficient privilege level or firmware firewall",
|
|
0xd5: "Command not supported in present state",
|
|
0xd6: "Cannot execute command because subfunction disabled or unavailable",
|
|
0xff: "Unspecified",
|
|
0xffff: "Timeout", # not ipmi, but used internally
|
|
}
|
|
|
|
priv_levels = {
|
|
'callback': 1,
|
|
'user': 2,
|
|
'operator': 3,
|
|
'admin': 4,
|
|
'oem': 5,
|
|
}
|