nexus: use debug dropbox to save Reconfigurator state#10306
nexus: use debug dropbox to save Reconfigurator state#10306davepacheco wants to merge 1 commit intomainfrom
Conversation
ce37d0b to
aefe883
Compare
| omicron-cockroach-metrics = { path = "cockroach-metrics" } | ||
| omicron-common = { path = "common" } | ||
| # XXX-dap publish | ||
| omicron-debug-dropbox = { git = "https://github.com/oxidecomputer/omicron-debug-dropbox", rev = "13e5461bc3a725789ae6463d2b3b7d64528ffdde" } |
There was a problem hiding this comment.
Once oxidecomputer/omicron-debug-dropbox#1 lands, we can publish that crate to crates.io and then update this reference.
|
This is ready for review. I'm leaving it "draft" so I don't accidentally land it with the Cargo.toml change unfixed. |
5cdfcfa to
d575bc3
Compare
jgallagher
left a comment
There was a problem hiding this comment.
LGTM - only one real concern and a few nits.
| rx_config_loader, | ||
| rx_inventory, | ||
| rx_loader.clone(), | ||
| debug_dropbox, |
There was a problem hiding this comment.
Could/should we update this test to confirm the planner wrote the expected (or at least a valid) debug state file into the dropbox?
| BlueprintDebugAction::Plan => "plan", | ||
| BlueprintDebugAction::Target => "target", | ||
| }; | ||
| let time_str = blueprint.time_created.format("%Y%m%dT%H%MZ"); |
There was a problem hiding this comment.
Could this be
| let time_str = blueprint.time_created.format("%Y%m%dT%H%MZ"); | |
| let time_str = blueprint.time_created.to_rfc3339_opts(SecondsFormat::Secs, true); |
? I guess that's slightly different in that it includes -s and :s - is the idea that those are annoying in filenames?
| /// someone explicitly ran the planner using the Nexus internal API | ||
| /// (likely a person running `omdb`) | ||
| Plan, | ||
| /// someone explicit set the target blueprint using the Nexus internal API |
There was a problem hiding this comment.
| /// someone explicit set the target blueprint using the Nexus internal API | |
| /// someone explicitly set the target blueprint using the Nexus internal API |
| input, | ||
| vec![(*collection).clone()], | ||
| vec![(*parent).clone(), blueprint.clone()], | ||
| target, |
There was a problem hiding this comment.
Will it be confusing if we persist a state claiming this new blueprint is the target, but then fail to make it the target and fail to remove it because sled-agent already slurped it up? We've now archived a state file that claims a blueprint was the target when it never was.
Part of #7278.