Skip to content

Commit 1a722f1

Browse files
committed
Perform a second agent inspection boot to commit BIOS settings change
We're seeing obscure errors from Ironic like: failed step {'interface': 'raid', 'step': 'delete_configuration', 'abortable': False, 'priority': 0}: Unable to connect to /redfish/v1/TaskService/Tasks/JID_768614980495. Error: Timeout waiting for task monitor /redfish/v1/TaskService/Tasks/JID_768614980495 (timeout = 500) To clear this up, we are completing each operation with a separate reboot.
1 parent c5b9b48 commit 1a722f1

2 files changed

Lines changed: 45 additions & 5 deletions

File tree

python/understack-workflows/tests/test_enroll_server.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,12 @@ def test_enrol_happy_path_uses_virtual_media_inspect_and_flips_back(mocker):
202202
]
203203
fake_ironic, created_node = make_ironic_client(
204204
node_name="Dell-ABC123",
205-
# OOB inspect, agent inspect, OOB inspect (post-RAID).
206-
inspect_interfaces=["idrac-redfish", "idrac-redfish", "idrac-redfish"],
205+
inspect_interfaces=[
206+
"idrac-redfish",
207+
"idrac-redfish",
208+
"idrac-redfish",
209+
"idrac-redfish",
210+
],
207211
inventory=inventory,
208212
ports=ports,
209213
)
@@ -216,7 +220,7 @@ def test_enrol_happy_path_uses_virtual_media_inspect_and_flips_back(mocker):
216220
)
217221
bmc_set_hostname = mocker.patch.object(enroll_server, "bmc_set_hostname")
218222
update_dell_bios_settings = mocker.patch.object(
219-
enroll_server, "update_dell_bios_settings"
223+
enroll_server, "update_dell_bios_settings", return_value={"changed": True}
220224
)
221225
mocker.patch(
222226
"understack_workflows.ironic.client.get_ironic_client",
@@ -297,6 +301,20 @@ def test_enrol_happy_path_uses_virtual_media_inspect_and_flips_back(mocker):
297301
runbook=None,
298302
disable_ramdisk=None,
299303
),
304+
call(
305+
created_node.uuid,
306+
"clean",
307+
cleansteps=[{"interface": "management", "step": "clear_job_queue"}],
308+
runbook=None,
309+
disable_ramdisk=True,
310+
),
311+
call(
312+
created_node.uuid,
313+
"inspect", # second agent inspect to apply BIOS changes
314+
cleansteps=None,
315+
runbook=None,
316+
disable_ramdisk=None,
317+
),
300318
call(
301319
created_node.uuid,
302320
"clean",
@@ -334,6 +352,9 @@ def test_enrol_happy_path_uses_virtual_media_inspect_and_flips_back(mocker):
334352
call(created_node.uuid, expected_ipxe_boot),
335353
call(created_node.uuid, expected_agent),
336354
call(created_node.uuid, expected_ipxe_boot),
355+
call(created_node.uuid, expected_ipxe_boot),
356+
call(created_node.uuid, expected_agent),
357+
call(created_node.uuid, expected_ipxe_boot),
337358
call(created_node.uuid, expected_reset), # Post-RAID OOB inspect prep
338359
]
339360

@@ -371,7 +392,9 @@ def test_enrol_existing_failed_node_recovers_and_updates(mocker):
371392
mocker.patch.object(enroll_server, "set_bmc_password")
372393
mocker.patch.object(enroll_server, "update_dell_drac_settings")
373394
mocker.patch.object(enroll_server, "bmc_set_hostname")
374-
mocker.patch.object(enroll_server, "update_dell_bios_settings")
395+
mocker.patch.object(
396+
enroll_server, "update_dell_bios_settings", return_value={"changed": True}
397+
)
375398
mocker.patch(
376399
"understack_workflows.ironic.client.get_ironic_client",
377400
return_value=fake_ironic,
@@ -410,6 +433,20 @@ def test_enrol_existing_failed_node_recovers_and_updates(mocker):
410433
runbook=None,
411434
disable_ramdisk=None,
412435
),
436+
call(
437+
existing_node.uuid,
438+
"clean",
439+
cleansteps=[{"interface": "management", "step": "clear_job_queue"}],
440+
runbook=None,
441+
disable_ramdisk=True,
442+
),
443+
call(
444+
existing_node.uuid,
445+
"inspect", # second agent inspect to apply BIOS changes
446+
cleansteps=None,
447+
runbook=None,
448+
disable_ramdisk=None,
449+
),
413450
call(
414451
existing_node.uuid,
415452
"provide",

python/understack-workflows/understack_workflows/main/enroll_server.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,10 @@ def enroll(
121121
)
122122
logger.info("[node:%s] Selected PXE interface %s", node.uuid, pxe_interface)
123123

124-
update_dell_bios_settings(bmc, pxe_interface=pxe_interface)
124+
# This sets the boot device to use for all future HTTP boots:
125+
if update_dell_bios_settings(bmc, pxe_interface=pxe_interface):
126+
logger.info("%s performing second inspection write BIOS settings", node.uuid)
127+
agent_inspection(node)
125128

126129
if raid_configure:
127130
configure_raid(node, bmc)

0 commit comments

Comments
 (0)