Commit ab718d7
committed
Add the first part of a multirack join service
Add a new multirack join service tokio task that runs inside the
sled-agent on demand. It's run in the same manner as RSS, shares
the same context, and is mutually exclusive with RSS.
Two new bootstrap-agent-lockstep APIs were added in order to
trigger a multirack join and get its ongoing status. Unlike
RSS, a `MultirackJoinRequest` can be resent in the case of a typo,
misconfiguration, or runtime error. In many cases this will allow the
join process to correct itself without requiring a clean slate of the
rack. This is all managed via input and output watch channels and
therefore obviates the need for worrying about channel bounds.
As this PR started to get large, I have only implemented the first
part of the multirack join service which sets up the trust quorum.
This was enough to validate the starting of the service, the
watch channel plumbing, and the ability to correct mistakes in the
`MultirackJoinRequest` that triggers the behavior of the service.
In order to test this new API, I used
[voxel](oxidecomputer/voxel#13) with a 2 rack
configuration of 3 sleds each. On the second, non-RSS sled, I logged
into `g3` and ran curl requests against the bootstrap-agent-lockstep
server. In order to help this testing, I created a one off tool to
generate example JSON output from a hardcoded configuration. I expect
this to be useful for the remainder of the implementation and then
removed once the implementation is complete.
Another large chunk of this code is just integrating with the existing
bootstrap agent, wicket, and wicketd functionality. This should remain
static for the remainder of the implementation.1 parent 98f39f7 commit ab718d7
25 files changed
Lines changed: 2045 additions & 272 deletions
File tree
- openapi
- sled-agent
- bootstrap-agent-lockstep-api
- src
- bootstrap-agent-lockstep-types
- examples
- src
- bootstrap-common
- src
- multirack-join
- src
- rack-setup
- src
- src/bootstrap
- trust-quorum/types/versions/src/initial
- uuid-kinds/src
- wicketd-commission-types/versions/src/initial
- wicketd/src/commission
- wicket/src/ui/panes
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
150 | 150 | | |
151 | 151 | | |
152 | 152 | | |
| 153 | + | |
153 | 154 | | |
154 | 155 | | |
155 | 156 | | |
156 | 157 | | |
| 158 | + | |
157 | 159 | | |
158 | 160 | | |
159 | 161 | | |
| |||
345 | 347 | | |
346 | 348 | | |
347 | 349 | | |
| 350 | + | |
348 | 351 | | |
349 | 352 | | |
350 | 353 | | |
351 | 354 | | |
| 355 | + | |
352 | 356 | | |
353 | 357 | | |
354 | 358 | | |
| |||
812 | 816 | | |
813 | 817 | | |
814 | 818 | | |
| 819 | + | |
815 | 820 | | |
816 | 821 | | |
817 | 822 | | |
818 | 823 | | |
819 | 824 | | |
| 825 | + | |
820 | 826 | | |
821 | 827 | | |
822 | 828 | | |
| |||
0 commit comments