IPM Device “Global” Commands

This section describes the high level API for the commands that are common to all IPM devices that follow the IPMI standard. The IPMI standard defines the following IPM Device “Global” commands:

Command O/M Support API
Get Device ID M Yes Yes
Cold Reset O Yes Yes
Warm Reset O Yes Yes
Get Self Test Results M Yes No
Manufacturing Test On O Yes No
Get ACPI Power State O No No
Set ACPI Power State O No No
Get Device GUID O No No

Note

  • O/M - Optional/Mandatory command as stated by the IPMI standard
  • Support - Supported command by send_message_with_name method
  • API - High level API support implemented in this library

Get Device ID Command

You can retrieve the Intelligent Devices’s HW revision, FW/SW revision, and information regarding additional logical device functionality with

get_device_id()

where the returned object has the following attributes shown in the order as appear in the table of the IPMI standard:

  • device_id
  • provides_sdrs
  • revision
  • available
  • fw_revision (fw_revision.major, fw_revision.minor)
  • ipmi_version (ipmi_version.major, ipmi_version.minor)
  • supported_functions
  • manufacturer_id
  • product_id
  • aux

The returned object also has a method supports_function(func_name) where the argument can be one of the following (not case sensitive):

  • ‘sensor’
  • ‘sdr_repository’
  • ‘sel’
  • ‘fru_inventory’
  • ‘ipmb_event_receiver’
  • ‘ipmb_event_generator’
  • ‘bridge’
  • ‘chassis’

The method returns ‘True’ if the given function is supported by the Target, otherwise is ‘False’.

For example:

device_id = ipmi.get_device_id()

print("--- Printing Device ID ---")
functions = (
        ('SENSOR', 'Sensor Device', 11),
        ('SDR_REPOSITORY', 'SDR Repository Device', 3),
        ('SEL', 'SEL Device', 14),
        ('FRU_INVENTORY', 'FRU Inventory Device', 4),
        ('IPMB_EVENT_RECEIVER', 'IPMB Event Receiver', 5),
        ('IPMB_EVENT_GENERATOR', 'IPMB Event Generator', 4),
        ('BRIDGE', 'Bridge', 18),
        ('CHASSIS', 'Chassis Device', 10))
ChkBox=['[ ]','[X]']
print('''
Device ID:                  %(device_id)s
Provides Device SDRs:       %(provides_sdrs)s
Device Revision:            %(revision)s
Device Available:           %(available)d
Firmware Revision:          %(fw_revision)s
IPMI Version:               %(ipmi_version)s
Manufacturer ID:            %(manufacturer_id)d (0x%(manufacturer_id)04x)
Product ID:                 %(product_id)d (0x%(product_id)04x)
Aux Firmware Rev Info:      %(aux)s
Additional Device Support: '''[1:-1] % device_id.__dict__)
for n, s, l in functions:
    if device_id.supports_function(n):
        print('        %s%s%s' % (s,l*' ',ChkBox[1]))
    else:
        print('        %s%s%s' % (s,l*' ',ChkBox[0]))

Cold Reset Command

This command directs the Target to perform a ‘Cold Reset’ of itself. The device reinitalizes its event, communcation, and sensor funtioncs. Self Test, if implemented, will be also run.

cold_reset()

For example:

ipmi.cold_reset()

Warm Reset Command

This command directs the Target to perform a ‘Warm Reset’ of itself. Communication interfaces are reset, but current configurations of interrupt enables, thresholds, etc. will be left alone, and no Self Test initiated.

warm_reset()

For example:

ipmi.warm_reset()