diff --git a/dev-tools/omdb/tests/successes.out b/dev-tools/omdb/tests/successes.out index 109d74823a6..3156e54743a 100644 --- a/dev-tools/omdb/tests/successes.out +++ b/dev-tools/omdb/tests/successes.out @@ -1594,6 +1594,13 @@ parent: B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ----------------------------------------------------------------- vendor model serial disposition @@ -1637,6 +1644,13 @@ parent: B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ---------------------------------------------------------------- vendor model serial disposition @@ -1726,6 +1740,13 @@ parent: B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ----------------------------------------------------------------- vendor model serial disposition @@ -1769,6 +1790,13 @@ parent: B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ---------------------------------------------------------------- vendor model serial disposition 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 aa6e414aeb0..c2ceca29bb6 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 @@ -71,6 +71,13 @@ parent: dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------- vendor model serial disposition @@ -104,6 +111,13 @@ parent: dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -176,6 +190,13 @@ parent: dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -245,6 +266,13 @@ parent: dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-add-zones-with-mupdate-override-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-add-zones-with-mupdate-override-stdout index 6c99b009375..5bb1713dd0e 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-add-zones-with-mupdate-override-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-add-zones-with-mupdate-override-stdout @@ -122,6 +122,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + will remove mupdate override: (none) -> 2d0f6cbc-addc-47a2-962a-6a01e13376bf + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -316,6 +323,13 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-blueprint-history-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-blueprint-history-stdout index 7b2556fb752..22449afffc6 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-blueprint-history-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-blueprint-history-stdout @@ -73,6 +73,13 @@ to: blueprint dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -196,6 +203,13 @@ to: blueprint dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -316,6 +330,13 @@ to: blueprint dbcbd3d6-41ff-48ae-ac0b-1becc9b2fd21 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -457,6 +478,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -601,6 +629,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -763,6 +798,13 @@ to: blueprint df06bb57-ad42-4431-9206-abff322896c7 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout index 9eef7ec4d39..d0b424e17d5 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-example-stdout @@ -96,6 +96,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -224,6 +231,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -349,6 +363,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -553,6 +574,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -747,6 +775,13 @@ to: blueprint 86db3308-f817-4626-8838-4085949a6a41 sled 89d02b1b-478c-401a-8e28-7a26f74fa41b (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -971,6 +1006,13 @@ to: blueprint 02697f74-b14a-4418-90f0-c28b2a3a6aa9 sled 89d02b1b-478c-401a-8e28-7a26f74fa41b (was active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ +- install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1221,6 +1263,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1280,6 +1329,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1339,6 +1395,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -2103,6 +2166,13 @@ to: blueprint 86db3308-f817-4626-8838-4085949a6a41 sled 32d8d836-4d8a-4e54-8fa9-f31d79c42646 (active -> decommissioned, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 3af2ea3b49d..264f8750820 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 @@ -25,6 +25,13 @@ parent: 06c88262-f435-410e-ba98-101bed41ec27 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -153,6 +160,13 @@ parent: 06c88262-f435-410e-ba98-101bed41ec27 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -278,6 +292,13 @@ parent: 06c88262-f435-410e-ba98-101bed41ec27 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -425,6 +446,13 @@ to: blueprint 366b0b68-d80e-4bc1-abd3-dc69837847e0 sled 711ac7f8-d19e-4572-bdb9-e9b50f6e362a (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -615,6 +643,13 @@ parent: 3f00b694-1b16-4aaa-8f78-e6b3a527b434 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -743,6 +778,13 @@ parent: 3f00b694-1b16-4aaa-8f78-e6b3a527b434 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -868,6 +910,13 @@ parent: 3f00b694-1b16-4aaa-8f78-e6b3a527b434 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1040,6 +1089,13 @@ to: blueprint 9c998c1d-1a7b-440a-ae0c-40f781dea6e2 sled 711ac7f8-d19e-4572-bdb9-e9b50f6e362a (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1230,6 +1286,13 @@ parent: 366b0b68-d80e-4bc1-abd3-dc69837847e0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1361,6 +1424,13 @@ parent: 366b0b68-d80e-4bc1-abd3-dc69837847e0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1486,6 +1556,13 @@ parent: 366b0b68-d80e-4bc1-abd3-dc69837847e0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1647,6 +1724,13 @@ to: blueprint 2ac8c740-444d-42ff-8d66-9812a7e51288 sled 9dc50690-f9bf-4520-bf80-051d0f465c2c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 2bf23a72416..387f2581885 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 @@ -23,6 +23,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -151,6 +158,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -276,6 +290,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -423,6 +444,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -609,6 +637,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -784,6 +819,13 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-zones-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-zones-stdout index 99e0f661917..459ae9b8a06 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-zones-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-expunge-zones-stdout @@ -28,6 +28,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -100,6 +107,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -169,6 +183,13 @@ parent: 184f10b3-61cb-41ef-9b93-3489b2bac559 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -260,6 +281,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -369,6 +397,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -436,6 +471,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 67f79e8a387..625a3a1c0f5 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 @@ -20,6 +20,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -201,6 +208,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -387,6 +401,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B artifact: version 2.0.0 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -557,6 +578,13 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -738,6 +766,13 @@ to: blueprint df06bb57-ad42-4431-9206-abff322896c7 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -924,6 +959,13 @@ parent: af934083-59b5-4bf6-8966-6fb5292c29e1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-missing-sled-blocks-zone-updates-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-missing-sled-blocks-zone-updates-stdout index f2a31e7c2ef..97a400d0942 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-missing-sled-blocks-zone-updates-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-missing-sled-blocks-zone-updates-stdout @@ -98,6 +98,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -188,6 +195,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -578,6 +592,13 @@ to: blueprint 9034c710-3e57-45f3-99e5-4316145e87ac sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-override-without-target-release-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-override-without-target-release-stdout index c625edb624f..e56ec84d0bb 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-override-without-target-release-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-mupdate-override-without-target-release-stdout @@ -108,6 +108,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + will remove mupdate override: (none) -> 6123eac1-ec5b-42ba-b73f-9845105a9971 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -254,6 +261,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 3 -> 4): - will remove mupdate override: 6123eac1-ec5b-42ba-b73f-9845105a9971 -> (none) + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 0d766b8b50c..28600a53a29 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 @@ -668,6 +668,13 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -722,6 +729,13 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 5 -> 6): + will remove mupdate override: (none) -> 6123eac1-ec5b-42ba-b73f-9845105a9971 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -774,6 +788,13 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + will remove mupdate override: (none) -> 203fa72c-85c1-466a-8ed3-338ee029530d + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1087,6 +1108,13 @@ to: blueprint c1a0d242-9160-40f4-96ae-61f8f40a0b1b sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 6 -> 7): - will remove mupdate override: 6123eac1-ec5b-42ba-b73f-9845105a9971 -> (none) + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1142,6 +1170,13 @@ to: blueprint c1a0d242-9160-40f4-96ae-61f8f40a0b1b sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 3 -> 4): * will remove mupdate override: 203fa72c-85c1-466a-8ed3-338ee029530d -> 1c0ce176-6dc8-4a90-adea-d4a8000751da + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1280,6 +1315,13 @@ parent: c1a0d242-9160-40f4-96ae-61f8f40a0b1b B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1336,6 +1378,13 @@ parent: c1a0d242-9160-40f4-96ae-61f8f40a0b1b B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1389,6 +1438,13 @@ parent: c1a0d242-9160-40f4-96ae-61f8f40a0b1b B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1471,6 +1527,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 4 -> 5): - will remove mupdate override: 1c0ce176-6dc8-4a90-adea-d4a8000751da -> (none) + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1627,6 +1690,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1683,6 +1753,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1736,6 +1813,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1816,6 +1900,13 @@ to: blueprint ce365dff-2cdb-4f35-a186-b15e20e1e700 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -2009,6 +2100,13 @@ parent: 8f2d1f39-7c88-4701-aa43-56bf281b28c1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -2065,6 +2163,13 @@ parent: 8f2d1f39-7c88-4701-aa43-56bf281b28c1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -2118,6 +2223,13 @@ parent: 8f2d1f39-7c88-4701-aa43-56bf281b28c1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -2201,6 +2313,13 @@ to: blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -2387,6 +2506,13 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 6 -> 7): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2439,6 +2565,13 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 7 -> 8): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2488,6 +2621,13 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 6 -> 7): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2635,6 +2775,13 @@ to: blueprint 27e755bc-dc10-4647-853c-f89bb3a15a2c sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 8 -> 9): + will remove mupdate override: (none) -> c8fba912-63ae-473a-9115-0495d10fb3bc + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2692,6 +2839,13 @@ to: blueprint 27e755bc-dc10-4647-853c-f89bb3a15a2c sled c3bc4c6d-fdde-4fc4-8493-89d2a1e5ee6b (active, config generation 1): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -2771,6 +2925,13 @@ to: blueprint 9f89efdf-a23e-4137-b7cc-79f4a91cbe1f sled c3bc4c6d-fdde-4fc4-8493-89d2a1e5ee6b (active, config generation 1 -> 2): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-autobump-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-autobump-stdout index 5fc8aa1f538..8f2e877e118 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-autobump-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-autobump-stdout @@ -186,6 +186,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -263,6 +270,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -336,6 +350,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -1162,6 +1183,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1234,6 +1262,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1303,6 +1338,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1453,6 +1495,13 @@ to: blueprint 9034c710-3e57-45f3-99e5-4316145e87ac sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -1522,6 +1571,13 @@ to: blueprint 9034c710-3e57-45f3-99e5-4316145e87ac sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -1588,6 +1644,13 @@ to: blueprint 9034c710-3e57-45f3-99e5-4316145e87ac sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -2006,6 +2069,13 @@ to: blueprint 8f2d1f39-7c88-4701-aa43-56bf281b28c1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -2128,6 +2198,13 @@ to: blueprint 12d602a6-5ab4-487a-b94e-eb30cdf30300 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -2247,6 +2324,13 @@ to: blueprint 61a93ea3-c872-48e0-aace-e86b0c52b839 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-stdout index f28dd334d46..ad23d01c885 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-nexus-generation-stdout @@ -46,6 +46,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 c6463b3726f..4e737865e5c 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 @@ -212,6 +212,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -266,6 +273,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled 9a867dc9-d505-427f-9eff-cdb1d4d9bd73 (active -> decommissioned, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -314,6 +328,13 @@ to: blueprint 58d5e830-0884-47d8-a7cd-b2b3751adeb4 sled aff6c093-197d-42c5-ad80-9f10ba051a34 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -466,6 +487,13 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 sled e96e226f-4ed9-4c01-91b9-69a9cd076c9e (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 67b4138c185..d9d972ea541 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 @@ -25,6 +25,13 @@ parent: 6ccc786b-17f1-4562-958f-5a7d9a5a15fd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -97,6 +104,13 @@ parent: 6ccc786b-17f1-4562-958f-5a7d9a5a15fd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -166,6 +180,13 @@ parent: 6ccc786b-17f1-4562-958f-5a7d9a5a15fd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -267,6 +288,13 @@ parent: ad97e762-7bf1-45a6-a98f-60afb7e491c0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -339,6 +367,13 @@ parent: ad97e762-7bf1-45a6-a98f-60afb7e491c0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -408,6 +443,13 @@ parent: ad97e762-7bf1-45a6-a98f-60afb7e491c0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -591,6 +633,13 @@ parent: cca24b71-09b5-4042-9185-b33e9f2ebba0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -663,6 +712,13 @@ parent: cca24b71-09b5-4042-9185-b33e9f2ebba0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -732,6 +788,13 @@ parent: cca24b71-09b5-4042-9185-b33e9f2ebba0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -918,6 +981,13 @@ parent: 5bf974f3-81f9-455b-b24e-3099f765664c B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -990,6 +1060,13 @@ parent: 5bf974f3-81f9-455b-b24e-3099f765664c B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1059,6 +1136,13 @@ parent: 5bf974f3-81f9-455b-b24e-3099f765664c B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1204,6 +1288,13 @@ parent: 1b837a27-3be1-4fcb-8499-a921c839e1d0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1276,6 +1367,13 @@ parent: 1b837a27-3be1-4fcb-8499-a921c839e1d0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1345,6 +1443,13 @@ parent: 1b837a27-3be1-4fcb-8499-a921c839e1d0 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition 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 d7c1343ea02..e5dafb7d253 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 @@ -63,6 +63,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -119,6 +126,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -173,6 +187,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -227,6 +248,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -271,6 +299,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -315,6 +350,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -359,6 +401,13 @@ parent: df06bb57-ad42-4431-9206-abff322896c7 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -451,6 +500,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled e96e226f-4ed9-4c01-91b9-69a9cd076c9e (was active, config generation 3): - would have removed mupdate override: 00000000-0000-0000-0000-000000000000 + measurements: + ------------------------------ + hash version + ------------------------------ +- install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -492,6 +548,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + will remove mupdate override: (none) -> ffffffff-ffff-ffff-ffff-ffffffffffff + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -544,6 +607,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled 9a867dc9-d505-427f-9eff-cdb1d4d9bd73 (active, config generation 3 -> 4): will remove mupdate override: 00000000-0000-0000-0000-000000000000 (unchanged) + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -593,6 +663,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled b82ede02-399c-48c6-a1de-411df4fa49a7 (active, config generation 3 -> 4): * will remove mupdate override: 00000000-0000-0000-0000-000000000000 -> ffffffff-ffff-ffff-ffff-ffffffffffff + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -632,6 +709,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 3 -> 4): - will remove mupdate override: 00000000-0000-0000-0000-000000000000 -> (none) + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -673,6 +757,13 @@ to: blueprint afb09faf-a586-4483-9289-04d4f1d8ba23 sled 00320471-945d-413c-85e7-03e091a70b3c (active, config generation 2): + will remove mupdate override: ffffffff-ffff-ffff-ffff-ffffffffffff + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -750,6 +841,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------- vendor model serial disposition @@ -784,6 +882,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -840,6 +945,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -894,6 +1006,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -948,6 +1067,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -992,6 +1118,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1035,6 +1168,13 @@ parent: afb09faf-a586-4483-9289-04d4f1d8ba23 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition 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 fd67f5964d2..66d9152f9fb 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 @@ -25,6 +25,13 @@ parent: 1b013011-2062-4b48-b544-a32b23bce83a B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -154,6 +161,13 @@ parent: 9766ca20-38d4-4380-b005-e7c43c797e7c B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -262,6 +276,13 @@ to: blueprint f714e6ea-e85a-4d7d-93c2-a018744fe176 sled 868d5b02-7792-4fc0-b6a9-654afcae9ea0 (active, config generation 2 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -402,6 +423,13 @@ parent: bb128f06-a2e1-44c1-8874-4f789d0ff896 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -510,6 +538,13 @@ to: blueprint d9c572a1-a68c-4945-b1ec-5389bd588fe9 sled 868d5b02-7792-4fc0-b6a9-654afcae9ea0 (active, config generation 4 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 6d3bb40b041..4eade69b5f1 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-target-release-stdout @@ -168,6 +168,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -244,6 +251,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -316,6 +330,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1615,6 +1636,13 @@ to: blueprint d60afc57-f15d-476c-bd0f-b1071e2bb976 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2356,6 +2384,13 @@ to: blueprint 9f89efdf-a23e-4137-b7cc-79f4a91cbe1f sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -2996,6 +3031,13 @@ to: blueprint 459a45a5-616e-421f-873b-2fb08c36205c sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source @@ -3136,6 +3178,13 @@ to: blueprint b2295597-5788-482e-acf9-1731ec63fbd2 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3273,6 +3322,13 @@ to: blueprint 6fad8fd4-e825-433f-b76d-495484e068ce sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3417,6 +3473,13 @@ to: blueprint 24b6e243-100c-428d-8ea6-35b504226f55 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 6 -> 7): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3554,6 +3617,13 @@ to: blueprint 79fff7a2-2495-4c75-8465-4dc01bab48ce sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 7 -> 8): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3707,6 +3777,13 @@ to: blueprint 3bcc37b2-0c0b-44d0-b4ed-3bcb605e4312 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 8 -> 9): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3861,6 +3938,13 @@ to: blueprint 4d2eb6f3-7eb1-443a-8e76-7ecf05da2f6d sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 9 -> 10): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -3993,6 +4077,13 @@ to: blueprint e2125c83-b255-45c9-bc9b-802cff09a812 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 10 -> 11): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4149,6 +4240,13 @@ to: blueprint f4a6848e-d13c-46e1-8c6a-944f886d7ba3 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 11 -> 12): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4306,6 +4404,13 @@ to: blueprint 834e4dbe-3b71-443d-bd4c-20e8253abc0c sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 12 -> 13): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4450,6 +4555,13 @@ to: blueprint d9c5c5e3-c532-4c45-9ef5-22cb00f6a2e1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 13 -> 14): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4595,6 +4707,13 @@ to: blueprint e2deb7c0-2262-49fe-855f-4250c22afb36 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 14 -> 15): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4732,6 +4851,13 @@ to: blueprint 23ce505c-8991-44a5-8863-f2b906fba9cf sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 15 -> 16): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4872,6 +4998,13 @@ to: blueprint c0d81ea6-909c-4efb-964e-beff67f6da0d sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -4997,6 +5130,13 @@ to: blueprint 60b55d33-5fec-4277-9864-935197eaead7 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5142,6 +5282,13 @@ to: blueprint aa13f40f-41ff-4b68-bee1-df2e1f805544 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 6 -> 7): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5288,6 +5435,13 @@ to: blueprint 316ccd9e-5c53-46c3-a2e9-20c3867b7111 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 7 -> 8): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5415,6 +5569,13 @@ to: blueprint 02078c95-3d58-4b7b-a03f-9b160361c50a sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 8 -> 9): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5553,6 +5714,13 @@ to: blueprint e7a01ffc-6b0e-408b-917b-b1efe18b3110 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 9 -> 10): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5690,6 +5858,13 @@ to: blueprint 880e2ffc-8187-4275-a2f3-1b36aa2f4482 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 10 -> 11): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5840,6 +6015,13 @@ to: blueprint c4a20bcb-1a71-4e88-97b4-36d16f55daec sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 11 -> 12): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -5991,6 +6173,13 @@ to: blueprint a2c6496d-98fc-444d-aa36-99508aa72367 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 12 -> 13): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6132,6 +6321,13 @@ to: blueprint 6ed56354-5941-40d1-a06c-b0e940701d52 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 13 -> 14): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6274,6 +6470,13 @@ to: blueprint 9078c4ba-3a73-4b3f-ac2c-acb501f89cb2 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 14 -> 15): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6411,6 +6614,13 @@ to: blueprint 8763abc1-8a42-4932-b5a7-33109e0e0152 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6536,6 +6746,13 @@ to: blueprint 2b89e0d7-f15b-4474-8ac4-85959ed1bc88 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 5 -> 6): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6669,6 +6886,13 @@ to: blueprint 7f6b7297-c2bc-4f67-b3c0-c8e555ebbdc4 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 6 -> 7): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6803,6 +7027,13 @@ to: blueprint 59630e63-c953-4807-9e84-9e750a79f68e sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 7 -> 8): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -6929,6 +7160,13 @@ to: blueprint e93650dc-b5ba-4ec7-8550-9171c1ada194 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 8 -> 9): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7073,6 +7311,13 @@ to: blueprint 90650737-8142-47a6-9a48-a10efc487e57 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 9 -> 10): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7218,6 +7463,13 @@ to: blueprint 2182613d-dc9f-41eb-9c6a-d33801849caa sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 10 -> 11): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7358,6 +7610,13 @@ to: blueprint e8b088a8-7da0-480b-a2dc-75ffef068ece sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 11 -> 12): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7497,6 +7756,13 @@ to: blueprint 810ea95a-4730-43dd-867e-1984aeb9d873 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 12 -> 13): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7628,6 +7894,13 @@ to: blueprint 67c074ef-c52e-4ff1-851a-598c04dc2c8d sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 13 -> 14): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7777,6 +8050,13 @@ to: blueprint 0a8d2f87-1d3e-4296-ba07-108940a7a57e sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 14 -> 15): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -7932,6 +8212,13 @@ to: blueprint d69e1109-06be-4469-8876-4292dc7885d7 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 16 -> 17): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8011,6 +8298,13 @@ to: blueprint d69e1109-06be-4469-8876-4292dc7885d7 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 15 -> 16): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8087,6 +8381,13 @@ to: blueprint d69e1109-06be-4469-8876-4292dc7885d7 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 15 -> 16): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8380,6 +8681,13 @@ to: blueprint 8e0cc787-e068-4a45-97ed-21029cbe4ddf sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 17 -> 18): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8522,6 +8830,13 @@ to: blueprint e31c9054-8549-4c68-acf9-a01f68d1fc9b sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 17 -> 18): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8603,6 +8918,13 @@ to: blueprint e31c9054-8549-4c68-acf9-a01f68d1fc9b sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 18): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8736,6 +9058,13 @@ to: blueprint 3e332949-6785-4aff-ad86-6134f5ce6152 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 18 -> 19): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -8867,6 +9196,13 @@ to: blueprint 05685571-d61f-4754-a2b2-604ea8c45dff sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 16 -> 17): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -9011,6 +9347,13 @@ to: blueprint 008e1541-3d9d-4a50-a877-eed4a3cf86ab sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 18): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -9091,6 +9434,13 @@ to: blueprint 008e1541-3d9d-4a50-a877-eed4a3cf86ab sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 19): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -9170,6 +9520,13 @@ to: blueprint 008e1541-3d9d-4a50-a877-eed4a3cf86ab sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 17): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------------ slot boot image source @@ -9288,6 +9645,13 @@ parent: 05685571-d61f-4754-a2b2-604ea8c45dff B artifact: version 1.0.0 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -9372,6 +9736,13 @@ parent: 05685571-d61f-4754-a2b2-604ea8c45dff B artifact: version 1.0.0 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -9455,6 +9826,13 @@ parent: 05685571-d61f-4754-a2b2-604ea8c45dff B artifact: version 1.0.0 + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition diff --git a/dev-tools/reconfigurator-cli/tests/output/cmds-unsafe-zone-mgs-stdout b/dev-tools/reconfigurator-cli/tests/output/cmds-unsafe-zone-mgs-stdout index 91ebec8ae2b..a3c30bcb77c 100644 --- a/dev-tools/reconfigurator-cli/tests/output/cmds-unsafe-zone-mgs-stdout +++ b/dev-tools/reconfigurator-cli/tests/output/cmds-unsafe-zone-mgs-stdout @@ -152,6 +152,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -228,6 +235,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled 98e6b7c2-2efa-41ca-b20a-0a4d61102fe6 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -300,6 +314,13 @@ to: blueprint 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 sled d81c6a84-79b8-4958-ae41-ea46c9b19763 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1171,6 +1192,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1243,6 +1271,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1312,6 +1347,13 @@ parent: 8da82a8e-bf97-4fbd-8ddd-9f6462732cf1 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -1408,6 +1450,13 @@ to: blueprint af934083-59b5-4bf6-8966-6fb5292c29e1 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -1854,6 +1903,13 @@ to: blueprint a5a8f242-ffa5-473c-8efd-2acf2dc0b736 sled 2b8f0cb3-0295-4b3c-bc58-4fe88b57112c (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: -------------------------------- slot boot image source diff --git a/nexus/db-model/src/deployment.rs b/nexus/db-model/src/deployment.rs index b003ae4bc50..e13e7c090b0 100644 --- a/nexus/db-model/src/deployment.rs +++ b/nexus/db-model/src/deployment.rs @@ -25,10 +25,11 @@ use nexus_db_schema::schema::{ bp_omicron_physical_disk, bp_omicron_zone, bp_omicron_zone_nic, bp_oximeter_read_policy, bp_pending_mgs_update_host_phase_1, bp_pending_mgs_update_rot, bp_pending_mgs_update_rot_bootloader, - bp_pending_mgs_update_sp, bp_sled_metadata, bp_target, - debug_log_blueprint_planning, + bp_pending_mgs_update_sp, bp_single_measurements, bp_sled_metadata, + bp_target, debug_log_blueprint_planning, }; use nexus_types::deployment::BlueprintPhysicalDiskDisposition; +use nexus_types::deployment::BlueprintSingleMeasurement; use nexus_types::deployment::BlueprintTarget; use nexus_types::deployment::BlueprintZoneConfig; use nexus_types::deployment::BlueprintZoneDisposition; @@ -64,8 +65,9 @@ use omicron_common::disk::DiskIdentity; use omicron_common::zpool_name::ZpoolName; use omicron_uuid_kinds::{ BlueprintKind, BlueprintUuid, DatasetKind, ExternalIpKind, ExternalIpUuid, - GenericUuid, MupdateOverrideKind, OmicronZoneKind, OmicronZoneUuid, - PhysicalDiskKind, SledKind, SledUuid, ZpoolKind, ZpoolUuid, + GenericUuid, MeasurementKind, MupdateOverrideKind, OmicronZoneKind, + OmicronZoneUuid, PhysicalDiskKind, SledKind, SledUuid, ZpoolKind, + ZpoolUuid, }; use sled_agent_types::inventory::OmicronZoneDataset; use sled_hardware_types::BaseboardId; @@ -1219,6 +1221,46 @@ impl TryFrom for BlueprintZoneImageSource { } } +#[derive(Queryable, Clone, Debug, Selectable, Insertable)] +#[diesel(table_name = bp_single_measurements)] +pub struct BpSingleMeasurement { + pub blueprint_id: DbTypedUuid, + pub sled_id: DbTypedUuid, + pub id: DbTypedUuid, + + pub image_artifact_sha256: ArtifactHash, +} + +impl BpSingleMeasurement { + pub fn new( + blueprint_id: BlueprintUuid, + sled_id: SledUuid, + measurement: &BlueprintSingleMeasurement, + ) -> Self { + Self { + blueprint_id: blueprint_id.into(), + sled_id: sled_id.into(), + id: omicron_uuid_kinds::MeasurementUuid::new_v4().into(), + image_artifact_sha256: measurement.hash.into(), + } + } + + pub fn to_measurement( + self, + artifact: Option, + ) -> BlueprintSingleMeasurement { + BlueprintSingleMeasurement { + version: match artifact { + Some(a) => { + BlueprintArtifactVersion::Available { version: a.version.0 } + } + None => BlueprintArtifactVersion::Unknown, + }, + hash: *self.image_artifact_sha256, + } + } +} + #[derive(Queryable, Clone, Debug, Selectable, Insertable)] #[diesel(table_name = bp_omicron_zone_nic)] pub struct BpOmicronZoneNic { diff --git a/nexus/db-model/src/schema_versions.rs b/nexus/db-model/src/schema_versions.rs index 1209e1c98f2..1773b3b8545 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(228, 0, 0); +pub const SCHEMA_VERSION: Version = Version::new(229, 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(229, "measurement-blueprints"), KnownVersion::new(228, "read-only-crucible-disks"), KnownVersion::new(227, "local-storage-unencrypted-dataset"), KnownVersion::new(226, "measurement-proper-inventory"), diff --git a/nexus/db-queries/src/db/datastore/deployment.rs b/nexus/db-queries/src/db/datastore/deployment.rs index a21d0b94b9c..c9248a14be1 100644 --- a/nexus/db-queries/src/db/datastore/deployment.rs +++ b/nexus/db-queries/src/db/datastore/deployment.rs @@ -58,6 +58,7 @@ use nexus_db_model::BpPendingMgsUpdateHostPhase1; use nexus_db_model::BpPendingMgsUpdateRot; use nexus_db_model::BpPendingMgsUpdateRotBootloader; use nexus_db_model::BpPendingMgsUpdateSp; +use nexus_db_model::BpSingleMeasurement; use nexus_db_model::BpSledMetadata; use nexus_db_model::BpTarget; use nexus_db_model::DbArtifactVersion; @@ -77,7 +78,9 @@ use nexus_db_schema::enums::HwRotSlotEnum; use nexus_db_schema::enums::SpTypeEnum; use nexus_types::deployment::Blueprint; use nexus_types::deployment::BlueprintExpungedZoneAccessReason; +use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintMetadata; +use nexus_types::deployment::BlueprintSingleMeasurement; use nexus_types::deployment::BlueprintSledConfig; use nexus_types::deployment::BlueprintSource; use nexus_types::deployment::BlueprintTarget; @@ -270,6 +273,20 @@ impl DataStore { }) .collect::>(); + let measurements = blueprint + .sleds + .iter() + .flat_map(|(sled_id, sled)| { + sled.measurements.iter().map(move |measurement| { + BpSingleMeasurement::new( + blueprint_id, + *sled_id, + measurement, + ) + }) + }) + .collect::>(); + let omicron_physical_disks = blueprint .sleds .iter() @@ -399,6 +416,21 @@ impl DataStore { .await?; } + // Insert all measurements for this blueprint. + { + // Skip formatting this line to prevent rustfmt bailing out. + #[rustfmt::skip] + use nexus_db_schema::schema::bp_single_measurements::dsl + as single_measurement; + let _ = diesel::insert_into( + single_measurement::bp_single_measurements, + ) + .values(measurements) + .execute_async(&conn) + .await?; + } + + // Insert all physical disks for this blueprint. { // Skip formatting this line to prevent rustfmt bailing out. @@ -1220,6 +1252,9 @@ impl DataStore { .remove_mupdate_override .map(|id| id.into()), host_phase_2: s.host_phase_2(slot_a_version, slot_b_version), + // We start with measurements from the install dataset, if + // there's anything in the database this will get overwritten + measurements: BlueprintMeasurements::InstallDataset, }; let old = sled_configs.insert(s.sled_id.into(), config); bail_unless!( @@ -1229,6 +1264,76 @@ impl DataStore { ); } + let raw_measurements: Vec<(BpSingleMeasurement, Option)> = { + use nexus_db_schema::schema::bp_single_measurements::dsl; + use nexus_db_schema::schema::tuf_artifact::dsl as tuf_artifact_dsl; + + let mut rows = Vec::new(); + let mut paginator = Paginator::new( + SQL_BATCH_SIZE, + dropshot::PaginationOrder::Ascending, + ); + while let Some(p) = paginator.next() { + let batch = paginated( + dsl::bp_single_measurements, + dsl::id, + &p.current_pagparams(), + ) + .filter(dsl::blueprint_id.eq(to_db_typed_uuid(blueprint_id))) + // Left join in case the artifact is missing from the + // tuf_artifact table, which is non-fatal. + .left_join( + tuf_artifact_dsl::tuf_artifact.on(tuf_artifact_dsl::kind + .eq(ArtifactKind::MEASUREMENT_CORPUS.to_string()) + .and( + tuf_artifact_dsl::sha256 + .eq(dsl::image_artifact_sha256), + )), + ) + .select(( + BpSingleMeasurement::as_select(), + Option::::as_select(), + )) + .load_async::<(BpSingleMeasurement, Option)>( + &*conn, + ) + .await + .map_err(|e| { + public_error_from_diesel(e, ErrorHandler::Server) + })?; + paginator = p.found_batch(&batch, &|(z, _)| z.id); + rows.extend(batch); + } + rows + }; + + let mut omicron_measurements: BTreeMap< + SledUuid, + BTreeSet, + > = BTreeMap::new(); + for (m, artifact) in raw_measurements { + omicron_measurements + .entry(m.sled_id.into()) + .and_modify(|e| { + e.insert(m.to_measurement(artifact)); + }) + .or_insert(BTreeSet::new()); + } + + for (id, artifacts) in omicron_measurements { + let sled_config = sled_configs.get_mut(&id).ok_or_else(|| { + // This means we found a measurement without + // the associated sled + Error::internal_error(&format!( + "unknown sled: {} for inserting measurements", + id + )) + })?; + + sled_config.measurements = + BlueprintMeasurements::Artifacts { artifacts }; + } + // Assemble a mutable map of all the NICs found, by NIC id. As we // match these up with the corresponding zone below, we'll remove items // from this set. That way we can tell if the same NIC was used twice @@ -4617,6 +4722,7 @@ mod tests { blueprint_id ), query_count!(bp_pending_mgs_update_host_phase_1, blueprint_id), + query_count!(bp_single_measurements, blueprint_id), query_count!(debug_log_blueprint_planning, blueprint_id), ] { let count: i64 = result.unwrap(); @@ -4736,6 +4842,7 @@ mod tests { "bp_clickhouse_keeper_zone_id_to_node_id", "bp_clickhouse_server_zone_id_to_node_id", "debug_log_blueprint_planning", + "bp_single_measurements", ]; // Check that all non-exception tables have at least one row diff --git a/nexus/db-schema/src/schema.rs b/nexus/db-schema/src/schema.rs index 903c6961aa6..d2d64ac4e3e 100644 --- a/nexus/db-schema/src/schema.rs +++ b/nexus/db-schema/src/schema.rs @@ -2215,6 +2215,18 @@ table! { } } +table! { + bp_single_measurements (blueprint_id, id) { + blueprint_id -> Uuid, + sled_id -> Uuid, + id -> Uuid, + + image_artifact_sha256 -> Text, + } +} + +allow_tables_to_appear_in_same_query!(bp_single_measurements, tuf_artifact); + table! { bp_omicron_zone (blueprint_id, id) { blueprint_id -> Uuid, @@ -2607,6 +2619,7 @@ allow_tables_to_appear_in_same_query!( affinity_group_instance_membership, bp_omicron_zone, bp_target, + bp_single_measurements, rendezvous_debug_dataset, crucible_dataset, disk, diff --git a/nexus/reconfigurator/execution/src/database.rs b/nexus/reconfigurator/execution/src/database.rs index 7d641f929bd..2ac082ca32d 100644 --- a/nexus/reconfigurator/execution/src/database.rs +++ b/nexus/reconfigurator/execution/src/database.rs @@ -70,6 +70,7 @@ mod test { use nexus_inventory::now_db_precision; use nexus_types::deployment::Blueprint; use nexus_types::deployment::BlueprintHostPhase2DesiredSlots; + use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintSledConfig; use nexus_types::deployment::BlueprintSource; use nexus_types::deployment::BlueprintTarget; @@ -174,6 +175,7 @@ mod test { remove_mupdate_override: None, host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents( ), + measurements: BlueprintMeasurements::InstallDataset, }, ); diff --git a/nexus/reconfigurator/execution/src/dns.rs b/nexus/reconfigurator/execution/src/dns.rs index 4e8b2a15f64..4953d2e2f16 100644 --- a/nexus/reconfigurator/execution/src/dns.rs +++ b/nexus/reconfigurator/execution/src/dns.rs @@ -338,6 +338,7 @@ mod test { use nexus_test_utils_macros::nexus_test; use nexus_types::deployment::Blueprint; use nexus_types::deployment::BlueprintHostPhase2DesiredSlots; + use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintSledConfig; use nexus_types::deployment::BlueprintSource; use nexus_types::deployment::BlueprintTarget; @@ -705,6 +706,7 @@ mod test { remove_mupdate_override: None, host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents(), + measurements: BlueprintMeasurements::InstallDataset, }, ); } diff --git a/nexus/reconfigurator/execution/src/omicron_sled_config.rs b/nexus/reconfigurator/execution/src/omicron_sled_config.rs index 9f08a815c82..5a5c309b87a 100644 --- a/nexus/reconfigurator/execution/src/omicron_sled_config.rs +++ b/nexus/reconfigurator/execution/src/omicron_sled_config.rs @@ -85,6 +85,7 @@ mod tests { use nexus_types::deployment::BlueprintDatasetConfig; use nexus_types::deployment::BlueprintDatasetDisposition; use nexus_types::deployment::BlueprintHostPhase2DesiredSlots; + use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintPhysicalDiskConfig; use nexus_types::deployment::BlueprintPhysicalDiskDisposition; use nexus_types::deployment::BlueprintZoneConfig; @@ -271,6 +272,7 @@ mod tests { zones, remove_mupdate_override: None, host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents(), + measurements: BlueprintMeasurements::InstallDataset, }; let sled_configs = [(sim_sled_agent.id, sled_config.clone())].into_iter().collect(); diff --git a/nexus/reconfigurator/planning/src/blueprint_editor/sled_editor.rs b/nexus/reconfigurator/planning/src/blueprint_editor/sled_editor.rs index 3e5fda5cee3..51cdf7b552f 100644 --- a/nexus/reconfigurator/planning/src/blueprint_editor/sled_editor.rs +++ b/nexus/reconfigurator/planning/src/blueprint_editor/sled_editor.rs @@ -24,6 +24,7 @@ use nexus_types::deployment::BlueprintDatasetDisposition; use nexus_types::deployment::BlueprintExpungedZoneAccessReason; use nexus_types::deployment::BlueprintHostPhase2DesiredContents; use nexus_types::deployment::BlueprintHostPhase2DesiredSlots; +use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintPhysicalDiskConfig; use nexus_types::deployment::BlueprintPhysicalDiskDisposition; use nexus_types::deployment::BlueprintSledConfig; @@ -264,6 +265,8 @@ impl SledEditor { .remove_mupdate_override .finalize(), host_phase_2: self.host_phase_2.finalize(), + // This will change once the reconfigurator work is moved through + measurements: BlueprintMeasurements::InstallDataset, }, edit_counts: SledEditCounts { disks: disks_counts, 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 eeb2cd556a0..b0afab63fef 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 @@ -15,6 +15,13 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -148,6 +155,13 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -276,6 +290,13 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -401,6 +422,13 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -526,6 +554,13 @@ parent: e35b2fdd-354d-48d9-acb5-703b2c269a54 B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition 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 476e63be5a2..32b59744cfe 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 @@ -5,6 +5,13 @@ to: blueprint d9a427e6-3d1c-462f-ac31-ba067a00c4f9 sled ec61eded-c34f-443d-a580-dadf757529c4 (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ ++ install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 39f004c62a8..3f28aa7d5c9 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 @@ -5,6 +5,13 @@ to: blueprint 4ebbcbb6-a8f3-439e-ae8d-663ac21dcb3a sled ec61eded-c34f-443d-a580-dadf757529c4 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 dc4d465096c..609351f5f0a 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 @@ -5,6 +5,13 @@ to: blueprint 51701dfe-f3b0-4c65-a26c-64ad929b4e24 sled c52410de-5fea-4e77-b162-756d103523b3 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 44bd78a7e0e..33f1300e9d1 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 @@ -5,6 +5,13 @@ to: blueprint 96415178-4e18-4a19-b7db-7e80a9193497 sled a1b477db-b629-48eb-911d-1ccdafca75b9 (active -> decommissioned, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -217,6 +224,13 @@ to: blueprint 96415178-4e18-4a19-b7db-7e80a9193497 sled d67ce8f0-a691-4010-b414-420d82e80527 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -338,6 +352,13 @@ to: blueprint 96415178-4e18-4a19-b7db-7e80a9193497 sled fefcf4cf-f7e7-46b3-b629-058526ce440e (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 b05bef92bbf..7e0b73cc635 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_decommissions_sleds_bp2.txt @@ -15,6 +15,13 @@ parent: 516e80a3-b362-4fac-bd3c-4559717120dd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------- vendor model serial disposition @@ -140,6 +147,13 @@ parent: 516e80a3-b362-4fac-bd3c-4559717120dd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -266,6 +280,13 @@ parent: 516e80a3-b362-4fac-bd3c-4559717120dd B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition 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 0941eb702e2..65069761b70 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 @@ -5,6 +5,13 @@ to: blueprint 13ba7078-be27-448e-a2f0-e6bd96335acd sled 164d275d-a936-4f06-ad53-a32cb3c8d3c8 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -128,6 +135,13 @@ to: blueprint 13ba7078-be27-448e-a2f0-e6bd96335acd sled 6a4c45f6-e02f-490c-bbfa-b32fb89e8e86 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -251,6 +265,13 @@ to: blueprint 13ba7078-be27-448e-a2f0-e6bd96335acd sled be531a62-9897-430d-acd2-ce14b4632627 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 7f1cbfe20ff..c9f29048f08 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 @@ -5,6 +5,13 @@ to: blueprint c194310c-e11f-4c2b-a38a-25d8bb350a60 sled 6a4c45f6-e02f-490c-bbfa-b32fb89e8e86 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -131,6 +138,13 @@ to: blueprint c194310c-e11f-4c2b-a38a-25d8bb350a60 sled be531a62-9897-430d-acd2-ce14b4632627 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 c7506d648b1..41aeda7fa57 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 @@ -5,6 +5,13 @@ to: blueprint 9980398d-09c8-4591-97b6-9ebf9cc5459f sled b340c044-bd87-4a3b-aee3-e6ccd9d3ff02 (active -> decommissioned, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -223,6 +230,13 @@ to: blueprint 9980398d-09c8-4591-97b6-9ebf9cc5459f sled cdba3bea-3407-4b6e-a029-19bf4a02fca7 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -352,6 +366,13 @@ to: blueprint 9980398d-09c8-4591-97b6-9ebf9cc5459f sled fe7b9b01-e803-41ea-9e39-db240dcd9029 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 a3463eb5b74..71cb6ab888b 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 @@ -5,6 +5,13 @@ to: blueprint 71be0671-4467-45a9-956c-fb5aebb9b455 sled 883d9767-021c-4836-81cf-fa02d73fead0 (active, config generation 4 -> 5): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -131,6 +138,13 @@ to: blueprint 71be0671-4467-45a9-956c-fb5aebb9b455 sled aae6114d-956b-4980-9759-b00b1ed893ee (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -260,6 +274,13 @@ to: blueprint 71be0671-4467-45a9-956c-fb5aebb9b455 sled be4a3b25-dde1-40a4-b909-9fa4379a8510 (active, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 2a058f44ce9..aa641d7d163 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_1_2.txt @@ -5,6 +5,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled 48d95fef-bc9f-4f50-9a53-1e075836291d (active -> decommissioned, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -211,6 +218,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled 75bc286f-2b4b-482c-9431-59272af529da (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -329,6 +343,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled affab35f-600a-4109-8ea0-34a067a4e0bc (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source 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 3ebc0cd65f7..1d92a0fcecc 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_2_2a.txt @@ -5,6 +5,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled 68d24ac5-f341-49ea-a92a-0381b52ab387 (was decommissioned, config generation 3): + measurements: + ------------------------------ + hash version + ------------------------------ +- install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -124,6 +131,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled 2d1cb4f2-cf44-40fc-b118-85036eb732a9 (active, config generation 2): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source @@ -243,6 +257,13 @@ to: blueprint 86df79ea-8652-477a-960e-32c21f46d255 sled 48d95fef-bc9f-4f50-9a53-1e075836291d (decommissioned, config generation 3 -> 4): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt index db77212f7be..7db5d591793 100644 --- a/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt +++ b/nexus/reconfigurator/planning/tests/output/planner_nonprovisionable_bp2.txt @@ -15,6 +15,13 @@ parent: 2c4d059d-6498-49ca-8052-6e696a675f6e B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -140,6 +147,13 @@ parent: 2c4d059d-6498-49ca-8052-6e696a675f6e B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------- vendor model serial disposition @@ -262,6 +276,13 @@ parent: 2c4d059d-6498-49ca-8052-6e696a675f6e B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------- vendor model serial disposition @@ -384,6 +405,13 @@ parent: 2c4d059d-6498-49ca-8052-6e696a675f6e B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition @@ -507,6 +535,13 @@ parent: 2c4d059d-6498-49ca-8052-6e696a675f6e B current contents + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + physical disks: ------------------------------------------------------------------------------------ vendor model serial disposition 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 3dd292b0960..a26842828cb 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 @@ -5,6 +5,13 @@ to: blueprint 1481141d-a5cf-4103-8344-738967e0f110 sled 216f8913-f977-46da-8803-e6b98db7f437 (active, config generation 2 -> 3): + measurements: + ------------------------------ + hash version + ------------------------------ + install dataset (no version) + + host phase 2 contents: ------------------------ slot boot image source diff --git a/nexus/src/app/background/tasks/blueprint_execution.rs b/nexus/src/app/background/tasks/blueprint_execution.rs index 761e30c05e4..d0b391065f9 100644 --- a/nexus/src/app/background/tasks/blueprint_execution.rs +++ b/nexus/src/app/background/tasks/blueprint_execution.rs @@ -241,9 +241,10 @@ mod test { StepOutcome, StepStatus, }; use nexus_types::deployment::{ - Blueprint, BlueprintHostPhase2DesiredSlots, BlueprintSledConfig, - BlueprintSource, BlueprintTarget, BlueprintZoneConfig, - BlueprintZoneDisposition, BlueprintZoneImageSource, BlueprintZoneType, + Blueprint, BlueprintHostPhase2DesiredSlots, BlueprintMeasurements, + BlueprintSledConfig, BlueprintSource, BlueprintTarget, + BlueprintZoneConfig, BlueprintZoneDisposition, + BlueprintZoneImageSource, BlueprintZoneType, CockroachDbPreserveDowngrade, OximeterReadMode, PendingMgsUpdates, blueprint_zone_type, }; @@ -295,6 +296,7 @@ mod test { remove_mupdate_override: None, host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents(), + measurements: BlueprintMeasurements::InstallDataset, }, ) }) diff --git a/nexus/test-utils/src/starter.rs b/nexus/test-utils/src/starter.rs index d662ca2c676..abf211680c1 100644 --- a/nexus/test-utils/src/starter.rs +++ b/nexus/test-utils/src/starter.rs @@ -37,6 +37,7 @@ use nexus_types::deployment::Blueprint; use nexus_types::deployment::BlueprintDatasetConfig; use nexus_types::deployment::BlueprintDatasetDisposition; use nexus_types::deployment::BlueprintHostPhase2DesiredSlots; +use nexus_types::deployment::BlueprintMeasurements; use nexus_types::deployment::BlueprintPhysicalDiskConfig; use nexus_types::deployment::BlueprintPhysicalDiskDisposition; use nexus_types::deployment::BlueprintSledConfig; @@ -1396,6 +1397,7 @@ impl<'a, N: NexusServer> ControlPlaneStarter<'a, N> { remove_mupdate_override: None, host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents(), + measurements: BlueprintMeasurements::InstallDataset, }, ); } diff --git a/nexus/types/src/deployment.rs b/nexus/types/src/deployment.rs index 99f739e2da8..d2393d2598c 100644 --- a/nexus/types/src/deployment.rs +++ b/nexus/types/src/deployment.rs @@ -20,6 +20,7 @@ pub use crate::inventory::ZpoolName; use blueprint_diff::ClickhouseClusterConfigDiffTablesForSingleBlueprint; use blueprint_display::BpDatasetsTableSchema; use blueprint_display::BpHostPhase2TableSchema; +use blueprint_display::BpMeasurementsTableSchema; use blueprint_display::BpTableColumn; use daft::Diffable; use gateway_types::component::SpType; @@ -55,6 +56,7 @@ use serde::Deserialize; use serde::Serialize; use sled_agent_types_versions::latest::inventory::HostPhase2DesiredContents; use sled_agent_types_versions::latest::inventory::HostPhase2DesiredSlots; +use sled_agent_types_versions::latest::inventory::OmicronSingleMeasurement; use sled_agent_types_versions::latest::inventory::OmicronSledConfig; use sled_agent_types_versions::latest::inventory::OmicronZoneConfig; use sled_agent_types_versions::latest::inventory::OmicronZoneImageSource; @@ -967,6 +969,68 @@ impl BpTableData for BlueprintHostPhase2TableData<'_> { } } +/// Wrapper to display a table of a `BlueprintSledConfig`'s measurements. +#[derive(Clone, Debug)] +struct BlueprintMeasurementsTableData<'a> { + measurements: &'a BlueprintMeasurements, +} + +impl<'a> BlueprintMeasurementsTableData<'a> { + fn new(measurements: &'a BlueprintMeasurements) -> Self { + Self { measurements } + } + + fn all_rows( + measurement: &BlueprintMeasurements, + state: BpDiffState, + ) -> impl Iterator { + match measurement { + BlueprintMeasurements::Artifacts { artifacts } => artifacts + .iter() + .map(move |d| { + BpTableRow::from_strings( + state, + vec![d.hash.to_string(), d.version.to_string()], + ) + }) + .collect::>() + .into_iter(), + BlueprintMeasurements::InstallDataset => { + vec![BpTableRow::from_strings( + state, + vec![ + "install dataset".to_string(), + "(no version)".to_string(), + ], + )] + .into_iter() + .collect::>() + .into_iter() + } + } + } + + fn diff_leaf<'b>( + diffs: &daft::Leaf<&'b BlueprintMeasurements>, + ) -> impl Iterator + 'b { + if diffs.is_unchanged() { + Self::all_rows(diffs.before, BpDiffState::Unchanged) + .collect::>() + .into_iter() + } else { + let a = Self::all_rows(diffs.before, BpDiffState::Removed); + let b = Self::all_rows(diffs.after, BpDiffState::Added); + a.chain(b).collect::>().into_iter() + } + } +} + +impl BpTableData for BlueprintMeasurementsTableData<'_> { + fn rows(&self, state: BpDiffState) -> impl Iterator { + Self::all_rows(self.measurements, state) + } +} + /// Wrapper to display a table of a `BlueprintSledConfig`'s disks. #[derive(Clone, Debug)] struct BlueprintPhysicalDisksTableData<'a> { @@ -1224,6 +1288,7 @@ impl fmt::Display for BlueprintDisplay<'_> { zones, remove_mupdate_override, host_phase_2, + measurements, } = config; // Report toplevel sled info @@ -1251,6 +1316,16 @@ impl fmt::Display for BlueprintDisplay<'_> { ); writeln!(f, "{host_phase_2_table}\n")?; + // Construct the desired host phase 2 contents table + let measurements_table = BpTable::new( + BpMeasurementsTableSchema {}, + None, + BlueprintMeasurementsTableData::new(measurements) + .rows(BpDiffState::Unchanged) + .collect(), + ); + writeln!(f, "{measurements_table}\n")?; + // Construct the disks subtable let disks_table = BpTable::new( BpPhysicalDisksTableSchema {}, @@ -1364,6 +1439,8 @@ pub struct BlueprintSledConfig { pub zones: IdOrdMap, pub remove_mupdate_override: Option, pub host_phase_2: BlueprintHostPhase2DesiredSlots, + #[serde(default = "BlueprintMeasurements::default")] + pub measurements: BlueprintMeasurements, } impl BlueprintSledConfig { @@ -1414,7 +1491,7 @@ impl BlueprintSledConfig { .collect(), remove_mupdate_override: self.remove_mupdate_override, host_phase_2: self.host_phase_2.into(), - measurements: BTreeSet::new(), + measurements: self.measurements.into(), } } @@ -1820,6 +1897,94 @@ impl fmt::Display for BlueprintArtifactVersion { } } +#[derive( + Clone, + Debug, + PartialEq, + Eq, + Hash, + PartialOrd, + Ord, + JsonSchema, + Deserialize, + Serialize, + Diffable, +)] +pub struct BlueprintSingleMeasurement { + pub version: BlueprintArtifactVersion, + pub hash: ArtifactHash, +} + +impl Display for BlueprintSingleMeasurement { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{} {}", self.hash, self.version) + } +} + +#[derive( + Clone, Debug, Deserialize, Serialize, JsonSchema, PartialEq, Eq, Diffable, +)] +#[serde(tag = "type", rename_all = "snake_case")] +pub enum BlueprintMeasurements { + InstallDataset, + Artifacts { artifacts: BTreeSet }, +} + +impl BlueprintMeasurements { + fn default() -> Self { + Self::InstallDataset + } + + fn len(&self) -> usize { + match self { + BlueprintMeasurements::InstallDataset => 0, + BlueprintMeasurements::Artifacts { artifacts } => artifacts.len(), + } + } + + pub fn iter(&self) -> impl Iterator { + match self { + BlueprintMeasurements::InstallDataset => { + std::iter::empty::<&BlueprintSingleMeasurement>() + .collect::>() + .into_iter() + } + BlueprintMeasurements::Artifacts { artifacts } => artifacts + .iter() + .collect::>() + .into_iter(), + } + } +} + +impl Display for BlueprintMeasurements { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match self { + BlueprintMeasurements::InstallDataset => { + writeln!(f, "(install dataset)")?; + } + BlueprintMeasurements::Artifacts { artifacts } => { + for m in artifacts { + writeln!(f, "{m}")?; + } + } + } + Ok(()) + } +} + +impl From for BTreeSet { + fn from(value: BlueprintMeasurements) -> Self { + match value { + BlueprintMeasurements::InstallDataset => BTreeSet::new(), + BlueprintMeasurements::Artifacts { artifacts } => artifacts + .into_iter() + .map(|x| OmicronSingleMeasurement { hash: x.hash }) + .collect(), + } + } +} + /// Describes the desired contents for both host phase 2 slots. /// /// This is the blueprint version of [`HostPhase2DesiredSlots`]. diff --git a/nexus/types/src/deployment/blueprint_diff.rs b/nexus/types/src/deployment/blueprint_diff.rs index 6e24d86908d..41e9638b00c 100644 --- a/nexus/types/src/deployment/blueprint_diff.rs +++ b/nexus/types/src/deployment/blueprint_diff.rs @@ -6,15 +6,16 @@ use super::blueprint_display::{ BpClickhouseServersTableSchema, BpDatasetsTableSchema, BpDiffState, - BpGeneration, BpHostPhase2TableSchema, BpOmicronZonesTableSchema, - BpPendingMgsUpdates, BpPhysicalDisksTableSchema, BpTable, BpTableColumn, - BpTableData, BpTableRow, KvList, KvPair, constants::*, - linear_table_modified, linear_table_unchanged, + BpGeneration, BpHostPhase2TableSchema, BpMeasurementsTableSchema, + BpOmicronZonesTableSchema, BpPendingMgsUpdates, BpPhysicalDisksTableSchema, + BpTable, BpTableColumn, BpTableData, BpTableRow, KvList, KvPair, + constants::*, linear_table_modified, linear_table_unchanged, }; use super::{ BlueprintDatasetConfigDiff, BlueprintDatasetDisposition, BlueprintDiff, BlueprintHostPhase2DesiredSlots, BlueprintHostPhase2DesiredSlotsDiff, - BlueprintHostPhase2TableData, BlueprintMetadata, + BlueprintHostPhase2TableData, BlueprintMeasurements, + BlueprintMeasurementsTableData, BlueprintMetadata, BlueprintPhysicalDiskConfig, BlueprintPhysicalDiskConfigDiff, BlueprintZoneConfigDiff, BlueprintZoneImageSource, ClickhouseClusterConfig, CockroachDbPreserveDowngrade, PendingMgsUpdatesDiff, unwrap_or_none, @@ -221,6 +222,32 @@ impl<'a> BlueprintDiffSummary<'a> { .fold(0, |acc, c| acc + c.datasets.modified().count()) } + pub fn total_measurements_added(&self) -> usize { + self.diff + .sleds + .added + .values() + .fold(0, |acc, c| acc + c.measurements.len()) + + self + .diff + .sleds + .modified_values_diff() + .fold(0, |acc, c| acc + c.measurements.after.len()) + } + + pub fn total_measurements_removed(&self) -> usize { + self.diff + .sleds + .removed + .values() + .fold(0, |acc, c| acc + c.measurements.len()) + + self + .diff + .sleds + .modified_values_diff() + .fold(0, |acc, c| acc + c.measurements.before.len()) + } + /// Iterate over all added zones on a sled pub fn added_zones(&self, sled_id: &SledUuid) -> Option { // First check if the sled is added @@ -1584,6 +1611,65 @@ impl ClickhouseClusterConfigDiffTables { } } +/// Differences in measurements +#[derive(Debug)] +pub struct BpDiffMeasurements<'a> { + pub added: BTreeMap, + pub common: BTreeMap>, + pub removed: BTreeMap, +} + +impl<'a> BpDiffMeasurements<'a> { + /// Convert from our diff summary to our display compatibility layer + pub fn from_diff_summary(summary: &BlueprintDiffSummary<'a>) -> Self { + let sleds = &summary.diff.sleds; + Self { + added: sleds + .added + .iter() + .map(|(sled_id, config)| (**sled_id, &config.measurements)) + .collect(), + common: sleds + .common + .iter() + .map(|(sled_id, config)| { + (**sled_id, config.diff_pair().measurements) + }) + .collect(), + removed: sleds + .removed + .iter() + .map(|(sled_id, config)| (**sled_id, &config.measurements)) + .collect(), + } + } + + /// Return a [`BpTable`] for the given `sled_id` + pub fn to_bp_sled_subtable(&self, sled_id: &SledUuid) -> Option { + let mut rows = vec![]; + if let Some(diff) = self.common.get(sled_id) { + rows.extend(BlueprintMeasurementsTableData::diff_leaf(diff)); + } + if let Some(desired) = self.removed.get(sled_id) { + rows.extend( + BlueprintMeasurementsTableData::new(desired) + .rows(BpDiffState::Removed), + ); + } + if let Some(desired) = self.added.get(sled_id) { + rows.extend( + BlueprintMeasurementsTableData::new(desired) + .rows(BpDiffState::Added), + ); + } + if rows.is_empty() { + None + } else { + Some(BpTable::new(BpMeasurementsTableSchema {}, None, rows)) + } + } +} + /// Differences in host phase 2 contents #[derive(Debug)] pub struct BpDiffHostPhase2<'a> { @@ -1753,6 +1839,7 @@ pub struct BlueprintDiffDisplay<'diff, 'b> { disks: BpDiffPhysicalDisks<'diff>, datasets: BpDiffDatasets, host_phase_2: BpDiffHostPhase2<'diff>, + measurements: BpDiffMeasurements<'diff>, pending_mgs_updates: BpDiffPendingMgsUpdates<'diff, 'b>, } @@ -1765,6 +1852,7 @@ impl<'diff, 'b> BlueprintDiffDisplay<'diff, 'b> { let disks = BpDiffPhysicalDisks::from_diff_summary(summary); let datasets = BpDiffDatasets::from_diff_summary(summary); let host_phase_2 = BpDiffHostPhase2::from_diff_summary(summary); + let measurements = BpDiffMeasurements::from_diff_summary(summary); let pending_mgs_updates = BpDiffPendingMgsUpdates::from_diff_summary(summary); Self { @@ -1775,6 +1863,7 @@ impl<'diff, 'b> BlueprintDiffDisplay<'diff, 'b> { disks, datasets, host_phase_2, + measurements, pending_mgs_updates, } } @@ -1918,6 +2007,11 @@ impl<'diff, 'b> BlueprintDiffDisplay<'diff, 'b> { f: &mut fmt::Formatter<'_>, sled_id: &SledUuid, ) -> fmt::Result { + // Write the measurements if needed + if let Some(table) = self.measurements.to_bp_sled_subtable(sled_id) { + writeln!(f, "{table}\n")?; + } + // Write the host phase 2 table if needed if let Some(table) = self.host_phase_2.to_bp_sled_subtable(sled_id) { writeln!(f, "{table}\n")?; diff --git a/nexus/types/src/deployment/blueprint_display.rs b/nexus/types/src/deployment/blueprint_display.rs index a202a171a9c..5fa108d6ac6 100644 --- a/nexus/types/src/deployment/blueprint_display.rs +++ b/nexus/types/src/deployment/blueprint_display.rs @@ -352,6 +352,18 @@ impl fmt::Display for BpTable { } } +/// The [`BpTable`] schema for desired host phase 2 contents +pub struct BpMeasurementsTableSchema {} +impl BpTableSchema for BpMeasurementsTableSchema { + fn table_name(&self) -> &'static str { + "measurements" + } + + fn column_names(&self) -> &'static [&'static str] { + &["hash", "version"] + } +} + /// The [`BpTable`] schema for desired host phase 2 contents pub struct BpHostPhase2TableSchema {} impl BpTableSchema for BpHostPhase2TableSchema { diff --git a/openapi/nexus-lockstep.json b/openapi/nexus-lockstep.json index f2e7009e42a..ef71ad059f1 100644 --- a/openapi/nexus-lockstep.json +++ b/openapi/nexus-lockstep.json @@ -2205,6 +2205,46 @@ "slot_b" ] }, + "BlueprintMeasurements": { + "oneOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "install_dataset" + ] + } + }, + "required": [ + "type" + ] + }, + { + "type": "object", + "properties": { + "artifacts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BlueprintSingleMeasurement" + }, + "uniqueItems": true + }, + "type": { + "type": "string", + "enum": [ + "artifacts" + ] + } + }, + "required": [ + "artifacts", + "type" + ] + } + ] + }, "BlueprintMetadata": { "description": "Describe high-level metadata about a blueprint", "type": "object", @@ -2400,6 +2440,22 @@ } ] }, + "BlueprintSingleMeasurement": { + "type": "object", + "properties": { + "hash": { + "type": "string", + "format": "hex string (32 bytes)" + }, + "version": { + "$ref": "#/components/schemas/BlueprintArtifactVersion" + } + }, + "required": [ + "hash", + "version" + ] + }, "BlueprintSledConfig": { "description": "Information about the configuration of a sled as recorded in a blueprint.\n\nPart of [`Blueprint`].", "type": "object", @@ -2449,6 +2505,16 @@ "format": "uint16", "minimum": 0 }, + "measurements": { + "default": { + "type": "install_dataset" + }, + "allOf": [ + { + "$ref": "#/components/schemas/BlueprintMeasurements" + } + ] + }, "remove_mupdate_override": { "nullable": true, "allOf": [ diff --git a/schema/crdb/dbinit.sql b/schema/crdb/dbinit.sql index 0fc4520b3ae..df29cf1a76d 100644 --- a/schema/crdb/dbinit.sql +++ b/schema/crdb/dbinit.sql @@ -5195,6 +5195,18 @@ CREATE TABLE IF NOT EXISTS omicron.public.bp_sled_metadata ( PRIMARY KEY (blueprint_id, sled_id) ); +-- description of measurements specified in a blueprint +CREATE TABLE IF NOT EXISTS omicron.public.bp_single_measurements ( + -- foreign key into the `blueprint` table + blueprint_id UUID NOT NULL, + sled_id UUID NOT NULL, + -- id solely for database purposes + id UUID NOT NULL, + + image_artifact_sha256 STRING(64) NOT NULL, + PRIMARY KEY (blueprint_id, id) +); + -- description of omicron physical disks specified in a blueprint. CREATE TABLE IF NOT EXISTS omicron.public.bp_omicron_physical_disk ( -- foreign key into the `blueprint` table @@ -8173,7 +8185,7 @@ INSERT INTO omicron.public.db_metadata ( version, target_version ) VALUES - (TRUE, NOW(), NOW(), '228.0.0', NULL) + (TRUE, NOW(), NOW(), '229.0.0', NULL) ON CONFLICT DO NOTHING; COMMIT; diff --git a/schema/crdb/measurement-blueprints/up01.sql b/schema/crdb/measurement-blueprints/up01.sql new file mode 100644 index 00000000000..d0524d5532b --- /dev/null +++ b/schema/crdb/measurement-blueprints/up01.sql @@ -0,0 +1,10 @@ +-- Table for blueprint measurements +CREATE TABLE IF NOT EXISTS omicron.public.bp_single_measurements ( + blueprint_id UUID NOT NULL, + sled_id UUID NOT NULL, + id UUID NOT NULL, + + image_artifact_sha256 STRING(64) NOT NULL, + PRIMARY KEY (blueprint_id, id) +); + diff --git a/sled-agent/src/rack_setup/plan/service.rs b/sled-agent/src/rack_setup/plan/service.rs index 9b14881d4c3..1b694d96c72 100644 --- a/sled-agent/src/rack_setup/plan/service.rs +++ b/sled-agent/src/rack_setup/plan/service.rs @@ -18,13 +18,13 @@ use internal_dns_types::names::ServiceName; use nexus_types::deployment::LastAllocatedSubnetIpOffset; use nexus_types::deployment::{ Blueprint, BlueprintDatasetConfig, BlueprintDatasetDisposition, - BlueprintHostPhase2DesiredSlots, BlueprintPhysicalDiskConfig, - BlueprintPhysicalDiskDisposition, BlueprintSledConfig, BlueprintSource, - BlueprintZoneConfig, BlueprintZoneDisposition, BlueprintZoneImageSource, - BlueprintZoneType, CockroachDbPreserveDowngrade, - OmicronZoneExternalFloatingAddr, OmicronZoneExternalFloatingIp, - OmicronZoneExternalSnatIp, OximeterReadMode, PendingMgsUpdates, - blueprint_zone_type, + BlueprintHostPhase2DesiredSlots, BlueprintMeasurements, + BlueprintPhysicalDiskConfig, BlueprintPhysicalDiskDisposition, + BlueprintSledConfig, BlueprintSource, BlueprintZoneConfig, + BlueprintZoneDisposition, BlueprintZoneImageSource, BlueprintZoneType, + CockroachDbPreserveDowngrade, OmicronZoneExternalFloatingAddr, + OmicronZoneExternalFloatingIp, OmicronZoneExternalSnatIp, OximeterReadMode, + PendingMgsUpdates, blueprint_zone_type, }; use nexus_types::external_api::views::SledState; use omicron_common::address::{ @@ -946,6 +946,7 @@ impl Plan { host_phase_2: BlueprintHostPhase2DesiredSlots::current_contents(), remove_mupdate_override: None, + measurements: BlueprintMeasurements::InstallDataset, }, ); }