Skip to content

[DNM] Testing batched multi component firmware updates - #471

Closed
jacob-anders wants to merge 3 commits into
openshift:mainfrom
jacob-anders:multi-component-firmware-updates
Closed

jacob-anders wants to merge 3 commits into
openshift:mainfrom
jacob-anders:multi-component-firmware-updates

Conversation

@jacob-anders

Copy link
Copy Markdown

No description provided.

jacob-anders and others added 3 commits August 6, 2026 16:17
Extract _submit_simple_update() from _execute_firmware_update() to
create a shared helper for the SimpleUpdate call, systems-collection
targeting, firmware file staging, and cleanup tracking. Follow-up
batched-update work reuses this helper.

Extract _report_step_error() and _resume_step() to eliminate the
duplicated step-type (clean/deploy/service) dispatch blocks in
_handle_task_completion() and _continue_updates().

Four behaviour changes beyond the refactoring:

1. _check_overall_timeout() unconditionally called
   servicing_error_handler() regardless of the running step type.
   It now routes through _report_step_error(), so a clean or deploy
   step that times out is failed with the correct handler.

2. _report_step_error() adds an else: LOG.error() fallback for nodes
   with no recognised step type set, preventing a silent no-op that
   could park a node in a *WAIT state with no periodic matching.

3. The step-type dispatch precedence is now clean, service, deploy.
   The pre-existing _handle_task_completion() used clean, deploy,
   service. The new order matches async_steps._step_type() and is
   the correct one for a node carrying both deploy_step and
   service_step.

4. _continue_updates() now calls cache_firmware_components() on the
   terminal (last-component) path of sequential firmware updates,
   matching the batched path which already refreshed the cache.

Partial-Bug: #2153965
Change-Id: I886745ca2b98a21d6b2f4d7917a59e525a84ef28
Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me>
Assisted-By: Claude Opus 4.8
All non-BMC firmware updates (BIOS, NIC) now use a unified two-phase
approach: firmware is staged via Redfish SimpleUpdate, then a reboot
is triggered to apply it. By default each component gets its own
staging and reboot cycle (batch of one).

The new allow_grouping_reboots argument to the firmware.update step
(cleaning, servicing, or deploy) allows adjacent non-BMC components
to share a single consolidated reboot, reducing total downtime.

BMC firmware entries automatically segment the list, as BMC updates
reset the management controller rather than the host. Each segment
of adjacent, distinct, non-BMC components shares one reboot.

For example, [bios, nic:NIC.1-1, bmc, nic:NIC.Slot.2, nic:NIC.Slot.3]
produces three phases and three reboots instead of five.

Duplicate component values are rejected when batching is enabled, as
staging multiple updates for the same component is unsafe with a single
consolidated reboot. The per-component wait argument is rejected for
non-BMC components.

Change-Id: Id1d8abd184411a44c64a0439c915dda2174896a4
Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Jacob Anders <jacob-anders-dev@proton.me>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change-Id: I695ba6f6faf8241511ec0e7cac04c5a6835e5f27
@openshift-ci
openshift-ci Bot requested review from derekhiggins and dtantsur August 6, 2026 06:38
@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: jacob-anders

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci Bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Aug 6, 2026
@openshift-ci

openshift-ci Bot commented Aug 6, 2026

Copy link
Copy Markdown

@jacob-anders: all tests passed!

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@jacob-anders
jacob-anders deleted the multi-component-firmware-updates branch August 19, 2026 21:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved Indicates a PR has been approved by an approver from all required OWNERS files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant