The second IPMI poll of a BMC in the same worker process failed with "'<' not supported between instances of 'float' and 'NoneType'". pyghmi files a session in Session.initting_sessions under the credentials as str and deletes it only under bytes, so the entry stays and 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 the Supermicro X10DRL-i: three polls in one process now succeed. IpmiDriver and RedfishDriver mix in HealthMetricsMixin, so netOrk's SNMP health poll reads the BMC's own load, memory and interfaces where the BMC runs net-snmp with the UCD-MIB, as the X10's does.
4.5 KiB
4.5 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.2.1] - 2026-10-13
Added
IpmiDriverandRedfishDrivermix inHealthMetricsMixin: 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 inSession.initting_sessionsunder the credentials as str but deletes it only under bytes, so the nextCommandgot the old, logged-out session back. The driver drops that entry itself beforeopen()and afterclose(). Reproduced and verified live against a Supermicro X10DRL-i (three polls in one process).
[0.2.0] - 2026-10-13
Added
ipmiNAPALM driver (IpmiDriver) onManagementControllerDriver, read-only, over IPMI 2.0 withpyghmi: 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_factsreturns what is known without Redfish,get_device_warningsreportsbmc_license_requiredwith the licenses the BMC names, and every other getter raisesConnectionException. 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
PortSpecfor 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 403OemLicenseNotPassed) now failsopen()withRedfishLicenseErrornaming 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
redfishNAPALM driver (RedfishDriver) onManagementControllerDriverfrom napalm-device-types 4.7, registered as thenapalm.driversentry pointredfish- NAPALM getters for the BMC:
get_facts,get_interfaces,get_interfaces_ip,get_environment(fans, temperatures, power supplies;cpuandmemoryempty),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_hostresets the BMC (Manager.Reset) - HTTPS transport on the DMTF
redfishlibrary: Redfish session login with the session deleted on close, basic auth fallback only when sessions are unsupported, certificate verification on by default (verify_sslaccepts a CA file), collections followed by@odata.idincludingnextLinkpages, links to other hosts refused - Environment from
ThermalSubsystem/PowerSubsystem/Sensorswhere present, legacyThermal/Powerotherwise - 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
ipmifallback driver yet get_configis not implemented (a BMC has no configuration file)