Package org.metricshub.ipmi.client


package org.metricshub.ipmi.client
The client of a BMC. Build an IpmiClient with IpmiClient.builder(String), then call its operations: capabilities(), deviceId(), chassisStatus(), chassisControl(), chassisIdentify(), chassisIdentifyForever(), sensors(), frus(), sel() and sol(), or send() and raw() for any other command. They return typed results (Sensor, Fru, SelEntry...) and report the failures of the BMC and of the network as unchecked IpmiClientExceptions, whose subclasses say what to act on.

User guide: https://metricshub.org/ipmi-java/

  • Class
    Description
    What the BMC supports before any login (Get Channel Cipher Suites and Get Channel Authentication Capabilities, IPMI 2.0 sections 22.15 and 22.13): the cipher suites it offers and its authentication options.
    The state of the chassis: power, faults, intrusion, identify LED (Get Chassis Status, IPMI 2.0 table 28-3).
    A function the BMC provides, from the additional device support byte of Get Device ID (IPMI 2.0 table 20-2).
    The identity of the BMC: its manufacturer and product IDs, its firmware revision, the IPMI version it implements and the functions it provides (Get Device ID, IPMI 2.0 section 20.1).
    A Field Replaceable Unit of the system: the board, chassis, product and multirecord areas of its FRU inventory (IPMI Platform Management FRU Information Storage Definition), or the SPD data of a memory module, or the Processor Information ROM of a processor, located by an SDR record.
    The FRUs read by IpmiClient.frus(): an unmodifiable list, with the SDR records the repository walk skipped.
    Reads the FRU inventories of the BMC: those that the FRU Device Locator records of the SDR repository point at, and the one of the system board.
    The BMC refused the login: unknown user name, wrong password or BMC key, role or privilege refused.
    A client of one BMC over IPMI 2.0 (RMCP+).
    Builds an IpmiClient: the BMC, the credentials and the session settings.
    A failure of an IpmiClient operation.
    The BMC answered a command with an error completion code (IPMI 2.0 table 5-2).
    The connection to the BMC failed for a network reason: unknown host, socket error, no reply to the session setup after all the tries (wrong host, UDP port filtered, IPMI over LAN disabled, an IPMI 1.5-only BMC with IpmiClient.Builder.cipherSuite(int)), or the connection closed while an operation ran, which loses the session.
    The overall deadline of the operation expired, or a message of an established session got no reply after all the tries.
    What caused the last power down or power on of the system (Get Chassis Status, IPMI 2.0 table 28-3).
    Sends any request, like ipmitool raw: bmc.raw(0x2C, 0x01).data(0xDC, 0x01).execute() is Get DCMI Capabilities Info.
    The reply to a raw request (IpmiClient.raw(int, int)): its completion code and its data as the BMC sent them, whatever the completion code.
    The descriptions of the ReadingType states and events, in the wording of ipmiutil (of ipmitool for the few that ipmiutil does not name), used by Sensor.states() and SelEntry.description().
    One entry of the System Event Log, read by IpmiClient.sel().
    The entries read from the System Event Log by SelRequest.execute(), in the order of the log, with what Get SEL Info says of the whole log: how many entries it holds, and when it was last written and erased.
    Reads the System Event Log: bmc.sel().execute() for every entry, bmc.sel().since(entry).execute() for the entries added after one already read, and bmc.sel().stream() to get each entry as soon as it is read.
    A sensor of the BMC, with its SDR record and its reading.
    The sensors read by IpmiClient.sensors(): an unmodifiable list, with the SDR records the repository walk skipped.
    Reads the sensors of the BMC: the Full and Compact sensor records of the SDR repository, each with its Get Sensor Reading.
    The status of a sensor: for a threshold sensor, the worst threshold its reading is at or beyond (IPMI 2.0 table 35-15); for a discrete sensor, whether it answers.
    An SDR record the repository walk could not use: the BMC returned it truncated, or the library cannot decode it.
    A Serial over LAN console, as streams: what the system writes on its serial port is read from SolConsole.input(), what is written to SolConsole.output() reaches its serial port.
    Opens a Serial over LAN console (IPMI 2.0 section 15) in the session of the client or, when the BMC serves SOL on another UDP port, in a session the client opens there with the same credentials, cipher suite and privilege.