diff --git a/ironic/drivers/modules/drac/management.py b/ironic/drivers/modules/drac/management.py index ce864b79cf..a1435d1685 100644 --- a/ironic/drivers/modules/drac/management.py +++ b/ironic/drivers/modules/drac/management.py @@ -207,7 +207,7 @@ def set_boot_device(node, device, persistent=False): client.delete_jobs(job_ids=[job.id for job in unfinished_jobs]) if validate_job_queue: - drac_job.validate_job_queue(node) + drac_job.validate_job_queue(node, name_prefix="Configure: BIOS") try: drac_boot_devices = client.list_boot_devices() diff --git a/ironic/tests/unit/drivers/modules/drac/test_management.py b/ironic/tests/unit/drivers/modules/drac/test_management.py index 0a8f1d895b..02a9c4c52c 100644 --- a/ironic/tests/unit/drivers/modules/drac/test_management.py +++ b/ironic/tests/unit/drivers/modules/drac/test_management.py @@ -278,7 +278,8 @@ class DracManagementInternalMethodsTestCase(test_utils.BaseDracTest): self.assertEqual(0, mock_list_unfinished_jobs.call_count) self.assertEqual(0, mock_client.delete_jobs.call_count) - mock_validate_job_queue.assert_called_once_with(self.node) + mock_validate_job_queue.assert_called_once_with( + self.node, name_prefix="Configure: BIOS") mock_client.change_boot_device_order.assert_called_once_with( 'OneTime', 'BIOS.Setup.1-1#BootSeq#NIC.Embedded.1-1-1') self.assertEqual(0, mock_client.set_bios_settings.call_count) @@ -542,7 +543,8 @@ class DracManagementInternalMethodsTestCase(test_utils.BaseDracTest): self.assertEqual(0, mock_list_unfinished_jobs.call_count) self.assertEqual(0, mock_client.delete_jobs.call_count) - mock_validate_job_queue.assert_called_once_with(self.node) + mock_validate_job_queue.assert_called_once_with( + self.node, name_prefix="Configure: BIOS") @mock.patch.object(drac_job, 'validate_job_queue', spec_set=True, autospec=True) @@ -593,7 +595,8 @@ class DracManagementInternalMethodsTestCase(test_utils.BaseDracTest): self.assertEqual(0, mock_list_unfinished_jobs.call_count) self.assertEqual(0, mock_client.delete_jobs.call_count) - mock_validate_job_queue.assert_called_once_with(self.node) + mock_validate_job_queue.assert_called_once_with( + self.node, name_prefix="Configure: BIOS") @mock.patch.object(drac_mgmt, '_get_next_persistent_boot_mode', spec_set=True, autospec=True) diff --git a/releasenotes/notes/fix-idrac-wsman-deploy-with-existing-non-bios-jobs-78aa2195d0c3016f.yaml b/releasenotes/notes/fix-idrac-wsman-deploy-with-existing-non-bios-jobs-78aa2195d0c3016f.yaml new file mode 100644 index 0000000000..b9382d3b99 --- /dev/null +++ b/releasenotes/notes/fix-idrac-wsman-deploy-with-existing-non-bios-jobs-78aa2195d0c3016f.yaml @@ -0,0 +1,12 @@ +--- +fixes: + - | + Fixes ``idrac-wsman`` management interface ``set_boot_device`` method that + would fail deployment when there are existing jobs present with error + "Failed to change power state to ''power on'' by ''rebooting''. Error: DRAC + operation failed. Reason: Unfinished config jobs found: . Make sure they are completed before retrying.". Now there can be + non-BIOS jobs present during deployment. This will still fail for cases + when there are BIOS jobs present. In such cases should consider moving to + ``idrac-redfish`` that does not have this limitation when setting boot + device. \ No newline at end of file