Skip to content

Update API specifications with fern api update - #3

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
update-api-2026-04-26T05-31-22-150Z
Open

github-actions[bot] wants to merge 1 commit into
mainfrom
update-api-2026-04-26T05-31-22-150Z

Conversation

@github-actions

Copy link
Copy Markdown

Update API specifications by running fern api update.

krish-nvidia pushed a commit that referenced this pull request Aug 27, 2026
…factory#5338)

This for epic #3…796, issue 4

After Manager.Reset the mock BMC now goes dark: every request answers
503 Service Unavailable for the machine's resolved
LifecycleTimings::bmc_reset window (90-120s platform defaults), then
lazily comes back online on the first request after expiry - like a real
BMC, silently, by answering again. The server's power state is
deliberately untouched.

- new bmc-mock availability module: Online/Resetting state, no timers,
lazy recovery; poisoned-mutex recovery instead of panicking
- gate at the very top of the middleware router: a rebooting BMC answers
nothing - before auth, before injection, before routing
- MachineRouterOptions.bmc_reset_duration opts in; None and
Duration::ZERO keep the previous no-op behavior byte-for-byte so
existing tests see no side effect
- machine_state_machine wires the resolved bmc_reset timing (the epic's
field is now consumed); power shelf and switch simulators pass None
- 503 (not a transport error) is intentional: all mocks share one
authority-multiplexed TLS listener with pooled keep-alive connections,
and nico's probe/error paths collapse both shapes into the same retry
decision (see comment at the middleware gate)
- Redfish-only trigger: IPMI "mc reset cold" is not modeled in ipmi_sim
- tests: 5 availability unit tests, end-to-end reset-503-recover router
test asserting zero power commands, zero-duration regression guard

## Related issues

## Type of Change
- [x] **Add** - New feature or capability
- [ ] **Change** - Changes in existing functionality
- [ ] **Fix** - Bug fixes
- [ ] **Remove** - Removed features or deprecated functionality
- [ ] **Internal** - Internal changes (refactoring, tests, docs, etc.)

## Breaking Changes
- [ ] **This PR contains breaking changes**

## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [x] Manual testing performed
- [ ] No testing required (docs, internal refactor, etc.)

## Additional Notes

### Default-behavior note: 
Existing configs now get a realistic BMC offline window on Manager.Reset
(platform defaults, e.g. 120 s host / 60 s DPU on GB200 NVL) — most
visibly during pre-ingestion's InitialBmcReset, adding a few minutes of
transient, self-healing exploration errors per ingestion cycle. This is
intentional (realistic-by-default, per feature owner); anything
expecting a no-op BMC reset should be fixed rather than masked. Opt-out
for special rigs: bmc_reset = "0s" in timing_overrides — contract-tested
to reproduce legacy behavior exactly.

Testing: unit + router tests (window entry, 503-then-lazy-recovery,
power-state preservation, zero-disable). Validated end-to-end in a live
single-VM nico dev site at both accelerated (12 s/6 s) and full-length
(120 s/60 s) windows: pre-ingestion triggered all six mock BMCs'
windows, nico rode out the blackouts, and ingestion completed to Ready
untouched. Trigger is Redfish Manager.Reset only (IPMI mc reset isn't
modeled in ipmi_sim).

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants