IpmiDriver.set_power_state sends an IPMI chassis control: On, GracefulShutdown, ForceOff and ForceRestart. get_power_state now offers what fits the server's state: On when it is off, the other three when it is on. IPMI has no graceful restart and pyghmi offers no power cycle, so neither is offered. The driver still does not reset the BMC. For boards that offer nothing but IPMI, such as a Supermicro X10 without a Redfish license.
101 lines
5.0 KiB
Markdown
101 lines
5.0 KiB
Markdown
# Changelog
|
|
|
|
All notable changes to this project will be documented in this file.
|
|
|
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [Unreleased]
|
|
|
|
## [0.3.0] - 2026-10-17
|
|
|
|
### Added
|
|
- `IpmiDriver.set_power_state`: the server's power over IPMI chassis control (`On`,
|
|
`GracefulShutdown`, `ForceOff`, `ForceRestart`). `get_power_state` now offers those the
|
|
server accepts in its state (`On` when off, the other three when on). IPMI has no
|
|
graceful restart, and pyghmi offers no power cycle; neither is offered. The driver
|
|
still does not reset the BMC. This is for boards that offer nothing but IPMI, such as a
|
|
Supermicro X10 without a Redfish license.
|
|
|
|
## [0.2.1] - 2026-10-13
|
|
|
|
### Added
|
|
- `IpmiDriver` and `RedfishDriver` mix in `HealthMetricsMixin`: netOrk's SNMP health
|
|
poll reads the BMC's own load, memory and interfaces (UCD-MIB) where the BMC runs
|
|
net-snmp, as the Supermicro X10's does. The role base stays without it.
|
|
|
|
### Fixed
|
|
- `IpmiDriver`: the second poll of a BMC in the same process failed with
|
|
`'<' not supported between instances of 'float' and 'NoneType'`. pyghmi files a
|
|
session in `Session.initting_sessions` under the credentials as str but deletes it
|
|
only under bytes, so the next `Command` got the old, logged-out session back. The
|
|
driver drops that entry itself before `open()` and after `close()`. Reproduced and
|
|
verified live against a Supermicro X10DRL-i (three polls in one process).
|
|
|
|
## [0.2.0] - 2026-10-13
|
|
|
|
### Added
|
|
- `ipmi` NAPALM driver (`IpmiDriver`) on `ManagementControllerDriver`, read-only, over IPMI
|
|
2.0 with `pyghmi`: facts and inventory from the FRU (manufacturer, product, serial number,
|
|
system UUID), the BMC's LAN interface, temperatures, fans and power supplies from the
|
|
sensor records, the power state, the system event log and the BMC firmware version. No
|
|
power control and no BMC reset. For BMCs that refuse or lack Redfish; IPMI over LAN leaks
|
|
password hashes (CVE-2013-4786), so it is the fallback, not the main path.
|
|
- Recorded IPMI fixtures from a Supermicro X10DRL-i (BMC 3.91).
|
|
|
|
### Changed
|
|
- A BMC that refuses Redfish for want of a vendor license no longer fails `open()`.
|
|
`get_facts` returns what is known without Redfish, `get_device_warnings` reports
|
|
`bmc_license_required` with the licenses the BMC names, and every other getter raises
|
|
`ConnectionException`. A poll therefore reports the missing license instead of an
|
|
offline BMC.
|
|
|
|
## [0.1.2] - 2026-10-13
|
|
|
|
### Fixed
|
|
- The fingerprint rules are grouped into alternatives (one Redfish answer, one landing
|
|
page), so discovery's maximum for this driver is 21, not 41. With every alternative
|
|
summed, a Supermicro landing page (6 of 41) lost to a bare "linux" in the BMC's own
|
|
SNMP sysDescr (5 of 18). Requires napalm-device-types 4.8.
|
|
|
|
## [0.1.1] - 2026-10-13
|
|
|
|
### Fixed
|
|
- Discovery no longer takes every device with an open HTTPS port for a BMC: the
|
|
`PortSpec` for 443 carries no weight, so a switch's web UI scores nothing.
|
|
- A BMC that refuses Redfish for want of a vendor license (Supermicro X10 without SUM,
|
|
DCMS or OOB answers even `GET /redfish/v1/` with 403 `OemLicenseNotPassed`) now fails
|
|
`open()` with `RedfishLicenseError` naming the licenses, not with a bare status code.
|
|
|
|
### Added
|
|
- Fingerprint rules for the BMC web UIs netOrk's discovery already fetches: Supermicro
|
|
X9-X11 (ATEN firmware), iDRAC, iLO. A rule for a Redfish error body
|
|
(`@message.extendedinfo`) for when discovery reads the service root.
|
|
- Recorded fixtures from a Supermicro X10DRL-i (BMC 3.91, unlicensed).
|
|
|
|
## [0.1.0] - 2026-10-13
|
|
|
|
### Added
|
|
- `redfish` NAPALM driver (`RedfishDriver`) on `ManagementControllerDriver` from
|
|
napalm-device-types 4.7, registered as the `napalm.drivers` entry point `redfish`
|
|
- NAPALM getters for the BMC: `get_facts`, `get_interfaces`, `get_interfaces_ip`,
|
|
`get_environment` (fans, temperatures, power supplies; `cpu` and `memory` empty),
|
|
`get_users`, `get_ntp_servers`, `get_snmp_information`
|
|
- Role methods for the managed server: `get_power_state`, `set_power_state`,
|
|
`get_hardware_inventory`, `get_event_log`, `get_firmware_inventory`,
|
|
`get_management_protocols`; `reboot_host` resets the BMC (`Manager.Reset`)
|
|
- HTTPS transport on the DMTF `redfish` library: Redfish session login with the session
|
|
deleted on close, basic auth fallback only when sessions are unsupported, certificate
|
|
verification on by default (`verify_ssl` accepts a CA file), collections followed by
|
|
`@odata.id` including `nextLink` pages, links to other hosts refused
|
|
- Environment from `ThermalSubsystem`/`PowerSubsystem`/`Sensors` where present, legacy
|
|
`Thermal`/`Power` otherwise
|
|
- Pure parsers for every resource in `docs/redfish-map.md`
|
|
- Tests against DMTF Redfish mockups (public-rackmount1, public-localstorage,
|
|
public-telemetry) over mocked HTTP
|
|
|
|
### Known limitations
|
|
- Not yet run against real hardware; Supermicro X10 behaviour is from the design notes
|
|
- No `ipmi` fallback driver yet
|
|
- `get_config` is not implemented (a BMC has no configuration file)
|