oxidecomputer / oxidecomputer/omicron

reconfigurator-cli: Add command to "perform" all MGS-driven images on a sled

Open
#9,144 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

For our reconfigurator-cli simulated system, we have some shortcut commands that make multiple changes at once like

# change the zone manifest to match a TUF repo
sled-update-install-dataset $SLED --to-target-release

# change the OmicronSledConfig to match a blueprint
sled-set serial0 omicron-config $BLUEPRINT

But we don't have a good way of updating all the MGS-driven images on a sled, so today if we need to do that, we have to spell out each update individually. This has come up on both https://github.com/oxidecomputer/omicron/pull/9044#discussion_r2395283630 and https://github.com/oxidecomputer/omicron/pull/9108#discussion_r2402398278. Maybe something like

sled-update-mgs-driven-images $SLED --to-target-release

that would do the equivalent of

sled-update-rot-bootloader $SLED --stage0 1.0.0
sled-update-rot $SLED --slot-a 1.0.0
sled-update-rot $SLED --slot-b 1.0.0
sled-update-sp $SLED --active 1.0.0
sled-update-host-phase1 $SLED --slot-a b99d5273ba1418bebb19d74b701d716896409566d41de76ada71bded4c9b166b
sled-update-host-phase2 $SLED --boot-disk A --slot-a d944ae205b61ccf4322448f7d0311a819c53d9844769de066c5307c1682abb47

(with appropriate choices for versions, hashes, and maybe active slot / boot disk?).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the reconfigurator-cli entry point and compare the existing sled-update-* commands listed in the issue. Trace how target-release versions, hashes, active slots, and boot disks are selected, then define the combined command's expected behavior. Done means one command performs all applicable MGS-driven image updates with appropriate choices.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.