randomparity / randomparity/kdive

Add the IPMI out-of-band driver

Open
#1,821 0 comments 0 reactions 0 assignees View on GitHub
area:control-retrieve effort:M priority:P2 provider:baremetal-bmc status:blocked type:feature
Dominant language
Python
Stars
0
Forks
0
Avg merge
1h 26m
Merged PRs (30d)
311

Description

Part of #1814

## Problem

Redfish (#1818) is the modern service-processor standard, but a large share of lab hardware
predates it or ships a BMC whose Redfish implementation is incomplete. IPMI remains the lowest
common denominator for x86 out-of-band control, and a BYO provider that cannot talk to it excludes
much of the hardware operators actually have.

## Evidence

- `src/kdive/providers/byo_host/oob/` — the typed driver protocol defined in #1818; this is a
second implementation behind it, purely additive.
- `docs/design/top-level-design.md:581` scopes M4 bare metal as "PXE/SoL/IPMI/Redfish" — IPMI is
named in the roadmap alongside Redfish, not as an afterthought.
- The `[byo_host.oob]` block from #1817 already carries `kind = "ipmi"` as a selectable value, so
no schema change is needed here.
- Parallelizable with the HMC driver (#1814 entry 6): different transport, different hardware, no
shared files beyond the port.

## Expected outcome

- An IPMI driver satisfying the #1818 port: power on/off/reset, state query, and SoL console
attach.
- Same fail-closed contract as Redfish — unreachable endpoint or rejected credential raises a
specific `ErrorCategory`; no silent in-band fallback.
- Credentials resolved by reference and registered for redaction, identical to the Redfish path.
- Any host-side tooling the driver shells out to is declared in the owning Ansible role in this
same PR (AGENTS.md provisioning-parity rule) — an undeclared dep passes on a warmed dev box and
breaks the next clean runner reprovision.
- Unit/contract tests against a mock IPMI endpoint; no live BMC required to merge.

Blocked by #1818

Contributor guide

Open the contributing guide

Research direction

Start with the typed driver protocol in src/kdive/providers/byo_host/oob/ and the design scope in docs/design/top-level-design.md:581, after #1818 is complete. Use the Redfish path as the stated parallel implementation, then add mock IPMI contract tests covering power, state, SoL, fail-closed errors, credential redaction, and any declared Ansible tooling; done means no live BMC is required and the listed outcomes pass.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.