Skip to content

Update plans #764

@iliana

Description

@iliana

Currently Nexus is not very smart at all about when it tells Sled Agent to apply updates.

omicron/nexus/src/nexus.rs

Lines 2873 to 2890 in 6f6aba6

// demo-grade update logic: tell all sleds to apply all artifacts
for sled in self
.db_datastore
.sled_list(&DataPageParams {
marker: None,
direction: PaginationOrder::Ascending,
limit: NonZeroU32::new(100).unwrap(),
})
.await?
{
let client = self.sled_client(&sled.id()).await?;
for artifact in &artifacts {
info!(
self.log,
"telling sled {} to apply {}",
sled.id(),
artifact.target_name
);

Nexus needs to know:

  • Versions of software and firmware across the rack, so it can determine what needs updates
  • Update constraints (e.g. "this is an OS ramdisk; the sled must be evacuated of workloads so we can reboot", but also "the customer wants to hold back this component to this version because of Reasons")

With this information, Nexus needs to create an update plan that is a list of ordered steps for any running Nexus to execute. Nexus will periodically re-evaluate its plan to match the current state of the system and what new updates are available.

(From #717)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Update SystemReplacing old bits with newer, cooler bitsnexusRelated to nexus

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions