IPMI Java Client 2.0.00
-
Home
- Reference
Migrating from Verax
The IPMI Java Client is a fork of the IPMI Library for Java by Verax Systems[1] (vxipmi). Its protocol layer, org.metricshub.ipmi.core, is the Verax library, under a new package name and with the changes listed below; the high-level org.metricshub.ipmi.client API is new. Code written for the Verax library keeps working after a package rename.
Steps
-
Replace the Verax jar with the Maven dependency:
<dependency> <groupId>org.metricshub</groupId> <artifactId>ipmi-java</artifactId> <version>2.0.00</version> </dependency> -
Rename the packages in the imports:
com.veraxsystems.vxipmibecomesorg.metricshub.ipmi.core, with the same sub-packages:Verax IPMI Java Client com.veraxsystems.vxipmi.api.sync.IpmiConnectororg.metricshub.ipmi.core.api.sync.IpmiConnectorcom.veraxsystems.vxipmi.api.async.*org.metricshub.ipmi.core.api.async.*com.veraxsystems.vxipmi.api.sol.*org.metricshub.ipmi.core.api.sol.*com.veraxsystems.vxipmi.coding.*org.metricshub.ipmi.core.coding.*com.veraxsystems.vxipmi.common.*,connection.*,sm.*,transport.*org.metricshub.ipmi.core.common.*, …A search and replace of
com.veraxsystems.vxipmi.withorg.metricshub.ipmi.core.does it. -
Remove the logging configuration of the Verax library: this one does not log. Every failure is an exception, and every other problem is part of the result (Timeouts and Errors[2]).
-
If you edited the
connection.propertiesorvxipmi.propertiesfiles of the Verax jar to change the timeouts, set the same values on the connector instead:setTimeout(ms),setRetries(n)and thepingPeriodconstructor argument (Connections and connectors[3]). -
Drop the
IpmiVersion,CipherSuiteandAuthenticationTypearguments of the command constructors: the session sets them when it sends the command, andsendMessage()returns the response type the command declares (Sending commands[4]). -
If you subclassed protocol classes and accessed their
protectedfields, use the accessors that replaced them (Upgrading from 1.2.02[5]).
What changed in the fork
| Area | Change |
|---|---|
| Cipher suites | RAKP-HMAC-SHA256 and RAKP-HMAC-MD5 authentication, HMAC-SHA256-128 and HMAC-MD5-128 integrity: suites 6 to 8 and 15 to 17 work, in addition to 0 to 3. |
| Keep-alive | IpmiConnector(int port, long pingPeriod) sets the keep-alive period of the connector, or disables it (0). |
| SDR repository | Every OEM record type (C0h – FFh, not only C0h) is decoded as OemRecord, and a record that cannot be decoded is skipped instead of aborting the walk. Truncated Get SDR replies are read again in chunks. |
| Sensor records | Full, Compact and Event-Only records share AbstractSensorRecord (Upgrading[6]). |
| Commands | IpmiCommandCoder<R> declares the response type of each command, the session sets the version, cipher suite and authentication type, and validateResponse() checks the response of every command (Upgrading[7]). |
| Connection thread | The busy loop of Connection.run() that used a full CPU core is fixed. |
| High-level API | IpmiClient keeps one session open and reads the chassis status, the FRUs and the sensors as typed results (Overview[8]). |
| Logging | None: every failure is an exception, every other problem is in the result. |
| Java | Java 8 or later. |
License
The Verax library is published under the GNU GPL v3. This fork is published under the GNU LGPL v3: it uses the Verax code under a commercial (non-GPL) license granted by Verax Systems to Sentry Software. The source files derived from the Verax library keep Verax Systems as copyright holder.
- [1] https://en.wikipedia.org/wiki/Verax_IPMI
- [2] timeouts-and-errors.html
- [3] low-level-api.html#connections-and-connectors
- [4] low-level-api.html#sending-commands
- [5] upgrading.html#protected-fields
- [6] upgrading.html#sensor-records
- [7] upgrading.html#command-responses
- [8] index.html
