feat: read-only IPMI driver; report a missing Redfish license (0.2.0)

A Supermicro X10DRL-i refuses Redfish without a license (SUM, DCMS or
OOB), even the service root. IPMI answers without one.

- New entry point `ipmi` (napalm_redfish.ipmi.IpmiDriver) on
  ManagementControllerDriver, over pyghmi: facts and inventory from the
  FRU (serial number, system UUID), the BMC's LAN interface, sensors
  (temperatures, fans, power supplies), the power state, the event log
  and the BMC firmware. Read-only: no power control, no BMC reset.
  Tested against recordings of the X10 with serials, the UUID, MACs and
  IPs replaced.
- RedfishDriver.open() no longer fails on a license refusal: get_facts
  returns what is known without Redfish, get_device_warnings reports
  bmc_license_required with the licenses the BMC names, every other
  getter raises. netOrk then shows the reason instead of an offline BMC.
- IpmiDriver is not exported from the package: NAPALM's own
  get_network_driver("redfish") takes the first driver class of
  napalm_redfish.
This commit is contained in:
christianmanivong committed 2026-10-13 10:53:51 +02:00
1 parent bfbeb19255
commit 332e6090a7
17 files changed
+1194 -19

No files matched your search

+12 -6
View File
@@ -5,11 +5,17 @@ NAPALM driver for server **baseboard management controllers (BMCs)** over
boards that predate Redfish. Built on
[napalm-device-types](https://git.netork.io/NAPALM/napalm-device-types). Written for netOrk.
**Status: early development.** The `redfish` driver (`napalm_redfish.RedfishDriver`, a
`ManagementControllerDriver` from napalm-device-types) implements the NAPALM getters and
the role methods in [docs/redfish-map.md](docs/redfish-map.md), tested end to end against
DMTF mockups. It has not yet run against real hardware; the first test device is a
Supermicro X10DRL-i (BMC firmware 3.91, Redfish). The `ipmi` fallback does not exist yet.
**Status: early development.** Two drivers, both `ManagementControllerDriver`s from
napalm-device-types:
- `redfish` (`napalm_redfish.RedfishDriver`) implements the NAPALM getters and the role
methods in [docs/redfish-map.md](docs/redfish-map.md), tested end to end against DMTF
mockups. A BMC that refuses Redfish for want of a vendor license (a Supermicro X10
without SUM, DCMS or OOB) still opens: the driver reports `bmc_license_required` through
`get_device_warnings` instead of failing.
- `ipmi` (`napalm_redfish.ipmi.IpmiDriver`) reads over IPMI 2.0 only: FRU facts and
inventory, sensors, power state, event log, BMC firmware. Tested against recordings of a
Supermicro X10DRL-i (BMC 3.91), which refuses Redfish without a license.
## Why Redfish, and why not one driver per vendor
@@ -23,7 +29,7 @@ RAKP handshake hands the password hash to anyone who asks (CVE-2013-4786), so ne
not depend on it. Finding IPMI over LAN enabled is itself worth reporting, see
[docs/security.md](docs/security.md).
## Layout (planned)
## Layout
| Entry point | Transport | Scope |
|---|---|---|