summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2020-06-09 12:31:53 +0000
committerGerrit Code Review <review@openstack.org>2020-06-09 12:31:53 +0000
commitb9af690bd316d201aae36a31a6322a308dd9106e (patch)
tree5d8b75af84a1039fd7e994e4f932dd79fcb43d18
parent648ac493acc469512be1e21e6485ac3258a12a6f (diff)
parent7e5fe1121e23fad43a7c6b418bdad9fbe69981a1 (diff)
downloadironic-python-agent-b9af690bd316d201aae36a31a6322a308dd9106e.tar.gz
Merge "Make the install_bootloader command asynchronous"
-rw-r--r--ironic_python_agent/extensions/image.py2
-rw-r--r--ironic_python_agent/tests/unit/extensions/test_image.py23
2 files changed, 13 insertions, 12 deletions
diff --git a/ironic_python_agent/extensions/image.py b/ironic_python_agent/extensions/image.py
index ab572138..7362ebe3 100644
--- a/ironic_python_agent/extensions/image.py
+++ b/ironic_python_agent/extensions/image.py
@@ -687,7 +687,7 @@ def _install_grub2(device, root_uuid, efi_system_part_uuid=None,
class ImageExtension(base.BaseAgentExtension):
- @base.sync_command('install_bootloader')
+ @base.async_command('install_bootloader')
def install_bootloader(self, root_uuid, efi_system_part_uuid=None,
prep_boot_part_uuid=None,
target_boot_mode='bios'):
diff --git a/ironic_python_agent/tests/unit/extensions/test_image.py b/ironic_python_agent/tests/unit/extensions/test_image.py
index 546d1819..9dbec95e 100644
--- a/ironic_python_agent/tests/unit/extensions/test_image.py
+++ b/ironic_python_agent/tests/unit/extensions/test_image.py
@@ -54,7 +54,8 @@ class TestImageExtension(base.IronicAgentTest):
mock_dispatch.side_effect = [
self.fake_dev, hardware.BootInfo(current_boot_mode='bios')
]
- self.agent_extension.install_bootloader(root_uuid=self.fake_root_uuid)
+ self.agent_extension.install_bootloader(
+ root_uuid=self.fake_root_uuid).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
self.assertEqual(2, mock_dispatch.call_count)
@@ -79,7 +80,7 @@ class TestImageExtension(base.IronicAgentTest):
root_uuid=self.fake_root_uuid,
efi_system_part_uuid=self.fake_efi_system_part_uuid,
target_boot_mode='uefi'
- )
+ ).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
self.assertEqual(2, mock_dispatch.call_count)
@@ -131,7 +132,7 @@ class TestImageExtension(base.IronicAgentTest):
self.agent_extension.install_bootloader(
root_uuid=self.fake_root_uuid,
- efi_system_part_uuid=self.fake_efi_system_part_uuid)
+ efi_system_part_uuid=self.fake_efi_system_part_uuid).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
@@ -179,7 +180,7 @@ class TestImageExtension(base.IronicAgentTest):
self.agent_extension.install_bootloader(
root_uuid=self.fake_root_uuid,
- efi_system_part_uuid=None)
+ efi_system_part_uuid=None).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
@@ -234,7 +235,7 @@ efibootmgr: ** Warning ** : Boot0005 has same label ironic1\n
self.agent_extension.install_bootloader(
root_uuid=self.fake_root_uuid,
- efi_system_part_uuid=None)
+ efi_system_part_uuid=None).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
@@ -289,7 +290,7 @@ efibootmgr: ** Warning ** : Boot0005 has same label ironic1\n
self.agent_extension.install_bootloader(
root_uuid=self.fake_root_uuid,
- efi_system_part_uuid=None)
+ efi_system_part_uuid=None).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
@@ -309,7 +310,7 @@ efibootmgr: ** Warning ** : Boot0005 has same label ironic1\n
self.agent_extension.install_bootloader(
root_uuid=self.fake_root_uuid,
efi_system_part_uuid=None,
- prep_boot_part_uuid=self.fake_prep_boot_part_uuid)
+ prep_boot_part_uuid=self.fake_prep_boot_part_uuid).join()
mock_dispatch.assert_any_call('get_os_install_device')
mock_dispatch.assert_any_call('get_boot_info')
self.assertEqual(2, mock_dispatch.call_count)
@@ -331,10 +332,10 @@ efibootmgr: ** Warning ** : Boot0005 has same label ironic1\n
self.fake_dev, hardware.BootInfo(current_boot_mode='uefi')
]
mock_execute.side_effect = FileNotFoundError
- self.assertRaises(FileNotFoundError,
- self.agent_extension.install_bootloader,
- root_uuid=self.fake_root_uuid,
- efi_system_part_uuid=None)
+ result = self.agent_extension.install_bootloader(
+ root_uuid=self.fake_root_uuid,
+ efi_system_part_uuid=None).join()
+ self.assertIsNotNone(result.command_error)
expected = [mock.call('efibootmgr', '--version')]
mock_execute.assert_has_calls(expected)