Skip to content

feat(mat): BMC self-reset simulation in bmc-mock #4493

Description

@jabdulvahid

Is this a new feature, an enhancement, or a change to existing functionality?

New Feature

How would you describe the priority of this feature request

Medium

Please provide a clear description of problem this feature solves

Nico issues BMC resets in 5 automated scenarios in machine-controller/src/handler.rs (after NIC FW update, during reprovisioning, after BMC FW upgrade, in the power-state machine, and after boot-order job failure). The bmc-mock currently treats POST Manager.Reset and ipmitool bmc reset cold as no-ops — the BMC never goes offline. As a result, Nico's retry and recovery behavior during BMC unavailability is never exercised in integration tests. Bugs in Nico's handling of the BMC offline window are invisible to the test suite.

Feature Description

As a developer testing NVIDIA Infra Controller, I want the bmc-mock to go offline for a configurable duration when a BMC reset is issued (returning 503 on all Redfish endpoints during that window), so that Nico's retry and recovery behavior across all 5 automated BMC reset scenarios is exercised in integration tests.

Describe your ideal solution

Add BmcAvailability enum (Online / Resetting { until: Instant }). Handle POST Manager.Reset and ipmitool bmc reset cold by entering the Resetting state for bmc_reset duration. All Redfish route handlers return 503 during the window. Add bmc_reset field to LifecycleTimings. Includes integration test covering all 5 automated BMC reset scenarios in machine-controller/src/handler.rs

Describe any alternatives you have considered

No response

Additional context

No response

Code of Conduct

  • I agree to follow NVIDIA Infra Controller's Code of Conduct
  • I have searched the open feature requests and have found no duplicates for this feature request

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature (deprecated - use issue type, but it's needed for reporting now)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions