Skip to content

Commit 096fdaf

Browse files
authored
Expunge and Decommission disks in planner (#7286)
This PR partially fixes #6999, and fixes #7098 and #7502. A few significant changes are made in this PR: 1. Where possible execution steps no longer error out and cause the executor itself to early return without running all steps. Instead a `StepWarning` is returned for each step that contains errors and the executor runs every step. 2. Some fallible steps have become decoupled in that they do not rely on each other and can safely run independently. This was mostly true, except for the bulk of the work in this PR which ensures that when a a disk is expunged, it is not immediately decommissioned unless the sled is also expunged. The planner waits to see that the expungement has been observed by a sled-agent on an active sled with an expunged disk before it marks it decommissioned. 3. The executor only decommissions physical disks if their disposition is expunged and they are `ready_for_cleanup` in the blueprint. This completes the feedback loop between planning, inventory collection, and execution. Previously disk decommissioning was done for *all* expunged disks. This was racy in that a separate nexus may have expunged a disk that was not yet ready to be decommissioned, and it would be picked up in the decommissioning step of the first nexus's executor. There is more information in the following [commit comments](3ee1546#commitcomment-149432816). 4. A Disposition field have been added to the table output for disks. Steps 1 and 2 above partially resolve #6999 and resolve #7502. While I was modifying the datastore to implement step 3 I also updated the `modified_time` of the physical disks table for necessary transactions. This fixes #7502. This PR also fixes a planner bug where we only check the planning input for decommissioned disks even if there was a change in the parent blueprint, but no corresponding change to the planning input.
1 parent 28b4239 commit 096fdaf

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+2262
-1313
lines changed

dev-tools/omdb/tests/successes.out

Lines changed: 78 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,19 +1342,19 @@ parent: <none>
13421342
sled: ..........<REDACTED_UUID>........... (active)
13431343

13441344
physical disks at generation 2:
1345-
---------------------------------------------------
1346-
vendor model serial
1347-
---------------------------------------------------
1348-
nexus-tests nexus-test-model nexus-test-disk-10
1349-
nexus-tests nexus-test-model nexus-test-disk-11
1350-
nexus-tests nexus-test-model nexus-test-disk-12
1351-
nexus-tests nexus-test-model nexus-test-disk-13
1352-
nexus-tests nexus-test-model nexus-test-disk-14
1353-
nexus-tests nexus-test-model nexus-test-disk-15
1354-
nexus-tests nexus-test-model nexus-test-disk-16
1355-
nexus-tests nexus-test-model nexus-test-disk-17
1356-
nexus-tests nexus-test-model nexus-test-disk-18
1357-
nexus-tests nexus-test-model nexus-test-disk-19
1345+
-----------------------------------------------------------------
1346+
vendor model serial disposition
1347+
-----------------------------------------------------------------
1348+
nexus-tests nexus-test-model nexus-test-disk-10 in service
1349+
nexus-tests nexus-test-model nexus-test-disk-11 in service
1350+
nexus-tests nexus-test-model nexus-test-disk-12 in service
1351+
nexus-tests nexus-test-model nexus-test-disk-13 in service
1352+
nexus-tests nexus-test-model nexus-test-disk-14 in service
1353+
nexus-tests nexus-test-model nexus-test-disk-15 in service
1354+
nexus-tests nexus-test-model nexus-test-disk-16 in service
1355+
nexus-tests nexus-test-model nexus-test-disk-17 in service
1356+
nexus-tests nexus-test-model nexus-test-disk-18 in service
1357+
nexus-tests nexus-test-model nexus-test-disk-19 in service
13581358

13591359

13601360
datasets at generation 2:
@@ -1373,19 +1373,19 @@ parent: <none>
13731373
sled: ..........<REDACTED_UUID>........... (active)
13741374

13751375
physical disks at generation 2:
1376-
--------------------------------------------------
1377-
vendor model serial
1378-
--------------------------------------------------
1379-
nexus-tests nexus-test-model nexus-test-disk-0
1380-
nexus-tests nexus-test-model nexus-test-disk-1
1381-
nexus-tests nexus-test-model nexus-test-disk-2
1382-
nexus-tests nexus-test-model nexus-test-disk-3
1383-
nexus-tests nexus-test-model nexus-test-disk-4
1384-
nexus-tests nexus-test-model nexus-test-disk-5
1385-
nexus-tests nexus-test-model nexus-test-disk-6
1386-
nexus-tests nexus-test-model nexus-test-disk-7
1387-
nexus-tests nexus-test-model nexus-test-disk-8
1388-
nexus-tests nexus-test-model nexus-test-disk-9
1376+
----------------------------------------------------------------
1377+
vendor model serial disposition
1378+
----------------------------------------------------------------
1379+
nexus-tests nexus-test-model nexus-test-disk-0 in service
1380+
nexus-tests nexus-test-model nexus-test-disk-1 in service
1381+
nexus-tests nexus-test-model nexus-test-disk-2 in service
1382+
nexus-tests nexus-test-model nexus-test-disk-3 in service
1383+
nexus-tests nexus-test-model nexus-test-disk-4 in service
1384+
nexus-tests nexus-test-model nexus-test-disk-5 in service
1385+
nexus-tests nexus-test-model nexus-test-disk-6 in service
1386+
nexus-tests nexus-test-model nexus-test-disk-7 in service
1387+
nexus-tests nexus-test-model nexus-test-disk-8 in service
1388+
nexus-tests nexus-test-model nexus-test-disk-9 in service
13891389

13901390

13911391
datasets at generation 2:
@@ -1438,19 +1438,19 @@ parent: <none>
14381438
sled: ..........<REDACTED_UUID>........... (active)
14391439

14401440
physical disks at generation 2:
1441-
---------------------------------------------------
1442-
vendor model serial
1443-
---------------------------------------------------
1444-
nexus-tests nexus-test-model nexus-test-disk-10
1445-
nexus-tests nexus-test-model nexus-test-disk-11
1446-
nexus-tests nexus-test-model nexus-test-disk-12
1447-
nexus-tests nexus-test-model nexus-test-disk-13
1448-
nexus-tests nexus-test-model nexus-test-disk-14
1449-
nexus-tests nexus-test-model nexus-test-disk-15
1450-
nexus-tests nexus-test-model nexus-test-disk-16
1451-
nexus-tests nexus-test-model nexus-test-disk-17
1452-
nexus-tests nexus-test-model nexus-test-disk-18
1453-
nexus-tests nexus-test-model nexus-test-disk-19
1441+
-----------------------------------------------------------------
1442+
vendor model serial disposition
1443+
-----------------------------------------------------------------
1444+
nexus-tests nexus-test-model nexus-test-disk-10 in service
1445+
nexus-tests nexus-test-model nexus-test-disk-11 in service
1446+
nexus-tests nexus-test-model nexus-test-disk-12 in service
1447+
nexus-tests nexus-test-model nexus-test-disk-13 in service
1448+
nexus-tests nexus-test-model nexus-test-disk-14 in service
1449+
nexus-tests nexus-test-model nexus-test-disk-15 in service
1450+
nexus-tests nexus-test-model nexus-test-disk-16 in service
1451+
nexus-tests nexus-test-model nexus-test-disk-17 in service
1452+
nexus-tests nexus-test-model nexus-test-disk-18 in service
1453+
nexus-tests nexus-test-model nexus-test-disk-19 in service
14541454

14551455

14561456
datasets at generation 2:
@@ -1469,19 +1469,19 @@ parent: <none>
14691469
sled: ..........<REDACTED_UUID>........... (active)
14701470

14711471
physical disks at generation 2:
1472-
--------------------------------------------------
1473-
vendor model serial
1474-
--------------------------------------------------
1475-
nexus-tests nexus-test-model nexus-test-disk-0
1476-
nexus-tests nexus-test-model nexus-test-disk-1
1477-
nexus-tests nexus-test-model nexus-test-disk-2
1478-
nexus-tests nexus-test-model nexus-test-disk-3
1479-
nexus-tests nexus-test-model nexus-test-disk-4
1480-
nexus-tests nexus-test-model nexus-test-disk-5
1481-
nexus-tests nexus-test-model nexus-test-disk-6
1482-
nexus-tests nexus-test-model nexus-test-disk-7
1483-
nexus-tests nexus-test-model nexus-test-disk-8
1484-
nexus-tests nexus-test-model nexus-test-disk-9
1472+
----------------------------------------------------------------
1473+
vendor model serial disposition
1474+
----------------------------------------------------------------
1475+
nexus-tests nexus-test-model nexus-test-disk-0 in service
1476+
nexus-tests nexus-test-model nexus-test-disk-1 in service
1477+
nexus-tests nexus-test-model nexus-test-disk-2 in service
1478+
nexus-tests nexus-test-model nexus-test-disk-3 in service
1479+
nexus-tests nexus-test-model nexus-test-disk-4 in service
1480+
nexus-tests nexus-test-model nexus-test-disk-5 in service
1481+
nexus-tests nexus-test-model nexus-test-disk-6 in service
1482+
nexus-tests nexus-test-model nexus-test-disk-7 in service
1483+
nexus-tests nexus-test-model nexus-test-disk-8 in service
1484+
nexus-tests nexus-test-model nexus-test-disk-9 in service
14851485

14861486

14871487
datasets at generation 2:
@@ -1536,37 +1536,37 @@ to: blueprint ......<REDACTED_BLUEPRINT_ID>.......
15361536
sled ..........<REDACTED_UUID>........... (active):
15371537

15381538
physical disks at generation 2:
1539-
---------------------------------------------------
1540-
vendor model serial
1541-
---------------------------------------------------
1542-
nexus-tests nexus-test-model nexus-test-disk-10
1543-
nexus-tests nexus-test-model nexus-test-disk-11
1544-
nexus-tests nexus-test-model nexus-test-disk-12
1545-
nexus-tests nexus-test-model nexus-test-disk-13
1546-
nexus-tests nexus-test-model nexus-test-disk-14
1547-
nexus-tests nexus-test-model nexus-test-disk-15
1548-
nexus-tests nexus-test-model nexus-test-disk-16
1549-
nexus-tests nexus-test-model nexus-test-disk-17
1550-
nexus-tests nexus-test-model nexus-test-disk-18
1551-
nexus-tests nexus-test-model nexus-test-disk-19
1539+
-----------------------------------------------------------------
1540+
vendor model serial disposition
1541+
-----------------------------------------------------------------
1542+
nexus-tests nexus-test-model nexus-test-disk-10 in service
1543+
nexus-tests nexus-test-model nexus-test-disk-11 in service
1544+
nexus-tests nexus-test-model nexus-test-disk-12 in service
1545+
nexus-tests nexus-test-model nexus-test-disk-13 in service
1546+
nexus-tests nexus-test-model nexus-test-disk-14 in service
1547+
nexus-tests nexus-test-model nexus-test-disk-15 in service
1548+
nexus-tests nexus-test-model nexus-test-disk-16 in service
1549+
nexus-tests nexus-test-model nexus-test-disk-17 in service
1550+
nexus-tests nexus-test-model nexus-test-disk-18 in service
1551+
nexus-tests nexus-test-model nexus-test-disk-19 in service
15521552

15531553

15541554
sled ..........<REDACTED_UUID>........... (active):
15551555

15561556
physical disks at generation 2:
1557-
--------------------------------------------------
1558-
vendor model serial
1559-
--------------------------------------------------
1560-
nexus-tests nexus-test-model nexus-test-disk-0
1561-
nexus-tests nexus-test-model nexus-test-disk-1
1562-
nexus-tests nexus-test-model nexus-test-disk-2
1563-
nexus-tests nexus-test-model nexus-test-disk-3
1564-
nexus-tests nexus-test-model nexus-test-disk-4
1565-
nexus-tests nexus-test-model nexus-test-disk-5
1566-
nexus-tests nexus-test-model nexus-test-disk-6
1567-
nexus-tests nexus-test-model nexus-test-disk-7
1568-
nexus-tests nexus-test-model nexus-test-disk-8
1569-
nexus-tests nexus-test-model nexus-test-disk-9
1557+
----------------------------------------------------------------
1558+
vendor model serial disposition
1559+
----------------------------------------------------------------
1560+
nexus-tests nexus-test-model nexus-test-disk-0 in service
1561+
nexus-tests nexus-test-model nexus-test-disk-1 in service
1562+
nexus-tests nexus-test-model nexus-test-disk-2 in service
1563+
nexus-tests nexus-test-model nexus-test-disk-3 in service
1564+
nexus-tests nexus-test-model nexus-test-disk-4 in service
1565+
nexus-tests nexus-test-model nexus-test-disk-5 in service
1566+
nexus-tests nexus-test-model nexus-test-disk-6 in service
1567+
nexus-tests nexus-test-model nexus-test-disk-7 in service
1568+
nexus-tests nexus-test-model nexus-test-disk-8 in service
1569+
nexus-tests nexus-test-model nexus-test-disk-9 in service
15701570

15711571

15721572
datasets at generation 2:

dev-tools/reconfigurator-cli/tests/output/cmd-example-stdout

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -69,19 +69,19 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9
6969
sled: 2eb69596-f081-4e2d-9425-9994926e0832 (active)
7070

7171
physical disks at generation 2:
72-
----------------------------------------------------------------------
73-
vendor model serial
74-
----------------------------------------------------------------------
75-
fake-vendor fake-model serial-088ed702-551e-453b-80d7-57700372a844
76-
fake-vendor fake-model serial-09e51697-abad-47c0-a193-eaf74bc5d3cd
77-
fake-vendor fake-model serial-3a512d49-edbe-47f3-8d0b-6051bfdc4044
78-
fake-vendor fake-model serial-40517680-aa77-413c-bcf4-b9041dcf6612
79-
fake-vendor fake-model serial-78d3cb96-9295-4644-bf78-2e32191c71f9
80-
fake-vendor fake-model serial-853595e7-77da-404e-bc35-aba77478d55c
81-
fake-vendor fake-model serial-8926e0e7-65d9-4e2e-ac6d-f1298af81ef1
82-
fake-vendor fake-model serial-9c0b9151-17f3-4857-94cc-b5bfcd402326
83-
fake-vendor fake-model serial-d61354fa-48d2-47c6-90bf-546e3ed1708b
84-
fake-vendor fake-model serial-d792c8cb-7490-40cb-bb1c-d4917242edf4
72+
------------------------------------------------------------------------------------
73+
vendor model serial disposition
74+
------------------------------------------------------------------------------------
75+
fake-vendor fake-model serial-088ed702-551e-453b-80d7-57700372a844 in service
76+
fake-vendor fake-model serial-09e51697-abad-47c0-a193-eaf74bc5d3cd in service
77+
fake-vendor fake-model serial-3a512d49-edbe-47f3-8d0b-6051bfdc4044 in service
78+
fake-vendor fake-model serial-40517680-aa77-413c-bcf4-b9041dcf6612 in service
79+
fake-vendor fake-model serial-78d3cb96-9295-4644-bf78-2e32191c71f9 in service
80+
fake-vendor fake-model serial-853595e7-77da-404e-bc35-aba77478d55c in service
81+
fake-vendor fake-model serial-8926e0e7-65d9-4e2e-ac6d-f1298af81ef1 in service
82+
fake-vendor fake-model serial-9c0b9151-17f3-4857-94cc-b5bfcd402326 in service
83+
fake-vendor fake-model serial-d61354fa-48d2-47c6-90bf-546e3ed1708b in service
84+
fake-vendor fake-model serial-d792c8cb-7490-40cb-bb1c-d4917242edf4 in service
8585

8686

8787
datasets at generation 2:
@@ -165,19 +165,19 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9
165165
sled: 32d8d836-4d8a-4e54-8fa9-f31d79c42646 (active)
166166

167167
physical disks at generation 2:
168-
----------------------------------------------------------------------
169-
vendor model serial
170-
----------------------------------------------------------------------
171-
fake-vendor fake-model serial-128b0f04-229b-48dc-9c5c-555cb5723ed8
172-
fake-vendor fake-model serial-43ae0f4e-b0cf-4d74-8636-df0567ba01e6
173-
fake-vendor fake-model serial-4e9806d0-41cd-48c2-86ef-7f815c3ce3b1
174-
fake-vendor fake-model serial-70bb6d98-111f-4015-9d97-9ef1b2d6dcac
175-
fake-vendor fake-model serial-7ce5029f-703c-4c08-8164-9af9cf1acf23
176-
fake-vendor fake-model serial-b113c11f-44e6-4fb4-a56e-1d91bd652faf
177-
fake-vendor fake-model serial-bf149c80-2498-481c-9989-6344da914081
178-
fake-vendor fake-model serial-c69b6237-09f9-45aa-962c-5dbdd1d894be
179-
fake-vendor fake-model serial-ccd5a87b-00ae-42ad-85da-b37d70436cb1
180-
fake-vendor fake-model serial-d7410a1c-e01d-49a4-be9c-f861f086760a
168+
------------------------------------------------------------------------------------
169+
vendor model serial disposition
170+
------------------------------------------------------------------------------------
171+
fake-vendor fake-model serial-128b0f04-229b-48dc-9c5c-555cb5723ed8 in service
172+
fake-vendor fake-model serial-43ae0f4e-b0cf-4d74-8636-df0567ba01e6 in service
173+
fake-vendor fake-model serial-4e9806d0-41cd-48c2-86ef-7f815c3ce3b1 in service
174+
fake-vendor fake-model serial-70bb6d98-111f-4015-9d97-9ef1b2d6dcac in service
175+
fake-vendor fake-model serial-7ce5029f-703c-4c08-8164-9af9cf1acf23 in service
176+
fake-vendor fake-model serial-b113c11f-44e6-4fb4-a56e-1d91bd652faf in service
177+
fake-vendor fake-model serial-bf149c80-2498-481c-9989-6344da914081 in service
178+
fake-vendor fake-model serial-c69b6237-09f9-45aa-962c-5dbdd1d894be in service
179+
fake-vendor fake-model serial-ccd5a87b-00ae-42ad-85da-b37d70436cb1 in service
180+
fake-vendor fake-model serial-d7410a1c-e01d-49a4-be9c-f861f086760a in service
181181

182182

183183
datasets at generation 2:
@@ -258,19 +258,19 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9
258258
sled: 89d02b1b-478c-401a-8e28-7a26f74fa41b (active)
259259

260260
physical disks at generation 2:
261-
----------------------------------------------------------------------
262-
vendor model serial
263-
----------------------------------------------------------------------
264-
fake-vendor fake-model serial-44fa7024-c2bc-4d2c-b478-c4997e4aece8
265-
fake-vendor fake-model serial-5265edc6-debf-4687-a758-a9746893ebd3
266-
fake-vendor fake-model serial-532fbd69-b472-4445-86af-4c4c85afb313
267-
fake-vendor fake-model serial-54fd6fa6-ce3c-4abe-8c9d-7e107e159e84
268-
fake-vendor fake-model serial-8562317c-4736-4cfc-9292-7dcab96a6fee
269-
fake-vendor fake-model serial-9a1327e4-d11b-4d98-8454-8c41862e9832
270-
fake-vendor fake-model serial-bf9d6692-64bc-459a-87dd-e7a83080a210
271-
fake-vendor fake-model serial-ce1c13f3-bef2-4306-b0f2-4e39bd4a18b6
272-
fake-vendor fake-model serial-f931ec80-a3e3-4adb-a8ba-fa5adbd2294c
273-
fake-vendor fake-model serial-fe1d5b9f-8db7-4e2d-bf17-c4b80e1f897c
261+
------------------------------------------------------------------------------------
262+
vendor model serial disposition
263+
------------------------------------------------------------------------------------
264+
fake-vendor fake-model serial-44fa7024-c2bc-4d2c-b478-c4997e4aece8 in service
265+
fake-vendor fake-model serial-5265edc6-debf-4687-a758-a9746893ebd3 in service
266+
fake-vendor fake-model serial-532fbd69-b472-4445-86af-4c4c85afb313 in service
267+
fake-vendor fake-model serial-54fd6fa6-ce3c-4abe-8c9d-7e107e159e84 in service
268+
fake-vendor fake-model serial-8562317c-4736-4cfc-9292-7dcab96a6fee in service
269+
fake-vendor fake-model serial-9a1327e4-d11b-4d98-8454-8c41862e9832 in service
270+
fake-vendor fake-model serial-bf9d6692-64bc-459a-87dd-e7a83080a210 in service
271+
fake-vendor fake-model serial-ce1c13f3-bef2-4306-b0f2-4e39bd4a18b6 in service
272+
fake-vendor fake-model serial-f931ec80-a3e3-4adb-a8ba-fa5adbd2294c in service
273+
fake-vendor fake-model serial-fe1d5b9f-8db7-4e2d-bf17-c4b80e1f897c in service
274274

275275

276276
datasets at generation 2:
@@ -413,13 +413,13 @@ parent: 02697f74-b14a-4418-90f0-c28b2a3a6aa9
413413
sled: 89d02b1b-478c-401a-8e28-7a26f74fa41b (active)
414414

415415
physical disks at generation 2:
416-
----------------------------------------------------------------------
417-
vendor model serial
418-
----------------------------------------------------------------------
419-
fake-vendor fake-model serial-44fa7024-c2bc-4d2c-b478-c4997e4aece8
420-
fake-vendor fake-model serial-8562317c-4736-4cfc-9292-7dcab96a6fee
421-
fake-vendor fake-model serial-ce1c13f3-bef2-4306-b0f2-4e39bd4a18b6
422-
fake-vendor fake-model serial-f931ec80-a3e3-4adb-a8ba-fa5adbd2294c
416+
------------------------------------------------------------------------------------
417+
vendor model serial disposition
418+
------------------------------------------------------------------------------------
419+
fake-vendor fake-model serial-44fa7024-c2bc-4d2c-b478-c4997e4aece8 in service
420+
fake-vendor fake-model serial-8562317c-4736-4cfc-9292-7dcab96a6fee in service
421+
fake-vendor fake-model serial-ce1c13f3-bef2-4306-b0f2-4e39bd4a18b6 in service
422+
fake-vendor fake-model serial-f931ec80-a3e3-4adb-a8ba-fa5adbd2294c in service
423423

424424

425425
datasets at generation 2:

0 commit comments

Comments
 (0)