feat: switch the server's power over IPMI (0.3.0)

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.
This commit is contained in:
Christian Manivong committed 2026-10-17 01:04:43 +02:00
1 parent 0e38e18e26
commit 6c60f7ac60
8 files changed
+137 -25

No files matched your search

+6 -3
View File
@@ -39,6 +39,9 @@ must follow the collections instead of assuming IDs, because vendors differ (Del
## IPMI fallback (`ipmi` entry point)
Read-only, via `pyghmi`: device ID and FRU data for `get_facts`, sensor data repository for
`get_environment`, chassis status for `get_power_state`, SEL for `get_event_log`. No power
control over IPMI.
Via `pyghmi`: device ID and FRU data for `get_facts`, sensor data repository for
`get_environment`, chassis status for `get_power_state`, SEL for `get_event_log`.
`set_power_state` sends a chassis control (`On` → power up, `GracefulShutdown` → soft off
via ACPI, `ForceOff` → power down, `ForceRestart` → hard reset). IPMI has no graceful
restart, and pyghmi offers no power cycle, so `get_power_state` never offers those two.
No BMC reset over IPMI.
+4 -2
View File
@@ -19,7 +19,9 @@ credentials are worth as much as root on every machine it manages.
offline. This is part of the protocol, not a bug a firmware update fixes.
- Cipher suite 0 (no authentication) is enabled on some BMCs and allows login with any
password.
- So the `ipmi` entry point is read-only and a fallback only. `get_management_protocols`
- So the `ipmi` entry point is a fallback only. It switches the server's power, because
some boards (a Supermicro X10 without a Redfish license) offer nothing else, but it does
not reset the BMC. `get_management_protocols`
reporting `IPMI.ProtocolEnabled = true` should become a finding in netOrk, with the advice
to disable IPMI over LAN where Redfish is available.
@@ -28,7 +30,7 @@ credentials are worth as much as root on every machine it manages.
- `set_power_state` can take a production server down. In netOrk it needs a
`ConfirmDialog`, a permission of its own, and an audit log entry.
- `ForceOff`/`ForceRestart`/`PowerCycle` skip the OS shutdown; offer `GracefulShutdown`/
`GracefulRestart` first.
`GracefulRestart` first. Over IPMI there is no graceful restart, and no power cycle.
- `reboot_host` restarts only the BMC (`Manager.Reset`). The managed server keeps running.
## Firmware