Skip to content

[3/n] [ls-apis] track sled-agent-rack-setup as a separate subcomponent#10459

Open
sunshowers wants to merge 1 commit into
sunshowers/spr/main.3n-ls-apis-track-sled-agent-rack-setup-as-a-separate-subcomponentfrom
sunshowers/spr/3n-ls-apis-track-sled-agent-rack-setup-as-a-separate-subcomponent
Open

[3/n] [ls-apis] track sled-agent-rack-setup as a separate subcomponent#10459
sunshowers wants to merge 1 commit into
sunshowers/spr/main.3n-ls-apis-track-sled-agent-rack-setup-as-a-separate-subcomponentfrom
sunshowers/spr/3n-ls-apis-track-sled-agent-rack-setup-as-a-separate-subcomponent

Conversation

@sunshowers
Copy link
Copy Markdown
Contributor

@sunshowers sunshowers commented May 18, 2026

RSS has very different semantics from the rest of Sled Agent, and the recent split to put it in another crate (#10340) gives us a change to handle this divergence in a principled manner.

Introduce two new notions to ls-apis:

  • subcomponents: components that are part of a deployment unit but should be treated separately. Currently, RSS is the only subcomponent.
  • lifecycle: when a server component's code runs -- "steady-state" by default, but "rack-init" for RSS

This separation also gives us a chance to do a lot of cleanup within the API manifest:

  • the not-deployed evaluation for RSS goes away, since that knowledge can be derived from the rack-init lifecycle
  • there's no need for RSS to declare IDU-only edges, since it doesn't participate in the upgrade DAG

Depends on:

Created using spr 1.3.6-beta.1
# upgrade DAG, so that sled-agent-rack-setup doesn't impose any ordering
# constraints on the upgrade DAG.
subcomponents = [
{ name = "sled-agent-rack-setup", inside = "omicron-sled-agent", lifecycle = "rack-init" },
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.

Looking for feedback on the inside thing. I tried autodiscovering the inside by looking at the dependency graph but honestly that was a complete mess that was hard to understand both in the code and in this manifest. I feel like having an explicit inside makes both layers easier to understand.

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.

1 participant