Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

blueprint-execution: Can we remove the "list sleds from db" step? #7526

Open
jgallagher opened this issue Feb 12, 2025 · 0 comments
Open

blueprint-execution: Can we remove the "list sleds from db" step? #7526

jgallagher opened this issue Feb 12, 2025 · 0 comments

Comments

@jgallagher
Copy link
Contributor

Prior to the execution steps that send requests to sled-agents, blueprint execution currently queries the sled table for all in-service sleds:

let sleds_by_id: BTreeMap<SledUuid, _> = datastore
.sled_list_all_batched(&opctx, SledFilter::InService)
.await

This seems a little confusing - doesn't the blueprint being executed already list the sleds that it believes to be in service?

In practice, the returned list of sleds is used for two things:

  1. In the three PUT-to-sled-agent steps, we use sled.sled_agent_address() (this comes from the ip+port columns in the sled table)
  2. In the deploy_dns step, we use sled.is_scrimlet() to find the scrimlets to set up DNS entries for services in the switch zones

I think we could easily address 1 - we could either infer a sled's underlay address from the underlay IPs of any zones it contains plus the known port sled-agent listens on, or we could add the sled-agent underlay addresses to the blueprint explicitly.

I'm a little less sure about 2 - should the planner be aware of which sleds were scrimlets at the time of planning? Will it need to do this as we get into live update?

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

No branches or pull requests

1 participant