diff --git a/ironic/drivers/utils.py b/ironic/drivers/utils.py index 6247e1fb13..fe1a1c5f21 100644 --- a/ironic/drivers/utils.py +++ b/ironic/drivers/utils.py @@ -220,6 +220,7 @@ def force_persistent_boot(task, device, persistent): node = task.node driver_internal_info = node.driver_internal_info if persistent: + driver_internal_info.pop('is_next_boot_persistent', None) driver_internal_info['persistent_boot_device'] = device else: driver_internal_info['is_next_boot_persistent'] = False diff --git a/ironic/tests/unit/drivers/test_utils.py b/ironic/tests/unit/drivers/test_utils.py index 12361e503d..c0952bf078 100644 --- a/ironic/tests/unit/drivers/test_utils.py +++ b/ironic/tests/unit/drivers/test_utils.py @@ -158,8 +158,10 @@ class UtilsTestCase(db_base.DbTestCase): ret = driver_utils.force_persistent_boot(task, 'pxe', True) self.assertIsNone(ret) task.node.refresh() - self.assertIn('persistent_boot_device', - task.node.driver_internal_info) + self.assertIn(('persistent_boot_device', 'pxe'), + task.node.driver_internal_info.items()) + self.assertNotIn('is_next_boot_persistent', + task.node.driver_internal_info) def test_force_persistent_boot_false(self): with task_manager.acquire(self.context, self.node.uuid, diff --git a/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml b/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml new file mode 100644 index 0000000000..70ac590ae4 --- /dev/null +++ b/releasenotes/notes/bug-1626453-e8df46aa5db6dd5a.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - This fixes the issue setting persistent boot device does not work + with ipmi_force_boot_device=True. For more information, see + https://bugs.launchpad.net/ironic/+bug/1626453