Skip to content

Commit d1bdb3c

Browse files
authored
(7/N) Use nexus_generation, update it (#8936)
- Actually update nexus generation within the top-level blueprint and Nexus zones - Deploy new and old nexus zones concurrently # Blueprint Planner - Automatically determine nexus generation when provisioning new Nexus zones, based on existing deployed zones - Update the logic for provisioning nexus zones, to deploy old and new nexus images side-by-side - Update the logic for expunging nexus zones, to only do so when running from a "newer" nexus - Add a planning stage to bump the top-level "nexus generation", if appropriate, which would trigger the old Nexuses to quiesce. Fixes #8843, #8854
1 parent 4b62dfc commit d1bdb3c

File tree

10 files changed

+2326
-373
lines changed

10 files changed

+2326
-373
lines changed

dev-tools/reconfigurator-cli/tests/input/cmds-target-release.txt

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -408,10 +408,29 @@ inventory-generate
408408
blueprint-plan latest latest
409409
blueprint-diff latest
410410

411-
# The previous step updated the last non-Nexus zone on the final sled. We should
412-
# now see a blueprint where every in-service zone (other than Nexus) has an
413-
# image source set to an artifact from our TUF repo.
414-
blueprint-show latest
411+
sled-set d81c6a84-79b8-4958-ae41-ea46c9b19763 omicron-config latest
412+
inventory-generate
413+
414+
# Add Nexus zones on three sleds
415+
blueprint-plan latest latest
416+
blueprint-diff latest
417+
418+
# Propagate configs to the sleds which should be running Nexus
419+
sled-set 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c omicron-config latest
420+
sled-set 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 omicron-config latest
421+
sled-set d81c6a84-79b8-4958-ae41-ea46c9b19763 omicron-config latest
422+
inventory-generate
415423

416-
# We ought to update the inventory for the final sled and then step through
417-
# the Nexus handoff process, but that work is still in progress.
424+
# Update the Nexus generation from 1 -> 2, initiating
425+
# quiesce of the old Nexuses
426+
blueprint-plan latest latest
427+
blueprint-diff latest
428+
429+
# Expunge three Nexus zones, one at a time
430+
blueprint-plan latest latest
431+
blueprint-plan latest latest
432+
blueprint-plan latest latest
433+
434+
# Attempt to plan one more blueprint.
435+
# There should be no changes attempted here.
436+
blueprint-plan latest latest

dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-update-flow-stdout

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,7 @@ planning report for blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736:
511511
- sleds have remove mupdate override set in blueprint: 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6, d81c6a84-79b8-4958-ae41-ea46c9b19763
512512
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
513513
* zone updates waiting on zone add blockers
514+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
514515

515516

516517

@@ -786,6 +787,7 @@ planning report for blueprint 626487fa-7139-45ec-8416-902271fc730b:
786787
- sleds have remove mupdate override set in blueprint: 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6, d81c6a84-79b8-4958-ae41-ea46c9b19763
787788
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
788789
* zone updates waiting on zone add blockers
790+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
789791

790792

791793

@@ -914,6 +916,7 @@ planning report for blueprint c1a0d242-9160-40f4-96ae-61f8f40a0b1b:
914916
- sleds have remove mupdate override set in blueprint: d81c6a84-79b8-4958-ae41-ea46c9b19763
915917
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
916918
* zone updates waiting on zone add blockers
919+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
917920

918921

919922

@@ -1101,6 +1104,7 @@ planning report for blueprint afb09faf-a586-4483-9289-04d4f1d8ba23:
11011104
- current target release generation (3) is lower than minimum required by blueprint (4)
11021105
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
11031106
* zone updates waiting on zone add blockers
1107+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
11041108

11051109

11061110

@@ -1278,6 +1282,7 @@ planning report for blueprint afb09faf-a586-4483-9289-04d4f1d8ba23:
12781282
- current target release generation (3) is lower than minimum required by blueprint (4)
12791283
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
12801284
* zone updates waiting on zone add blockers
1285+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
12811286

12821287

12831288

@@ -1420,6 +1425,7 @@ planning report for blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700:
14201425
* zone adds and updates are blocked:
14211426
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
14221427
* zone updates waiting on zone add blockers
1428+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
14231429

14241430

14251431

@@ -1597,6 +1603,7 @@ planning report for blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700:
15971603
* zone adds and updates are blocked:
15981604
- sleds have mupdate override errors: 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
15991605
* zone updates waiting on zone add blockers
1606+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
16001607

16011608

16021609

@@ -1714,7 +1721,9 @@ planning report for blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1:
17141721
* skipping noop zone image source check on sled d81c6a84-79b8-4958-ae41-ea46c9b19763: all 6 zones are already from artifacts
17151722
* 1 pending MGS update:
17161723
* model0:serial0: RotBootloader(PendingMgsUpdateRotBootloaderDetails { expected_stage0_version: ArtifactVersion("0.0.1"), expected_stage0_next_version: NoValidVersion })
1724+
* only placed 0/2 desired nexus zones
17171725
* zone updates waiting on pending MGS updates (RoT / SP / Host OS / etc.)
1726+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
17181727

17191728

17201729

@@ -1896,7 +1905,9 @@ planning report for blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1:
18961905
* skipping noop zone image source check on sled d81c6a84-79b8-4958-ae41-ea46c9b19763: all 6 zones are already from artifacts
18971906
* 1 pending MGS update:
18981907
* model0:serial0: RotBootloader(PendingMgsUpdateRotBootloaderDetails { expected_stage0_version: ArtifactVersion("0.0.1"), expected_stage0_next_version: NoValidVersion })
1908+
* only placed 0/2 desired nexus zones
18991909
* zone updates waiting on pending MGS updates (RoT / SP / Host OS / etc.)
1910+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
19001911

19011912

19021913

@@ -2014,7 +2025,7 @@ INFO skipping board for MGS-driven update, serial_number: serial0, part_number:
20142025
INFO skipping board for MGS-driven update, serial_number: serial1, part_number: model1
20152026
INFO skipping board for MGS-driven update, serial_number: serial2, part_number: model2
20162027
INFO ran out of boards for MGS-driven update
2017-
INFO some zones not yet up-to-date, sled_id: 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6, zones_currently_updating: [ZoneCurrentlyUpdating { zone_id: 0c71b3b2-6ceb-4e8f-b020-b08675e83038 (service), zone_kind: Nexus, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("0e32b4a3e5d3668bb1d6a16fb06b74dc60b973fa479dcee0aae3adbb52bf1388") }, inv_image_source: InstallDataset } }, ZoneCurrentlyUpdating { zone_id: 427ec88f-f467-42fa-9bbb-66a91a36103c (service), zone_kind: InternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("ffbf1373f7ee08dddd74c53ed2a94e7c4c572a982d3a9bc94000c6956b700c6a") }, inv_image_source: InstallDataset } }, ZoneCurrentlyUpdating { zone_id: 5199c033-4cf9-4ab6-8ae7-566bd7606363 (service), zone_kind: Crucible, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("6f17cf65fb5a5bec5542dd07c03cd0acc01e59130f02c532c8d848ecae810047") }, inv_image_source: InstallDataset } }, ZoneCurrentlyUpdating { zone_id: 6444f8a5-6465-4f0b-a549-1993c113569c (service), zone_kind: InternalNtp, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("67593d686ed04a1709f93972b71f4ebc148a9362120f65d239943e814a9a7439") }, inv_image_source: InstallDataset } }, ZoneCurrentlyUpdating { zone_id: 803bfb63-c246-41db-b0da-d3b87ddfc63d (service), zone_kind: ExternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("ccca13ed19b8731f9adaf0d6203b02ea3b9ede4fa426b9fac0a07ce95440046d") }, inv_image_source: InstallDataset } }, ZoneCurrentlyUpdating { zone_id: ba4994a8-23f9-4b1a-a84f-a08d74591389 (service), zone_kind: CruciblePantry, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("21f0ada306859c23917361f2e0b9235806c32607ec689c7e8cf16bb898bc5a02") }, inv_image_source: InstallDataset } }]
2028+
INFO some zones not yet up-to-date, zones_currently_updating: [ZonePropagationIncomplete { zone_id: 0c71b3b2-6ceb-4e8f-b020-b08675e83038 (service), zone_kind: Nexus, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("0e32b4a3e5d3668bb1d6a16fb06b74dc60b973fa479dcee0aae3adbb52bf1388") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 427ec88f-f467-42fa-9bbb-66a91a36103c (service), zone_kind: InternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("ffbf1373f7ee08dddd74c53ed2a94e7c4c572a982d3a9bc94000c6956b700c6a") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 5199c033-4cf9-4ab6-8ae7-566bd7606363 (service), zone_kind: Crucible, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("6f17cf65fb5a5bec5542dd07c03cd0acc01e59130f02c532c8d848ecae810047") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 6444f8a5-6465-4f0b-a549-1993c113569c (service), zone_kind: InternalNtp, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("67593d686ed04a1709f93972b71f4ebc148a9362120f65d239943e814a9a7439") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 803bfb63-c246-41db-b0da-d3b87ddfc63d (service), zone_kind: ExternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("ccca13ed19b8731f9adaf0d6203b02ea3b9ede4fa426b9fac0a07ce95440046d") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: ba4994a8-23f9-4b1a-a84f-a08d74591389 (service), zone_kind: CruciblePantry, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("1.0.0") }, hash: ArtifactHash("21f0ada306859c23917361f2e0b9235806c32607ec689c7e8cf16bb898bc5a02") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 3eeb8d49-eb1a-43f8-bb64-c2338421c2c6 (service), zone_kind: Nexus, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("e9b7035f41848a987a798c15ac424cc91dd662b1af0920d58d8aa1ebad7467b6") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: 75b220ba-a0f4-4872-8202-dc7c87f062d0 (service), zone_kind: CruciblePantry, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("3ff26dad96faa8f67251f5de40458b4f809d536bfe8572134da0e42c2fa12674") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: ea5b4030-b52f-44b2-8d70-45f15f987d01 (service), zone_kind: InternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("de30657a72b066b8ef1f56351a0a5d4d7000da0a62c4be9b2e949a107ca8a389") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: f10a4fb9-759f-4a65-b25e-5794ad2d07d8 (service), zone_kind: InternalNtp, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("d76e26198daed69cdae04490d7477f8c842e0dbe37d463eac0d0a8d3fb803095") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: f55647d4-5500-4ad3-893a-df45bd50d622 (service), zone_kind: Crucible, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("866f6a7c2e51c056fb722b5113e80181cc9cd8b712a0d3dbf1edc4ce29e5229e") }, inv_image_source: InstallDataset } }, ZonePropagationIncomplete { zone_id: f6ec9c67-946a-4da3-98d5-581f72ce8bf0 (service), zone_kind: ExternalDns, reason: ImageSourceMismatch { bp_image_source: Artifact { version: Available { version: ArtifactVersion("2.0.0") }, hash: ArtifactHash("f282c45771429f7bebf71f0cc668521066db57c6bb07fcfccdfb44825d3d930f") }, inv_image_source: InstallDataset } }]
20182029
generated blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300 based on parent blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1
20192030
blueprint source: planner with report:
20202031
planning report for blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300:
@@ -2023,6 +2034,8 @@ planning report for blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300:
20232034
* noop converting host phase 2 slot B to Artifact on sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c
20242035
* noop converting host phase 2 slot B to Artifact on sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6
20252036
* noop converting host phase 2 slot B to Artifact on sled d81c6a84-79b8-4958-ae41-ea46c9b19763
2037+
* only placed 0/2 desired nexus zones
2038+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
20262039

20272040

20282041

@@ -2262,6 +2275,7 @@ planning report for blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839:
22622275
- current target release generation (4) is lower than minimum required by blueprint (5)
22632276
- sleds have remove mupdate override set in blueprint: 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6
22642277
* zone updates waiting on zone add blockers
2278+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
22652279

22662280

22672281

@@ -2393,7 +2407,9 @@ planner config:
23932407
* adding zones despite being blocked, as specified by the `add_zones_with_mupdate_override` planner config option
23942408
* discretionary zone placement waiting for NTP zones on sleds: c3bc4c6d-fdde-4fc4-8493-89d2a1e5ee6b
23952409
* missing NTP zone on sled c3bc4c6d-fdde-4fc4-8493-89d2a1e5ee6b
2410+
* only placed 0/1 desired nexus zones
23962411
* zone updates waiting on zone add blockers
2412+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
23972413

23982414

23992415

dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ planning report for blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4:
189189
* zone adds and updates are blocked:
190190
- sleds have remove mupdate override set in blueprint: d81c6a84-79b8-4958-ae41-ea46c9b19763
191191
* zone updates waiting on zone add blockers
192+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
192193

193194

194195

@@ -429,6 +430,7 @@ planning report for blueprint af934083-59b5-4bf6-8966-6fb5292c29e1:
429430
* zone adds and updates are blocked:
430431
- sleds have remove mupdate override set in blueprint: d81c6a84-79b8-4958-ae41-ea46c9b19763
431432
* zone updates waiting on zone add blockers
433+
* waiting to update top-level nexus_generation: some non-Nexus zone are not yet updated
432434

433435

434436

0 commit comments

Comments
 (0)