Skip to content

Update Rack-Firmware to use RMS UpdateFirmwareByDeviceList API#843

Closed
anunna0 wants to merge 14 commits intoNVIDIA:mainfrom
anunna0:UpdateFirmwareByDeviceList
Closed

Update Rack-Firmware to use RMS UpdateFirmwareByDeviceList API#843
anunna0 wants to merge 14 commits intoNVIDIA:mainfrom
anunna0:UpdateFirmwareByDeviceList

Conversation

@anunna0
Copy link
Copy Markdown
Contributor

@anunna0 anunna0 commented Apr 7, 2026

Description

Replaces the 'UpdateFirmwareByNodeTypeAsync' call to RMS with the usage of the 'UpdateFirmwareByDeviceList' API. This is to support the upcoming state machine integration of rack-firmware upgrades.

Type of Change

  • 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.)

Related Issues (Optional)

Breaking Changes

  • This PR contains breaking changes

Testing

  • Unit tests added/updated
  • Integration tests added/updated
  • Manual testing performed
  • No testing required (docs, internal refactor, etc.)

Additional Notes

This PR is pending hardware access for testing.

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot bot commented Apr 7, 2026

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@anunna0 anunna0 marked this pull request as ready for review April 8, 2026 18:15
@anunna0 anunna0 requested a review from a team as a code owner April 8, 2026 18:15
@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 8, 2026

🔐 TruffleHog Secret Scan

No secrets or credentials found!

Your code has been scanned for 700+ types of secrets and credentials. All clear! 🎉

🔗 View scan details

🕐 Last updated: 2026-04-08 18:17:25 UTC | Commit: bcc738c

@zhaozhongn
Copy link
Copy Markdown

It was decided one month ago that single-rack sequences such as FW update need to be fully moved into RMS itself. Core should not have rack sequences for power control or FW update. This file was to be removed or reduced to empty.

@anunna0
Copy link
Copy Markdown
Contributor Author

anunna0 commented Apr 8, 2026

It was decided one month ago that single-rack sequences such as FW update need to be fully moved into RMS itself. Core should not have rack sequences for power control or FW update. This file was to be removed or reduced to empty.

Currently, the parsing of SOT firmware specifications happens inside of NCX, so we must build the request with the device list, targets, and firmware blobs in this module. Going forward in the next release of RMS (0.8.0), we are planning on moving this SOT parsing workflow into RMS which will allow us to simplify this file significantly. Still in the current implementation RMS takes care of the update with one API call and handles the sequencing and ordering of the updates on its own.

@zhaozhongn
Copy link
Copy Markdown

It was decided one month ago that single-rack sequences such as FW update need to be fully moved into RMS itself. Core should not have rack sequences for power control or FW update. This file was to be removed or reduced to empty.

Currently, the parsing of SOT firmware specifications happens inside of NCX, so we must build the request with the device list, targets, and firmware blobs in this module. Going forward in the next release of RMS (0.8.0), we are planning on moving this SOT parsing workflow into RMS which will allow us to simplify this file significantly. Still in the current implementation RMS takes care of the update with one API call and handles the sequencing and ordering of the updates on its own.

Ok thanks for that.

}),
host_endpoint: None,
};
if let Err(e) = rms::add_node_to_rms(rms_client.as_ref(), new_node_info).await {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this need to be depricated

// Load devices for this rack from the database. All DB work is done upfront
// so connections are dropped before async credential lookups and the RMS call
// (avoids txn-held-across-await).
let machine_search = model::machine::machine_search_config::MachineSearchConfig {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We shouldent be doing rack f/w update through admin cli by directly contacting RMS.

It will be through rack state machine interception

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Admin CLI is not directly contacting RMS for firmware update. Right now it is routed through core, but not through the state machine. The update to route it through state machine will in a follow up PR.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You may want to look @ this pr #803

Copy link
Copy Markdown
Contributor

@vinodchitraliNVIDIA vinodchitraliNVIDIA Apr 9, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is interepting state machine code.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you saying to remove the rack-firmware apply command and rely on the maintenance command from that PR to do the update?

@anunna0 anunna0 requested a review from Matthias247 April 9, 2026 20:16
Signed-off-by: Abhiram Nunna <33299190+anunna0@users.noreply.github.com>
@anunna0 anunna0 closed this Apr 13, 2026
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.

4 participants