Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
f2e8de3
[reconfigurator] CLI support for setting RoT versions
karencfv Jun 23, 2025
fd098df
expectorate
karencfv Jun 24, 2025
799b169
planner support for configuring RoT update
karencfv Jun 25, 2025
914d4d5
set update hierarchy and clean up
karencfv Jun 25, 2025
3c7cc8b
Remove unnecessary todo
karencfv Jun 25, 2025
13c7934
Merge main
karencfv Jun 26, 2025
d9ca092
Add additional checks
karencfv Jun 26, 2025
7f8904e
clean up
karencfv Jun 26, 2025
6bee79f
Remove additional arguments
karencfv Jun 27, 2025
6e0f444
Add information to sled-show command
karencfv Jun 27, 2025
4827e16
clean up
karencfv Jun 27, 2025
e045766
clean up
karencfv Jun 27, 2025
3c4fe9f
merge main
karencfv Jul 9, 2025
f515fb7
fixes after merge
karencfv Jul 9, 2025
c44d9bf
address style comments
karencfv Jul 9, 2025
031a18f
fix target-release test
karencfv Jul 9, 2025
642fa92
Address comments
karencfv Jul 9, 2025
0434297
address comments
karencfv Jul 10, 2025
599589f
fmt
karencfv Jul 10, 2025
1ab8622
working test_basic
karencfv Jul 10, 2025
88702d0
Adapt sequential test
karencfv Jul 11, 2025
ce03cca
get all the tests passing
karencfv Jul 11, 2025
4f3b735
get all the tests passing
karencfv Jul 11, 2025
413ade6
clean up
karencfv Jul 11, 2025
6899baa
clean up
karencfv Jul 11, 2025
4013357
clippy and fmt
karencfv Jul 11, 2025
e6c655d
Merge main
karencfv Jul 16, 2025
4abbd8e
expectorate
karencfv Jul 16, 2025
91fea61
why did I change this in the first place?
karencfv Jul 17, 2025
370bceb
add some more tests
karencfv Jul 17, 2025
8cc29ae
merge main
karencfv Jul 22, 2025
cd9cea3
fixes after merging main
karencfv Jul 22, 2025
b71f5b8
small fixes
karencfv Jul 23, 2025
ccf738a
Merge main
karencfv Jul 28, 2025
6c75bc6
fixes after merge
karencfv Jul 28, 2025
d164d9c
let's reorder output
karencfv Jul 28, 2025
bd64e5d
merge main
karencfv Aug 6, 2025
3125439
Fix tests after merge
karencfv Aug 7, 2025
ce4247e
Fix tests after merge
karencfv Aug 7, 2025
6b635ea
Merge branch 'main' into rot-planner
karencfv Aug 7, 2025
374f613
refactor tests
karencfv Aug 7, 2025
a63233b
Improve tests
karencfv Aug 7, 2025
77c2409
Improve testing
karencfv Aug 7, 2025
5ecf6a5
expectorate
karencfv Aug 7, 2025
2456fda
Address comments
karencfv Aug 8, 2025
46526ee
Extract rot code into its own submodule
karencfv Aug 8, 2025
d4f31f9
roll back cmds-target-release rot testing
karencfv Aug 8, 2025
5da11b0
Address comments
karencfv Aug 11, 2025
82b45e0
typo
karencfv Aug 11, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions dev-tools/reconfigurator-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ iddqd.workspace = true
indent_write.workspace = true
internal-dns-types.workspace = true
itertools.workspace = true
gateway-types.workspace = true
newtype-uuid.workspace = true
nexus-inventory.workspace = true
nexus-reconfigurator-blippy.workspace = true
Expand Down
91 changes: 88 additions & 3 deletions dev-tools/reconfigurator-cli/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ fn process_command(
Commands::SledUpdateInstallDataset(args) => {
cmd_sled_update_install_dataset(sim, args)
}
Commands::SledUpdateRot(args) => cmd_sled_update_rot(sim, args),
Commands::SledUpdateSp(args) => cmd_sled_update_sp(sim, args),
Commands::SledUpdateRotBootloader(args) => {
cmd_sled_update_rot_bootlaoder(sim, args)
Expand Down Expand Up @@ -293,6 +294,8 @@ enum Commands {
SledSet(SledSetArgs),
/// update the install dataset on a sled, simulating a mupdate
SledUpdateInstallDataset(SledUpdateInstallDatasetArgs),
/// simulate updating the sled's RoT versions
SledUpdateRot(SledUpdateRotArgs),
/// simulate updating the sled's RoT Bootloader versions
SledUpdateRotBootloader(SledUpdateRotBootloaderArgs),
/// simulate updating the sled's SP versions
Expand Down Expand Up @@ -528,6 +531,20 @@ struct SledUpdateSpArgs {
inactive: Option<ExpectedVersion>,
}

#[derive(Debug, Args)]
struct SledUpdateRotArgs {
/// id of the sled
sled_id: SledUuid,

/// sets the version reported for the RoT slot a
#[clap(long, required_unless_present_any = &["slot_b"])]
slot_a: Option<ExpectedVersion>,

/// sets the version reported for the RoT slot b
#[clap(long, required_unless_present_any = &["slot_a"])]
slot_b: Option<ExpectedVersion>,
}

#[derive(Debug, Args)]
struct SledSetMupdateOverrideArgs {
#[clap(flatten)]
Expand Down Expand Up @@ -1380,6 +1397,15 @@ fn cmd_sled_show(
let stage0_next_version = description.sled_stage0_next_version(sled_id)?;
let sp_active_version = description.sled_sp_active_version(sled_id)?;
let sp_inactive_version = description.sled_sp_inactive_version(sled_id)?;
let rot_active_slot = description.sled_rot_active_slot(sled_id)?;
let rot_slot_a_version = description.sled_rot_slot_a_version(sled_id)?;
let rot_slot_b_version = description.sled_rot_slot_b_version(sled_id)?;
let rot_persistent_boot_preference =
description.sled_rot_persistent_boot_preference(sled_id)?;
let rot_pending_persistent_boot_preference =
description.sled_rot_pending_persistent_boot_preference(sled_id)?;
let rot_transient_boot_preference =
description.sled_rot_transient_boot_preference(sled_id)?;
let planning_input = description
.to_planning_input_builder()
.context("failed to generate planning_input builder")?
Expand All @@ -1390,14 +1416,32 @@ fn cmd_sled_show(
swriteln!(s, "sled {} ({}, {})", sled_id, sled.policy, sled.state);
swriteln!(s, "serial {}", sled.baseboard_id.serial_number);
swriteln!(s, "subnet {}", sled_resources.subnet.net());
swriteln!(s, "RoT bootloader stage 0 version: {:?}", stage0_version);
swriteln!(s, "SP active version: {:?}", sp_active_version);
swriteln!(s, "SP inactive version: {:?}", sp_inactive_version);
swriteln!(s, "RoT bootloader stage 0 version: {:?}", stage0_version);
swriteln!(
s,
"RoT bootloader stage 0 next version: {:?}",
stage0_next_version
);
swriteln!(s, "SP active version: {:?}", sp_active_version);
swriteln!(s, "SP inactive version: {:?}", sp_inactive_version);
swriteln!(s, "RoT active slot: {}", rot_active_slot);
swriteln!(s, "RoT slot A version: {:?}", rot_slot_a_version);
swriteln!(s, "RoT slot B version: {:?}", rot_slot_b_version);
swriteln!(
s,
"RoT persistent boot preference: {}",
rot_persistent_boot_preference
);
swriteln!(
s,
"RoT pending persistent boot preference: {:?}",
rot_pending_persistent_boot_preference
);
swriteln!(
s,
"RoT transient boot preference: {:?}",
rot_transient_boot_preference
);
swriteln!(s, "zpools ({}):", sled_resources.zpools.len());
for (zpool, disk) in &sled_resources.zpools {
swriteln!(s, " {:?}", zpool);
Expand Down Expand Up @@ -1604,6 +1648,47 @@ fn cmd_sled_update_sp(
Ok(Some(format!("set sled {} SP versions: {}", sled_id, labels.join(", "))))
}

fn cmd_sled_update_rot(
sim: &mut ReconfiguratorSim,
args: SledUpdateRotArgs,
) -> anyhow::Result<Option<String>> {
let mut labels = Vec::new();

if let Some(slot_a) = &args.slot_a {
labels.push(format!("slot a -> {}", slot_a));
}
if let Some(slot_b) = &args.slot_b {
labels.push(format!("slot b -> {}", slot_b));
}

assert!(
!labels.is_empty(),
"clap configuration requires that at least one argument is specified"
);

let mut state = sim.current_state().to_mut();
state.system_mut().description_mut().sled_update_rot_versions(
args.sled_id,
args.slot_a,
args.slot_b,
)?;

sim.commit_and_bump(
format!(
"reconfigurator-cli sled-update-rot: {}: {}",
args.sled_id,
labels.join(", "),
),
state,
);

Ok(Some(format!(
"set sled {} RoT settings: {}",
args.sled_id,
labels.join(", ")
)))
}

fn cmd_inventory_list(
sim: &mut ReconfiguratorSim,
) -> anyhow::Result<Option<String>> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,4 +74,4 @@ blueprint-diff 7f976e0d-d2a5-4eeb-9e82-c82bc2824aba 9034c710-3e57-45f3-99e5-4316

# We should continue walking through the update. We need to build out a
# reconfigurator-cli subcommand to simulate updated zone image sources (just
# like we have sled-update-sp for simulated SP updates).
# like we have sled-update-sp for simulated SP updates).
12 changes: 12 additions & 0 deletions dev-tools/reconfigurator-cli/tests/input/cmds.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,18 @@ sled-add 90c1102a-b9f5-4d88-92a2-60d54a2d98cc
sled-add 04ef3330-c682-4a08-8def-fcc4bef31bcd --policy non-provisionable
sled-list

sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a --slot-a 1.0.0
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a --slot-b 2.0.0
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a --slot-a 3.0.0
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a --slot-a 4.0.0 --slot-b invalid
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-rot dde1c0e2-b10d-4621-b420-f179f7a7a00a --slot-a 4.0.0 --slot-b 5.0.0
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a

sled-update-sp dde1c0e2-b10d-4621-b420-f179f7a7a00a
sled-update-sp dde1c0e2-b10d-4621-b420-f179f7a7a00a --active 1.0.0
sled-show dde1c0e2-b10d-4621-b420-f179f7a7a00a
Expand Down
45 changes: 30 additions & 15 deletions dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout
Original file line number Diff line number Diff line change
Expand Up @@ -42,10 +42,16 @@ T ENA ID PARENT
sled 2eb69596-f081-4e2d-9425-9994926e0832 (in service, active)
serial serial1
subnet fd00:1122:3344:102::/64
RoT bootloader stage 0 version: Some("0.0.1")
RoT bootloader stage 0 next version: None
SP active version: Some("0.0.1")
SP active version: Some("0.0.1")
SP inactive version: None
RoT bootloader stage 0 version: Some("0.0.1")
RoT bootloader stage 0 next version: None
RoT active slot: A
RoT slot A version: Some("0.0.2")
RoT slot B version: None
RoT persistent boot preference: A
RoT pending persistent boot preference: None
RoT transient boot preference: None
zpools (10):
055c4910-b641-46d9-b52d-313aae9d9cbf (zpool)
SledDisk { disk_identity: DiskIdentity { vendor: "fake-vendor", model: "fake-model", serial: "serial-055c4910-b641-46d9-b52d-313aae9d9cbf" }, disk_id: 6a0cb52f-5cc2-48a5-9f44-ac8dea3ac45b (physical_disk), policy: InService, state: Active }
Expand Down Expand Up @@ -429,10 +435,16 @@ T ENA ID PARENT
sled 89d02b1b-478c-401a-8e28-7a26f74fa41b (in service, active)
serial serial0
subnet fd00:1122:3344:101::/64
RoT bootloader stage 0 version: Some("0.0.1")
RoT bootloader stage 0 next version: None
SP active version: Some("0.0.1")
SP active version: Some("0.0.1")
SP inactive version: None
RoT bootloader stage 0 version: Some("0.0.1")
RoT bootloader stage 0 next version: None
RoT active slot: A
RoT slot A version: Some("0.0.2")
RoT slot B version: None
RoT persistent boot preference: A
RoT pending persistent boot preference: None
RoT transient boot preference: None
zpools (4):
0477165a-a72e-4814-b8d6-74aa02cb2040 (zpool)
SledDisk { disk_identity: DiskIdentity { vendor: "fake-vendor", model: "fake-model", serial: "serial-0477165a-a72e-4814-b8d6-74aa02cb2040" }, disk_id: 6a5a31ab-4edc-44e0-a7a1-4190bfe582f7 (physical_disk), policy: InService, state: Active }
Expand Down Expand Up @@ -1037,9 +1049,10 @@ Sled serial0
A 0101010101010101010101010101010101010101010101010101010101010101
B 0202020202020202020202020202020202020202020202020202020202020202
cabooses:
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
RotSlotA SimRot SimRot 0.0.2 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
RoT pages:
SLOT DATA_BASE64
RoT: active slot: slot A
Expand All @@ -1060,9 +1073,10 @@ Sled serial1
A 0101010101010101010101010101010101010101010101010101010101010101
B 0202020202020202020202020202020202020202020202020202020202020202
cabooses:
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
RotSlotA SimRot SimRot 0.0.2 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
RoT pages:
SLOT DATA_BASE64
RoT: active slot: slot A
Expand All @@ -1083,9 +1097,10 @@ Sled serial2
A 0101010101010101010101010101010101010101010101010101010101010101
B 0202020202020202020202020202020202020202020202020202020202020202
cabooses:
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
SLOT BOARD NAME VERSION GIT_COMMIT SIGN
SpSlot0 SimGimletSp SimGimletSp 0.0.1 unknown n/a
RotSlotA SimRot SimRot 0.0.2 unknown n/a
Stage0 SimRotStage0 SimRotStage0 0.0.1 unknown n/a
RoT pages:
SLOT DATA_BASE64
RoT: active slot: slot A
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ INFO extracting uploaded archive to <EXTRACTING_UPLOADED_ARCHIVE_TO_REDACTED>
INFO created directory to store extracted artifacts, path: <CREATED_DIRECTORY_TO_STORE_EXTRACTED_ARTIFACTS_PATH_REDACTED>
INFO added artifact, name: installinator_document, kind: installinator_document, version: 1.0.0, hash: c6ae866031d1183094c92cde9d9d1fd5f18356abc81a842ce31471b473fd5582, length: 367
INFO added artifact, name: SimGimletSp, kind: gimlet_sp, version: 1.0.0, hash: 7e6667e646ad001b54c8365a3d309c03f89c59102723d38d01697ee8079fe670, length: 747
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRotStage0, kind: gimlet_rot_bootloader, version: 1.0.0, hash: 005ea358f1cd316df42465b1e3a0334ea22cc0c0442cf9ddf9b42fbf49780236, length: 750
INFO added artifact, name: fake-host, kind: host_phase_1, version: 1.0.0, hash: 2053f8594971bbf0a7326c833e2ffc12b065b9d823b9c0b967d275fa595e4e89, length: 524288
INFO added artifact, name: fake-host, kind: host_phase_2, version: 1.0.0, hash: f3dd0c7a1bd4500ea0d8bcf67581f576d47752b2f1998a4cb0f0c3155c483008, length: 1048576
Expand Down Expand Up @@ -821,8 +821,8 @@ INFO extracting uploaded archive to <EXTRACTING_UPLOADED_ARCHIVE_TO_REDACTED>
INFO created directory to store extracted artifacts, path: <CREATED_DIRECTORY_TO_STORE_EXTRACTED_ARTIFACTS_PATH_REDACTED>
INFO added artifact, name: installinator_document, kind: installinator_document, version: 1.0.0, hash: c6ae866031d1183094c92cde9d9d1fd5f18356abc81a842ce31471b473fd5582, length: 367
INFO added artifact, name: SimGimletSp, kind: gimlet_sp, version: 1.0.0, hash: 7e6667e646ad001b54c8365a3d309c03f89c59102723d38d01697ee8079fe670, length: 747
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRotStage0, kind: gimlet_rot_bootloader, version: 1.0.0, hash: 005ea358f1cd316df42465b1e3a0334ea22cc0c0442cf9ddf9b42fbf49780236, length: 750
INFO added artifact, name: fake-host, kind: host_phase_1, version: 1.0.0, hash: 2053f8594971bbf0a7326c833e2ffc12b065b9d823b9c0b967d275fa595e4e89, length: 524288
INFO added artifact, name: fake-host, kind: host_phase_2, version: 1.0.0, hash: f3dd0c7a1bd4500ea0d8bcf67581f576d47752b2f1998a4cb0f0c3155c483008, length: 1048576
Expand Down Expand Up @@ -2136,10 +2136,13 @@ INFO sufficient InternalDns zones exist in plan, desired_count: 3, current_count
INFO sufficient ExternalDns zones exist in plan, desired_count: 3, current_count: 3
INFO sufficient Nexus zones exist in plan, desired_count: 3, current_count: 3
INFO sufficient Oximeter zones exist in plan, desired_count: 0, current_count: 0
WARN cannot configure RoT update for board (missing sign in caboose from inventory), serial_number: serial0, part_number: model0
WARN cannot configure SP update for board (no matching artifact), serial_number: serial0, part_number: model0
INFO skipping board for MGS-driven update, serial_number: serial0, part_number: model0
WARN cannot configure RoT update for board (missing sign in caboose from inventory), serial_number: serial1, part_number: model1
WARN cannot configure SP update for board (no matching artifact), serial_number: serial1, part_number: model1
INFO skipping board for MGS-driven update, serial_number: serial1, part_number: model1
WARN cannot configure RoT update for board (missing sign in caboose from inventory), serial_number: serial2, part_number: model2
WARN cannot configure SP update for board (no matching artifact), serial_number: serial2, part_number: model2
INFO skipping board for MGS-driven update, serial_number: serial2, part_number: model2
INFO ran out of boards for MGS-driven update
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ INFO extracting uploaded archive to <EXTRACTING_UPLOADED_ARCHIVE_TO_REDACTED>
INFO created directory to store extracted artifacts, path: <CREATED_DIRECTORY_TO_STORE_EXTRACTED_ARTIFACTS_PATH_REDACTED>
INFO added artifact, name: installinator_document, kind: installinator_document, version: 1.0.0, hash: c6ae866031d1183094c92cde9d9d1fd5f18356abc81a842ce31471b473fd5582, length: 367
INFO added artifact, name: SimGimletSp, kind: gimlet_sp, version: 1.0.0, hash: 7e6667e646ad001b54c8365a3d309c03f89c59102723d38d01697ee8079fe670, length: 747
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: fake-gimlet-rot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_a, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRot, kind: gimlet_rot_image_b, version: 1.0.0, hash: 04e4a7fdb84acca92c8fd3235e26d64ea61bef8a5f98202589fd346989c5720a, length: 735
INFO added artifact, name: SimRotStage0, kind: gimlet_rot_bootloader, version: 1.0.0, hash: 005ea358f1cd316df42465b1e3a0334ea22cc0c0442cf9ddf9b42fbf49780236, length: 750
INFO added artifact, name: fake-host, kind: host_phase_1, version: 1.0.0, hash: 2053f8594971bbf0a7326c833e2ffc12b065b9d823b9c0b967d275fa595e4e89, length: 524288
INFO added artifact, name: fake-host, kind: host_phase_2, version: 1.0.0, hash: f3dd0c7a1bd4500ea0d8bcf67581f576d47752b2f1998a4cb0f0c3155c483008, length: 1048576
Expand Down
7 changes: 7 additions & 0 deletions dev-tools/reconfigurator-cli/tests/output/cmds-stderr
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
error: the following required arguments were not provided:
--slot-a <SLOT_A>
--slot-b <SLOT_B>

Usage: sled-update-rot --slot-a <SLOT_A> --slot-b <SLOT_B> <SLED_ID>

For more information, try '--help'.
error: the following required arguments were not provided:
--active <ACTIVE>
--inactive <INACTIVE>
Expand Down
Loading
Loading