blueprint-execution: Can we remove the "list sleds from db" step?
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Start in nexus/reconfigurator/execution/src/lib.rs around lines 281-283 and trace how the sled query feeds the three PUT-to-sled-agent steps and deploy_dns. Read the blueprint and planner representations next, then determine whether sled-agent addresses and scrimlet identity belong in the blueprint. Done means execution no longer relies on the sled table for this information, with tests covering both paths.
Written by the indexing model from the issue text.
Description
Prior to the execution steps that send requests to sled-agents, blueprint execution currently queries the sled table for all in-service sleds: https://github.com/oxidecomputer/omicron/blob/31767f6581ed5e109885632e2f10d4615c225d48/nexus/reconfigurator/execution/src/lib.rs#L281-L283
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:
- In the three
PUT-to-sled-agent steps, we usesled.sled_agent_address()(this comes from theip+portcolumns in thesledtable) - In the
deploy_dnsstep, we usesled.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?
- Dominant language
- Rust
- Stars
- 572
- Forks
- 97
- Avg merge
- 2d 12h
- Merged PRs (30d)
- 96
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from oxidecomputer/omicron
-
Difficulty 1/5 Under an hour Newbie friendliness 88/100
oxidecomputer/omicron#11269 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
oxidecomputer/omicron#11266 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
oxidecomputer/omicron#11260 · 1 comment ·
-
wicket's errors should be better when trying to read sensitive data from ssh without a pseudo-tty Open
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
oxidecomputer/omicron#11148 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
oxidecomputer/omicron#10907 ·
All issues in oxidecomputer/omicron
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100