oxidecomputer / oxidecomputer/omicron

Adding a sled shouldn't require operators to go through the mupdate recovery workflow

Open
#10,918 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

When adding a sled to a rack, we first mupdate the sled to match the current target release. This means when we add the sled to the rack, Reconfigurator detects that a mupdate has occurred, which then requires the operator to go through the system_update_recovery_finish() Nexus endpoint (which is more typically used to recover from a full-system mupdate).

With some care, Reconfigurator should be able to detect "we've found a sled that has been mupdated to the current target release", and in that case, not bump the blueprint's min target release generation and therefore not require the operator to go through the update recovery process.

In the fullness of time, we've discussed Nexus driving the mupdate of a sled being added to the rack. This seems like a (necessary?) stepping stone to that world, and it would make the add sled process meaningfully smoother today.

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 by tracing Reconfigurator's sled-add path and how it detects a prior mupdate, then review the interaction with the system_update_recovery_finish() Nexus endpoint. The change is done when a sled mupdated to the current target release can be added without bumping the blueprint's minimum target release generation or requiring update recovery.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
50/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.