diff --git a/dev-tools/omdb/tests/successes.out b/dev-tools/omdb/tests/successes.out index f5f91119769..f0a22c50ad4 100644 --- a/dev-tools/omdb/tests/successes.out +++ b/dev-tools/omdb/tests/successes.out @@ -1517,6 +1517,7 @@ parent: internal DNS version::: 1 external DNS version::: 2 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1640,6 +1641,7 @@ parent: internal DNS version::: 1 external DNS version::: 2 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1665,6 +1667,7 @@ to: blueprint ............. internal DNS version::: 1 (unchanged) external DNS version::: 2 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-add-sled-no-disks-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-add-sled-no-disks-stdout index 9591408f905..9ed40ac1396 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-add-sled-no-disks-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-add-sled-no-disks-stdout @@ -274,6 +274,7 @@ parent: dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout index 92232e4b5e6..f72ba26bf9c 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout @@ -399,6 +399,7 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -518,6 +519,7 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -633,6 +635,7 @@ to: blueprint 86db3308-f817-4626-8838-4085949a6a41 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -710,6 +713,7 @@ to: blueprint 86db3308-f817-4626-8838-4085949a6a41 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -787,6 +791,7 @@ to: blueprint 02697f74-b14a-4418-90f0-c28b2a3a6aa9 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1023,6 +1028,7 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1661,6 +1667,7 @@ to: blueprint 86db3308-f817-4626-8838-4085949a6a41 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-external-dns-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-external-dns-stdout index cf22a460ed9..c42a0d87b5c 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-external-dns-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-external-dns-stdout @@ -331,6 +331,7 @@ parent: 06c88262-f435-410e-ba98-101bed41ec27 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -463,6 +464,7 @@ to: blueprint 366b0b68-d80e-4bc1-abd3-dc69837847e0 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -826,6 +828,7 @@ parent: 3f00b694-1b16-4aaa-8f78-e6b3a527b434 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -967,6 +970,7 @@ to: blueprint 9c998c1d-1a7b-440a-ae0c-40f781dea6e2 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1333,6 +1337,7 @@ parent: 366b0b68-d80e-4bc1-abd3-dc69837847e0 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1467,6 +1472,7 @@ to: blueprint 2ac8c740-444d-42ff-8d66-9812a7e51288 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-internal-dns-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-internal-dns-stdout index d18a5821897..fc85f987f5f 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-internal-dns-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-newly-added-internal-dns-stdout @@ -329,6 +329,7 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -461,6 +462,7 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -624,6 +626,7 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -775,6 +778,7 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-host-phase-2-source-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-host-phase-2-source-stdout index 1dd547e695d..83e4a21a79c 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-host-phase-2-source-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-host-phase-2-source-stdout @@ -150,6 +150,7 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -310,6 +311,7 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -469,6 +471,7 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -620,6 +623,7 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -780,6 +784,7 @@ to: blueprint df06bb57-ad42-4431-9206-abff322896c7 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -939,6 +944,7 @@ parent: af934083-59b5-4bf6-8966-6fb5292c29e1 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-update-flow-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-update-flow-stdout index 39c1f30e8b9..74cedfee3f1 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-update-flow-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-update-flow-stdout @@ -687,6 +687,7 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) * target release min gen: 1 -> 3 + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -798,6 +799,7 @@ to: blueprint 626487fa-7139-45ec-8416-902271fc730b internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 3 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1034,6 +1036,7 @@ to: blueprint c1a0d242-9160-40f4-96ae-61f8f40a0b1b internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) * target release min gen: 3 -> 4 + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1261,6 +1264,7 @@ parent: c1a0d242-9160-40f4-96ae-61f8f40a0b1b internal DNS version::: 1 external DNS version::: 1 target release min gen: 4 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1338,6 +1342,7 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 4 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1578,6 +1583,7 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 internal DNS version::: 1 external DNS version::: 1 target release min gen: 4 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -1660,6 +1666,7 @@ to: blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 4 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1873,6 +1880,7 @@ parent: ce365dff-2cdb-4f35-a186-b15e20e1e700 internal DNS version::: 1 external DNS version::: 1 target release min gen: 4 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 1 Pending MGS-managed updates (all baseboards): @@ -1906,6 +1914,7 @@ to: blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 4 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2177,6 +2186,7 @@ to: blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 4 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2338,6 +2348,7 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) * target release min gen: 4 -> 5 + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2458,6 +2469,7 @@ to: blueprint 27e755bc-dc10-4647-853c-f89bb3a15a2c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 5 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout index 7c6ef00867e..35ab76aa8c8 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-noop-image-source-stdout @@ -352,6 +352,7 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -483,6 +484,7 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-set-mgs-updates-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-set-mgs-updates-stdout index 06bc28648a5..c6dc1b11171 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-set-mgs-updates-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-set-mgs-updates-stdout @@ -205,6 +205,7 @@ parent: 6ccc786b-17f1-4562-958f-5a7d9a5a15fd internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -416,6 +417,7 @@ parent: ad97e762-7bf1-45a6-a98f-60afb7e491c0 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 1 Pending MGS-managed updates (all baseboards): @@ -441,6 +443,7 @@ to: blueprint cca24b71-09b5-4042-9185-b33e9f2ebba0 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -478,6 +481,7 @@ to: blueprint ad97e762-7bf1-45a6-a98f-60afb7e491c0 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -707,6 +711,7 @@ parent: cca24b71-09b5-4042-9185-b33e9f2ebba0 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 1 Pending MGS-managed updates (all baseboards): @@ -732,6 +737,7 @@ to: blueprint 5bf974f3-81f9-455b-b24e-3099f765664c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -770,6 +776,7 @@ to: blueprint cca24b71-09b5-4042-9185-b33e9f2ebba0 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1001,6 +1008,7 @@ parent: 5bf974f3-81f9-455b-b24e-3099f765664c internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 2 Pending MGS-managed updates (all baseboards): @@ -1027,6 +1035,7 @@ to: blueprint 1b837a27-3be1-4fcb-8499-a921c839e1d0 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1255,6 +1264,7 @@ parent: 1b837a27-3be1-4fcb-8499-a921c839e1d0 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 1 Pending MGS-managed updates (all baseboards): @@ -1280,6 +1290,7 @@ to: blueprint 3682a71b-c6ca-4b7e-8f84-16df80c85960 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-set-remove-mupdate-override-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-set-remove-mupdate-override-stdout index e599ae2bdf7..200385eb7d5 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-set-remove-mupdate-override-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-set-remove-mupdate-override-stdout @@ -274,6 +274,7 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -397,6 +398,7 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -644,6 +646,7 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 internal DNS version::: 1 external DNS version::: 1 target release min gen: 2 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -663,6 +666,7 @@ to: blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) * target release min gen: 1 -> 2 + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-set-zone-images-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-set-zone-images-stdout index 14619df2366..97bca366c13 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-set-zone-images-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-set-zone-images-stdout @@ -107,6 +107,7 @@ parent: 1b013011-2062-4b48-b544-a32b23bce83a internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -225,6 +226,7 @@ parent: 9766ca20-38d4-4380-b005-e7c43c797e7c internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -329,6 +331,7 @@ to: blueprint f714e6ea-e85a-4d7d-93c2-a018744fe176 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -455,6 +458,7 @@ parent: bb128f06-a2e1-44c1-8874-4f789d0ff896 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 @@ -559,6 +563,7 @@ to: blueprint d9c572a1-a68c-4945-b1ec-5389bd588fe9 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout index 7938d183877..bdfc47b82b1 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout @@ -236,6 +236,7 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -296,6 +297,7 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -358,6 +360,7 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -429,6 +432,7 @@ to: blueprint df06bb57-ad42-4431-9206-abff322896c7 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -562,6 +566,7 @@ to: blueprint 7f976e0d-d2a5-4eeb-9e82-c82bc2824aba internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -622,6 +627,7 @@ to: blueprint 9034c710-3e57-45f3-99e5-4316145e87ac internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -683,6 +689,7 @@ to: blueprint d60afc57-f15d-476c-bd0f-b1071e2bb976 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -743,6 +750,7 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -805,6 +813,7 @@ to: blueprint 626487fa-7139-45ec-8416-902271fc730b internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -878,6 +887,7 @@ to: blueprint c1a0d242-9160-40f4-96ae-61f8f40a0b1b internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -946,6 +956,7 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1018,6 +1029,7 @@ to: blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1086,6 +1098,7 @@ to: blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1157,6 +1170,7 @@ to: blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1290,6 +1304,7 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1362,6 +1377,7 @@ to: blueprint 27e755bc-dc10-4647-853c-f89bb3a15a2c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1436,6 +1452,7 @@ to: blueprint 9f89efdf-a23e-4137-b7cc-79f4a91cbe1f internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1503,6 +1520,7 @@ to: blueprint 9a9e6c32-5a84-4020-a159-33dceff18d35 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1574,6 +1592,7 @@ to: blueprint 13cfdd24-52ba-4e94-8c83-02e3a48fc746 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1647,6 +1666,7 @@ to: blueprint b82656b0-a9be-433d-83d0-e2bdf371777a internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1717,6 +1737,7 @@ to: blueprint 31c84831-be52-4630-bc3f-128d72cd8f22 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1785,6 +1806,7 @@ to: blueprint 778e3f3a-58b1-4a5e-acff-d23c5d7124c2 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -1913,6 +1935,7 @@ to: blueprint 386a7ec3-7c2e-43cf-8f00-999e91e1d5e6 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2049,6 +2072,7 @@ to: blueprint e54a0836-53e1-4948-a3af-0b77165289b5 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2180,6 +2204,7 @@ to: blueprint 459a45a5-616e-421f-873b-2fb08c36205c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2317,6 +2342,7 @@ to: blueprint b2295597-5788-482e-acf9-1731ec63fbd2 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2449,6 +2475,7 @@ to: blueprint 6fad8fd4-e825-433f-b76d-495484e068ce internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2596,6 +2623,7 @@ to: blueprint 24b6e243-100c-428d-8ea6-35b504226f55 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2743,6 +2771,7 @@ to: blueprint 79fff7a2-2495-4c75-8465-4dc01bab48ce internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -2870,6 +2899,7 @@ to: blueprint 3bcc37b2-0c0b-44d0-b4ed-3bcb605e4312 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3020,6 +3050,7 @@ to: blueprint 4d2eb6f3-7eb1-443a-8e76-7ecf05da2f6d internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3171,6 +3202,7 @@ to: blueprint e2125c83-b255-45c9-bc9b-802cff09a812 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3309,6 +3341,7 @@ to: blueprint f4a6848e-d13c-46e1-8c6a-944f886d7ba3 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3447,6 +3480,7 @@ to: blueprint 834e4dbe-3b71-443d-bd4c-20e8253abc0c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3577,6 +3611,7 @@ to: blueprint d9c5c5e3-c532-4c45-9ef5-22cb00f6a2e1 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3697,6 +3732,7 @@ to: blueprint e2deb7c0-2262-49fe-855f-4250c22afb36 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3817,6 +3853,7 @@ to: blueprint 23ce505c-8991-44a5-8863-f2b906fba9cf internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -3956,6 +3993,7 @@ to: blueprint c0d81ea6-909c-4efb-964e-beff67f6da0d internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4095,6 +4133,7 @@ to: blueprint 60b55d33-5fec-4277-9864-935197eaead7 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4216,6 +4255,7 @@ to: blueprint aa13f40f-41ff-4b68-bee1-df2e1f805544 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4347,6 +4387,7 @@ to: blueprint 316ccd9e-5c53-46c3-a2e9-20c3867b7111 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4479,6 +4520,7 @@ to: blueprint 02078c95-3d58-4b7b-a03f-9b160361c50a internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4623,6 +4665,7 @@ to: blueprint e7a01ffc-6b0e-408b-917b-b1efe18b3110 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4768,6 +4811,7 @@ to: blueprint 880e2ffc-8187-4275-a2f3-1b36aa2f4482 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -4903,6 +4947,7 @@ to: blueprint c4a20bcb-1a71-4e88-97b4-36d16f55daec internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5038,6 +5083,7 @@ to: blueprint a2c6496d-98fc-444d-aa36-99508aa72367 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5158,6 +5204,7 @@ to: blueprint 6ed56354-5941-40d1-a06c-b0e940701d52 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5277,6 +5324,7 @@ to: blueprint 9078c4ba-3a73-4b3f-ac2c-acb501f89cb2 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5404,6 +5452,7 @@ to: blueprint 8763abc1-8a42-4932-b5a7-33109e0e0152 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5531,6 +5580,7 @@ to: blueprint 2b89e0d7-f15b-4474-8ac4-85959ed1bc88 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5652,6 +5702,7 @@ to: blueprint 7f6b7297-c2bc-4f67-b3c0-c8e555ebbdc4 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5790,6 +5841,7 @@ to: blueprint 59630e63-c953-4807-9e84-9e750a79f68e internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -5929,6 +5981,7 @@ to: blueprint e93650dc-b5ba-4ec7-8550-9171c1ada194 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -6062,6 +6115,7 @@ to: blueprint 90650737-8142-47a6-9a48-a10efc487e57 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -6194,6 +6248,7 @@ to: blueprint 2182613d-dc9f-41eb-9c6a-d33801849caa internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -6320,6 +6375,7 @@ to: blueprint e8b088a8-7da0-480b-a2dc-75ffef068ece internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -6463,6 +6519,7 @@ to: blueprint 810ea95a-4730-43dd-867e-1984aeb9d873 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) @@ -6727,6 +6784,7 @@ parent: e8b088a8-7da0-480b-a2dc-75ffef068ece internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index e3e7cd50ddf..5cd9ca9e500 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -81,6 +81,7 @@ pub struct Blueprint { pub creator: String, pub comment: String, pub target_release_minimum_generation: Generation, + pub nexus_generation: Generation, } impl From<&'_ nexus_types::deployment::Blueprint> for Blueprint { @@ -100,6 +101,7 @@ impl From<&'_ nexus_types::deployment::Blueprint> for Blueprint { target_release_minimum_generation: Generation( bp.target_release_minimum_generation, ), + nexus_generation: Generation(bp.nexus_generation), } } } @@ -113,6 +115,7 @@ impl From for nexus_types::deployment::BlueprintMetadata { external_dns_version: *value.external_dns_version, target_release_minimum_generation: *value .target_release_minimum_generation, + nexus_generation: *value.nexus_generation, cockroachdb_fingerprint: value.cockroachdb_fingerprint, cockroachdb_setting_preserve_downgrade: CockroachDbPreserveDowngrade::from_optional_string( @@ -524,6 +527,7 @@ pub struct BpOmicronZone { pub image_source: DbBpZoneImageSource, pub image_artifact_sha256: Option, + pub nexus_generation: Option, } impl BpOmicronZone { @@ -585,6 +589,7 @@ impl BpOmicronZone { snat_ip: None, snat_first_port: None, snat_last_port: None, + nexus_generation: None, }; match &blueprint_zone.zone_type { @@ -716,6 +721,7 @@ impl BpOmicronZone { nic, external_tls, external_dns_servers, + nexus_generation, }) => { // Set the common fields bp_omicron_zone @@ -733,6 +739,8 @@ impl BpOmicronZone { .map(IpNetwork::from) .collect(), ); + bp_omicron_zone.nexus_generation = + Some(Generation::from(*nexus_generation)); } BlueprintZoneType::Oximeter(blueprint_zone_type::Oximeter { address, @@ -938,6 +946,9 @@ impl BpOmicronZone { .into_iter() .map(|i| i.ip()) .collect(), + nexus_generation: *self.nexus_generation.ok_or_else( + || anyhow!("expected 'nexus_generation'"), + )?, }) } ZoneType::Oximeter => { diff --git a/nexus/db-model/src/schema_versions.rs b/nexus/db-model/src/schema_versions.rs index c471d07e50d..5b259c0d7e3 100644 --- a/nexus/db-model/src/schema_versions.rs +++ b/nexus/db-model/src/schema_versions.rs @@ -16,7 +16,7 @@ use std::{collections::BTreeMap, sync::LazyLock}; /// /// This must be updated when you change the database schema. Refer to /// schema/crdb/README.adoc in the root of this repository for details. -pub const SCHEMA_VERSION: Version = Version::new(185, 0, 0); +pub const SCHEMA_VERSION: Version = Version::new(186, 0, 0); /// List of all past database schema versions, in *reverse* order /// @@ -28,6 +28,7 @@ static KNOWN_VERSIONS: LazyLock> = LazyLock::new(|| { // | leaving the first copy as an example for the next person. // v // KnownVersion::new(next_int, "unique-dirname-with-the-sql-files"), + KnownVersion::new(186, "nexus-generation"), KnownVersion::new(185, "populate-db-metadata-nexus"), KnownVersion::new(184, "store-silo-admin-group-name"), KnownVersion::new(183, "add-ip-version-to-pools"), diff --git a/nexus/db-queries/src/db/datastore/db_metadata.rs b/nexus/db-queries/src/db/datastore/db_metadata.rs index 43a60817848..bea3638fd59 100644 --- a/nexus/db-queries/src/db/datastore/db_metadata.rs +++ b/nexus/db-queries/src/db/datastore/db_metadata.rs @@ -984,6 +984,7 @@ mod test { db.terminate().await; logctx.cleanup_successful(); } + fn create_test_blueprint( nexus_zones: Vec<(OmicronZoneUuid, BlueprintZoneDisposition)>, ) -> Blueprint { @@ -1020,6 +1021,7 @@ mod test { slot: 0, transit_ips: Vec::new(), }, + nexus_generation: Generation::new(), }), image_source: BlueprintZoneImageSource::InstallDataset, }) @@ -1048,6 +1050,7 @@ mod test { internal_dns_version: Generation::new(), external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), cockroachdb_setting_preserve_downgrade: CockroachDbPreserveDowngrade::DoNotModify, diff --git a/nexus/db-queries/src/db/datastore/deployment.rs b/nexus/db-queries/src/db/datastore/deployment.rs index 0e46092de95..6ce19a93ff7 100644 --- a/nexus/db-queries/src/db/datastore/deployment.rs +++ b/nexus/db-queries/src/db/datastore/deployment.rs @@ -548,6 +548,7 @@ impl DataStore { internal_dns_version, external_dns_version, target_release_minimum_generation, + nexus_generation, cockroachdb_fingerprint, cockroachdb_setting_preserve_downgrade, time_created, @@ -574,6 +575,7 @@ impl DataStore { *blueprint.internal_dns_version, *blueprint.external_dns_version, *blueprint.target_release_minimum_generation, + *blueprint.nexus_generation, blueprint.cockroachdb_fingerprint, blueprint.cockroachdb_setting_preserve_downgrade, blueprint.time_created, @@ -1325,6 +1327,7 @@ impl DataStore { internal_dns_version, external_dns_version, target_release_minimum_generation, + nexus_generation, cockroachdb_fingerprint, cockroachdb_setting_preserve_downgrade, clickhouse_cluster_config, @@ -4271,6 +4274,7 @@ mod tests { }, external_tls: false, external_dns_servers: vec![], + nexus_generation: Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, diff --git a/nexus/db-queries/src/db/datastore/deployment/external_networking.rs b/nexus/db-queries/src/db/datastore/deployment/external_networking.rs index e8cb951f85b..dd525fdbbc9 100644 --- a/nexus/db-queries/src/db/datastore/deployment/external_networking.rs +++ b/nexus/db-queries/src/db/datastore/deployment/external_networking.rs @@ -454,6 +454,7 @@ mod tests { use omicron_common::address::NEXUS_OPTE_IPV4_SUBNET; use omicron_common::address::NTP_OPTE_IPV4_SUBNET; use omicron_common::address::NUM_SOURCE_NAT_PORTS; + use omicron_common::api::external::Generation; use omicron_common::api::external::MacAddr; use omicron_common::api::external::Vni; use omicron_common::zpool_name::ZpoolName; @@ -643,6 +644,7 @@ mod tests { nic: self.nexus_nic.clone(), external_tls: false, external_dns_servers: Vec::new(), + nexus_generation: Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, diff --git a/nexus/db-queries/src/db/datastore/rack.rs b/nexus/db-queries/src/db/datastore/rack.rs index 31e0ec43284..8b090bd2c69 100644 --- a/nexus/db-queries/src/db/datastore/rack.rs +++ b/nexus/db-queries/src/db/datastore/rack.rs @@ -1107,6 +1107,7 @@ mod test { internal_dns_version: *Generation::new(), external_dns_version: *Generation::new(), target_release_minimum_generation: *Generation::new(), + nexus_generation: *Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: *Generation::new(), @@ -1531,6 +1532,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -1601,6 +1603,7 @@ mod test { internal_dns_version: *Generation::new(), external_dns_version: *Generation::new(), target_release_minimum_generation: *Generation::new(), + nexus_generation: *Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: *Generation::new(), @@ -1789,6 +1792,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -1822,6 +1826,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -1866,6 +1871,7 @@ mod test { internal_dns_version: *Generation::new(), external_dns_version: *Generation::new(), target_release_minimum_generation: *Generation::new(), + nexus_generation: *Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: *Generation::new(), @@ -2072,6 +2078,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -2123,6 +2130,7 @@ mod test { creator: "test suite".to_string(), comment: "test blueprint".to_string(), report: PlanningReport::new(blueprint_id), + nexus_generation: *Generation::new(), }; let rack = datastore @@ -2296,6 +2304,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -2314,6 +2323,7 @@ mod test { internal_dns_version: *Generation::new(), external_dns_version: *Generation::new(), target_release_minimum_generation: *Generation::new(), + nexus_generation: *Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: *Generation::new(), @@ -2436,6 +2446,7 @@ mod test { slot: 0, transit_ips: vec![], }, + nexus_generation: *Generation::new(), }, ), image_source: BlueprintZoneImageSource::InstallDataset, @@ -2456,6 +2467,7 @@ mod test { internal_dns_version: *Generation::new(), external_dns_version: *Generation::new(), target_release_minimum_generation: *Generation::new(), + nexus_generation: *Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: *Generation::new(), diff --git a/nexus/db-schema/src/schema.rs b/nexus/db-schema/src/schema.rs index 4f8bd54a7a2..23d4aa089e5 100644 --- a/nexus/db-schema/src/schema.rs +++ b/nexus/db-schema/src/schema.rs @@ -1970,6 +1970,8 @@ table! { cockroachdb_setting_preserve_downgrade -> Nullable, target_release_minimum_generation -> Int8, + + nexus_generation -> Int8, } } @@ -2070,6 +2072,7 @@ table! { filesystem_pool -> Uuid, image_source -> crate::enums::BpZoneImageSourceEnum, image_artifact_sha256 -> Nullable, + nexus_generation -> Nullable, } } diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index 2ce03d66421..1e3cc26ea68 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -597,6 +597,7 @@ mod test { nic, external_tls, external_dns_servers, + nexus_generation: Generation::new(), }) } OmicronZoneType::Oximeter { address } => { @@ -720,6 +721,7 @@ mod test { internal_dns_version: initial_dns_generation, external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: Generation::new(), diff --git a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs index 0601c852fa7..7cf11ac45ea 100644 --- a/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs +++ b/nexus/reconfigurator/planning/src/blueprint_builder/builder.rs @@ -515,6 +515,7 @@ pub struct BlueprintBuilder<'a> { sled_editors: BTreeMap, cockroachdb_setting_preserve_downgrade: CockroachDbPreserveDowngrade, target_release_minimum_generation: Generation, + nexus_generation: Generation, report: Option, creator: String, @@ -582,6 +583,7 @@ impl<'a> BlueprintBuilder<'a> { internal_dns_version: Generation::new(), external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), cockroachdb_setting_preserve_downgrade: CockroachDbPreserveDowngrade::DoNotModify, @@ -663,6 +665,7 @@ impl<'a> BlueprintBuilder<'a> { pending_mgs_updates: parent_blueprint.pending_mgs_updates.clone(), target_release_minimum_generation: parent_blueprint .target_release_minimum_generation, + nexus_generation: parent_blueprint.nexus_generation, report: None, creator: creator.to_owned(), operations: Vec::new(), @@ -857,6 +860,7 @@ impl<'a> BlueprintBuilder<'a> { external_dns_version: self.input.external_dns_version(), target_release_minimum_generation: self .target_release_minimum_generation, + nexus_generation: self.nexus_generation, cockroachdb_fingerprint: self .input .cockroachdb_settings() @@ -1608,6 +1612,7 @@ impl<'a> BlueprintBuilder<'a> { nic, external_tls, external_dns_servers: external_dns_servers.clone(), + nexus_generation: Generation::new(), }); let filesystem_pool = self.sled_select_zpool(sled_id, zone_type.kind())?; diff --git a/nexus/reconfigurator/planning/tests/output/example_builder_zone_counts_blueprint.txt b/nexus/reconfigurator/planning/tests/output/example_builder_zone_counts_blueprint.txt index 15d2c2d6a77..6125703611f 100644 --- a/nexus/reconfigurator/planning/tests/output/example_builder_zone_counts_blueprint.txt +++ b/nexus/reconfigurator/planning/tests/output/example_builder_zone_counts_blueprint.txt @@ -531,6 +531,7 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_2_3.txt b/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_2_3.txt index 99e950f246e..98982124114 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_2_3.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_2_3.txt @@ -71,6 +71,7 @@ to: blueprint 4171ad05-89dd-474b-846b-b007e4346366 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_3_5.txt b/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_3_5.txt index 41df1375187..b724ec830ab 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_3_5.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_basic_add_sled_3_5.txt @@ -101,6 +101,7 @@ to: blueprint f432fcd5-1284-4058-8b4a-9286a3de6163 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_dataset_settings_modified_in_place_1_2.txt b/nexus/reconfigurator/planning/tests/output/planner_dataset_settings_modified_in_place_1_2.txt index 0e936766516..b619e3f7ddf 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_dataset_settings_modified_in_place_1_2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_dataset_settings_modified_in_place_1_2.txt @@ -122,6 +122,7 @@ to: blueprint fe13be30-94c2-4fa6-aad5-ae3c5028f6bb internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_1_2.txt b/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_1_2.txt index 488e3f69d00..e79bf2daf74 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_1_2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_1_2.txt @@ -387,6 +387,7 @@ to: blueprint 1ac2d88f-27dd-4506-8585-6b2be832528e internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt b/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt index 93d346b3170..ea1d786354f 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt @@ -322,6 +322,7 @@ parent: 516e80a3-b362-4fac-bd3c-4559717120dd internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_1_2.txt b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_1_2.txt index 63380e2c1eb..1be47958ab0 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_1_2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_1_2.txt @@ -320,6 +320,7 @@ to: blueprint 31ef2071-2ec9-49d9-8827-fd83b17a0e3d internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_3_4.txt b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_3_4.txt index b2d2dee5588..af0649e7506 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_3_4.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_3_4.txt @@ -9,6 +9,7 @@ to: blueprint 92fa943c-7dd4-48c3-9447-c9d0665744b6 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_4_5.txt b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_4_5.txt index ea64f823b0a..0dc39530072 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_4_5.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_4_5.txt @@ -223,6 +223,7 @@ to: blueprint 2886dab5-61a2-46b4-87af-bc7aeb44cccb internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_5_6.txt b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_5_6.txt index 6b4c5f48e30..e33a4d4a9f0 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_5_6.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_deploy_all_keeper_nodes_5_6.txt @@ -9,6 +9,7 @@ to: blueprint cb39be9d-5476-44fa-9edf-9938376219ef internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_3_4.txt b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_3_4.txt index 9394b253cc6..64f86ecfe65 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_3_4.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_3_4.txt @@ -408,6 +408,7 @@ to: blueprint 74f2e7fd-687e-4c9e-b5d8-e474a5bb8e7c internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_5_6.txt b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_5_6.txt index 744379716fc..f5a11fe0dbc 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_5_6.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_clusters_5_6.txt @@ -9,6 +9,7 @@ to: blueprint df68d4d4-5af4-4b56-95bb-1654a6957d4f internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_zones_after_policy_is_changed_3_4.txt b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_zones_after_policy_is_changed_3_4.txt index 5e439554691..fd72c3cda5c 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_zones_after_policy_is_changed_3_4.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_expunge_clickhouse_zones_after_policy_is_changed_3_4.txt @@ -338,6 +338,7 @@ to: blueprint d895ef50-9978-454c-bdfb-b8dbe2c9a918 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt index 99ccd504aaf..13f6efd866f 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt @@ -373,6 +373,7 @@ to: blueprint 9f71f5d3-a272-4382-9154-6ea2e171a6c6 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt index 8bd822a364c..162e4c1ad69 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt @@ -349,6 +349,9 @@ mismatched zone type: after: Nexus( }, external_tls: false, external_dns_servers: [], + nexus_generation: Generation( + 1, + ), }, ) @@ -368,6 +371,7 @@ mismatched zone type: after: InternalNtp( internal DNS version::: 1 (unchanged) * external DNS version::: 1 -> 2 target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt index 77c19780bed..e26d517c3e6 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt @@ -510,6 +510,7 @@ parent: 4d4e6c38-cd95-4c4e-8f45-6af4d686964b internal DNS version::: 1 external DNS version::: 1 target release min gen: 1 + nexus gen:::::::::::::: 1 PENDING MGS-MANAGED UPDATES: 0 diff --git a/nexus/reconfigurator/planning/tests/output/zone_image_source_change_1.txt b/nexus/reconfigurator/planning/tests/output/zone_image_source_change_1.txt index 440e7e28e51..1f229c2ec10 100644 --- a/nexus/reconfigurator/planning/tests/output/zone_image_source_change_1.txt +++ b/nexus/reconfigurator/planning/tests/output/zone_image_source_change_1.txt @@ -122,6 +122,7 @@ to: blueprint 1481141d-a5cf-4103-8344-738967e0f110 internal DNS version::: 1 (unchanged) external DNS version::: 1 (unchanged) target release min gen: 1 (unchanged) + nexus gen:::::::::::::: 1 (unchanged) OXIMETER SETTINGS: generation: 1 (unchanged) diff --git a/nexus/src/app/background/tasks/blueprint_execution.rs b/nexus/src/app/background/tasks/blueprint_execution.rs index 2ac61471e7c..27315202719 100644 --- a/nexus/src/app/background/tasks/blueprint_execution.rs +++ b/nexus/src/app/background/tasks/blueprint_execution.rs @@ -278,6 +278,7 @@ mod test { internal_dns_version: dns_version, external_dns_version: dns_version, target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: Generation::new(), diff --git a/nexus/src/app/background/tasks/blueprint_load.rs b/nexus/src/app/background/tasks/blueprint_load.rs index d2d9c7c380e..7b7f546388d 100644 --- a/nexus/src/app/background/tasks/blueprint_load.rs +++ b/nexus/src/app/background/tasks/blueprint_load.rs @@ -225,6 +225,7 @@ mod test { internal_dns_version: Generation::new(), external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), clickhouse_cluster_config: None, oximeter_read_version: Generation::new(), diff --git a/nexus/test-utils/src/lib.rs b/nexus/test-utils/src/lib.rs index d4655b3eede..1a5a2847cdd 100644 --- a/nexus/test-utils/src/lib.rs +++ b/nexus/test-utils/src/lib.rs @@ -882,6 +882,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { vni: Vni::SERVICES_VNI, transit_ips: vec![], }, + nexus_generation: Generation::new(), }), image_source: BlueprintZoneImageSource::InstallDataset, }); @@ -967,6 +968,7 @@ impl<'a, N: NexusServer> ControlPlaneTestContextBuilder<'a, N> { internal_dns_version: dns_config.generation, external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), cockroachdb_fingerprint: String::new(), cockroachdb_setting_preserve_downgrade: CockroachDbPreserveDowngrade::DoNotModify, diff --git a/nexus/types/src/deployment.rs b/nexus/types/src/deployment.rs index 5928daf9363..2c66a5f8575 100644 --- a/nexus/types/src/deployment.rs +++ b/nexus/types/src/deployment.rs @@ -227,6 +227,13 @@ pub struct Blueprint { /// driving the system to the target release. pub target_release_minimum_generation: Generation, + /// The generation of the active group of Nexuses + /// + /// If a Nexus instance notices it has a nexus_generation less than + /// this value, it will start to quiesce in preparation for handing off + /// control to the newer generation (see: RFD 588). + pub nexus_generation: Generation, + /// CockroachDB state fingerprint when this blueprint was created // See `nexus/db-queries/src/db/datastore/cockroachdb_settings.rs` for more // on this. @@ -275,6 +282,7 @@ impl Blueprint { external_dns_version: self.external_dns_version, target_release_minimum_generation: self .target_release_minimum_generation, + nexus_generation: self.nexus_generation, cockroachdb_fingerprint: self.cockroachdb_fingerprint.clone(), cockroachdb_setting_preserve_downgrade: Some( self.cockroachdb_setting_preserve_downgrade, @@ -609,6 +617,7 @@ impl BlueprintDisplay<'_> { .target_release_minimum_generation .to_string(), ), + (NEXUS_GENERATION, self.blueprint.nexus_generation.to_string()), ], ) } @@ -651,6 +660,7 @@ impl fmt::Display for BlueprintDisplay<'_> { // These six fields are handled by `make_metadata_table()`, called // below. target_release_minimum_generation: _, + nexus_generation: _, internal_dns_version: _, external_dns_version: _, time_created: _, @@ -2073,6 +2083,10 @@ pub struct BlueprintMetadata { /// /// See [`Blueprint::target_release_minimum_generation`]. pub target_release_minimum_generation: Generation, + /// The Nexus generation number + /// + /// See [`Blueprint::nexus_generation`]. + pub nexus_generation: Generation, /// CockroachDB state fingerprint when this blueprint was created pub cockroachdb_fingerprint: String, /// Whether to set `cluster.preserve_downgrade_option` and what to set it to diff --git a/nexus/types/src/deployment/blueprint_diff.rs b/nexus/types/src/deployment/blueprint_diff.rs index a29cb57317f..6a1646ddd48 100644 --- a/nexus/types/src/deployment/blueprint_diff.rs +++ b/nexus/types/src/deployment/blueprint_diff.rs @@ -64,6 +64,7 @@ impl<'a> BlueprintDiffSummary<'a> { pending_mgs_updates, clickhouse_cluster_config, target_release_minimum_generation, + nexus_generation, // Metadata fields for which changes don't reflect semantic // changes from one blueprint to the next. id: _, @@ -112,6 +113,11 @@ impl<'a> BlueprintDiffSummary<'a> { return true; } + // Did the nexus generation change? + if nexus_generation.before != nexus_generation.after { + return true; + } + // All fields checked or ignored; if we get here, there are no // meaningful changes. false @@ -1834,6 +1840,7 @@ impl<'diff, 'b> BlueprintDiffDisplay<'diff, 'b> { target_release_minimum_generation, TARGET_RELEASE_MIN_GEN ), + diff_row!(nexus_generation, NEXUS_GENERATION), ], ), ] diff --git a/nexus/types/src/deployment/blueprint_display.rs b/nexus/types/src/deployment/blueprint_display.rs index e0dc0080f95..dec9ce3e699 100644 --- a/nexus/types/src/deployment/blueprint_display.rs +++ b/nexus/types/src/deployment/blueprint_display.rs @@ -44,6 +44,7 @@ pub mod constants { pub const EXTERNAL_DNS_VERSION: &str = "external DNS version"; // Keep this a bit short to not make the key column too wide. pub const TARGET_RELEASE_MIN_GEN: &str = "target release min gen"; + pub const NEXUS_GENERATION: &str = "nexus gen"; pub const COMMENT: &str = "comment"; pub const UNCHANGED_PARENS: &str = "(unchanged)"; diff --git a/nexus/types/src/deployment/zone_type.rs b/nexus/types/src/deployment/zone_type.rs index 31e26c3a994..79cb68fb98a 100644 --- a/nexus/types/src/deployment/zone_type.rs +++ b/nexus/types/src/deployment/zone_type.rs @@ -343,6 +343,7 @@ pub mod blueprint_zone_type { use crate::deployment::OmicronZoneExternalSnatIp; use daft::Diffable; use nexus_sled_agent_shared::inventory::OmicronZoneDataset; + use omicron_common::api::external::Generation; use omicron_common::api::internal::shared::NetworkInterface; use schemars::JsonSchema; use serde::Deserialize; @@ -566,6 +567,10 @@ pub mod blueprint_zone_type { pub external_tls: bool, /// External DNS servers Nexus can use to resolve external hosts. pub external_dns_servers: Vec, + /// Generation number for this Nexus zone. + /// This is used to coordinate handoff between old and new Nexus instances + /// during updates. See RFD 588. + pub nexus_generation: Generation, } #[derive( diff --git a/openapi/nexus-internal.json b/openapi/nexus-internal.json index 3d41de3fe62..bc1cd3df567 100644 --- a/openapi/nexus-internal.json +++ b/openapi/nexus-internal.json @@ -2568,6 +2568,14 @@ } ] }, + "nexus_generation": { + "description": "The generation of the active group of Nexuses\n\nIf a Nexus instance notices it has a nexus_generation less than this value, it will start to quiesce in preparation for handing off control to the newer generation (see: RFD 588).", + "allOf": [ + { + "$ref": "#/components/schemas/Generation" + } + ] + }, "oximeter_read_mode": { "description": "Whether oximeter should read from a single node or a cluster", "allOf": [ @@ -2638,6 +2646,7 @@ "external_dns_version", "id", "internal_dns_version", + "nexus_generation", "oximeter_read_mode", "oximeter_read_version", "pending_mgs_updates", @@ -2862,6 +2871,14 @@ } ] }, + "nexus_generation": { + "description": "The Nexus generation number\n\nSee [`Blueprint::nexus_generation`].", + "allOf": [ + { + "$ref": "#/components/schemas/Generation" + } + ] + }, "parent_blueprint_id": { "nullable": true, "description": "which blueprint this blueprint is based on", @@ -2892,6 +2909,7 @@ "external_dns_version", "id", "internal_dns_version", + "nexus_generation", "target_release_minimum_generation", "time_created" ] @@ -3517,6 +3535,14 @@ "description": "The address at which the internal nexus server is reachable.", "type": "string" }, + "nexus_generation": { + "description": "Generation number for this Nexus zone. This is used to coordinate handoff between old and new Nexus instances during updates. See RFD 588.", + "allOf": [ + { + "$ref": "#/components/schemas/Generation" + } + ] + }, "nic": { "description": "The service vNIC providing external connectivity using OPTE.", "allOf": [ @@ -3537,6 +3563,7 @@ "external_ip", "external_tls", "internal_address", + "nexus_generation", "nic", "type" ] diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index bad381cb5c8..552d3cf3d0e 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -4524,7 +4524,10 @@ CREATE TABLE IF NOT EXISTS omicron.public.blueprint ( -- driving the system to the target release. -- -- This is set to 1 by default in application code. - target_release_minimum_generation INT8 NOT NULL + target_release_minimum_generation INT8 NOT NULL, + + -- The generation of the active group of Nexus instances + nexus_generation INT8 NOT NULL ); -- table describing both the current and historical target blueprints of the @@ -4734,6 +4737,9 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( image_source omicron.public.bp_zone_image_source NOT NULL, image_artifact_sha256 STRING(64), + -- Generation for Nexus zones + nexus_generation INT8, + PRIMARY KEY (blueprint_id, id), CONSTRAINT expunged_disposition_properties CHECK ( @@ -4751,6 +4757,12 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_zone ( OR (image_source != 'artifact' AND image_artifact_sha256 IS NULL) + ), + + CONSTRAINT nexus_generation_for_nexus_zones CHECK ( + (zone_type = 'nexus' AND nexus_generation IS NOT NULL) + OR + (zone_type != 'nexus' AND nexus_generation IS NULL) ) ); @@ -6590,7 +6602,7 @@ INSERT INTO omicron.public.db_metadata ( version, target_version ) VALUES - (TRUE, NOW(), NOW(), '185.0.0', NULL) + (TRUE, NOW(), NOW(), '186.0.0', NULL) ON CONFLICT DO NOTHING; COMMIT; diff --git a/schema/crdb/nexus-generation/up01.sql b/schema/crdb/nexus-generation/up01.sql new file mode 100644 index 00000000000..42d87c2f6f7 --- /dev/null +++ b/schema/crdb/nexus-generation/up01.sql @@ -0,0 +1 @@ +ALTER TABLE omicron.public.bp_omicron_zone ADD COLUMN IF NOT EXISTS nexus_generation INT8; diff --git a/schema/crdb/nexus-generation/up02.sql b/schema/crdb/nexus-generation/up02.sql new file mode 100644 index 00000000000..53429df8ebe --- /dev/null +++ b/schema/crdb/nexus-generation/up02.sql @@ -0,0 +1,5 @@ +SET LOCAL disallow_full_table_scans = off; + +UPDATE omicron.public.bp_omicron_zone +SET nexus_generation = 1 +WHERE zone_type = 'nexus'; diff --git a/schema/crdb/nexus-generation/up03.sql b/schema/crdb/nexus-generation/up03.sql new file mode 100644 index 00000000000..d7623a84c80 --- /dev/null +++ b/schema/crdb/nexus-generation/up03.sql @@ -0,0 +1 @@ +ALTER TABLE omicron.public.blueprint ADD COLUMN IF NOT EXISTS nexus_generation INT8 NOT NULL DEFAULT 1; diff --git a/schema/crdb/nexus-generation/up04.sql b/schema/crdb/nexus-generation/up04.sql new file mode 100644 index 00000000000..072231d9b01 --- /dev/null +++ b/schema/crdb/nexus-generation/up04.sql @@ -0,0 +1 @@ +ALTER TABLE omicron.public.blueprint ALTER COLUMN nexus_generation DROP DEFAULT; diff --git a/schema/crdb/nexus-generation/up05.sql b/schema/crdb/nexus-generation/up05.sql new file mode 100644 index 00000000000..6818b887a54 --- /dev/null +++ b/schema/crdb/nexus-generation/up05.sql @@ -0,0 +1,5 @@ +ALTER TABLE omicron.public.bp_omicron_zone ADD CONSTRAINT IF NOT EXISTS nexus_generation_for_nexus_zones CHECK ( + (zone_type = 'nexus' AND nexus_generation IS NOT NULL) + OR + (zone_type != 'nexus' AND nexus_generation IS NULL) +); diff --git a/sled-agent/src/rack_setup/plan/service.rs b/sled-agent/src/rack_setup/plan/service.rs index f7941e9724c..37ea4757d9f 100644 --- a/sled-agent/src/rack_setup/plan/service.rs +++ b/sled-agent/src/rack_setup/plan/service.rs @@ -26,7 +26,7 @@ use omicron_common::address::{ RSS_RESERVED_ADDRESSES, ReservedRackSubnet, SLED_PREFIX, get_sled_address, get_switch_zone_address, }; -use omicron_common::api::external::{MacAddr, Vni}; +use omicron_common::api::external::{Generation, MacAddr, Vni}; use omicron_common::api::internal::shared::{ NetworkInterface, NetworkInterfaceKind, SourceNatConfig, SourceNatConfigError, @@ -570,6 +570,7 @@ impl Plan { // development that it might not be. external_tls: !config.external_certificates.is_empty(), external_dns_servers: config.dns_servers.clone(), + nexus_generation: Generation::new(), }, ), filesystem_pool, diff --git a/sled-agent/src/rack_setup/service.rs b/sled-agent/src/rack_setup/service.rs index e2eaac58500..f18e205b6f7 100644 --- a/sled-agent/src/rack_setup/service.rs +++ b/sled-agent/src/rack_setup/service.rs @@ -1631,6 +1631,7 @@ pub(crate) fn build_initial_blueprint_from_sled_configs( // (including creating the recovery silo). external_dns_version: Generation::new(), target_release_minimum_generation: Generation::new(), + nexus_generation: Generation::new(), // Nexus will fill in the CockroachDB values during initialization. cockroachdb_fingerprint: String::new(), cockroachdb_setting_preserve_downgrade: diff --git a/sled-agent/src/sim/server.rs b/sled-agent/src/sim/server.rs index 12561713a75..b41bddf85ca 100644 --- a/sled-agent/src/sim/server.rs +++ b/sled-agent/src/sim/server.rs @@ -453,6 +453,7 @@ pub async fn run_standalone_server( }, external_tls: false, external_dns_servers: vec![], + nexus_generation: Generation::new(), }), filesystem_pool: get_random_zpool(), image_source: BlueprintZoneImageSource::InstallDataset,