|
|
|
@ -95,6 +95,127 @@ class TestImageExtension(base.IronicAgentTest):
|
|
|
|
|
)
|
|
|
|
|
mock_iscsi_clean.assert_called_once_with(self.fake_dev)
|
|
|
|
|
|
|
|
|
|
@mock.patch.object(iscsi, 'clean_up', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_manage_uefi', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_install_grub2', autospec=True)
|
|
|
|
|
def test__install_bootloader_uefi_ignores_manage_failure(
|
|
|
|
|
self, mock_grub2, mock_uefi,
|
|
|
|
|
mock_iscsi_clean,
|
|
|
|
|
mock_execute, mock_dispatch):
|
|
|
|
|
self.config(ignore_bootloader_failure=True)
|
|
|
|
|
mock_uefi.side_effect = OSError('meow')
|
|
|
|
|
mock_dispatch.side_effect = [
|
|
|
|
|
self.fake_dev, hardware.BootInfo(current_boot_mode='uefi')
|
|
|
|
|
]
|
|
|
|
|
mock_uefi.return_value = False
|
|
|
|
|
self.agent_extension.install_bootloader(
|
|
|
|
|
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)
|
|
|
|
|
mock_grub2.assert_called_once_with(
|
|
|
|
|
self.fake_dev,
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
prep_boot_part_uuid=None,
|
|
|
|
|
target_boot_mode='uefi'
|
|
|
|
|
)
|
|
|
|
|
mock_iscsi_clean.assert_called_once_with(self.fake_dev)
|
|
|
|
|
|
|
|
|
|
@mock.patch.object(iscsi, 'clean_up', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_manage_uefi', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_install_grub2', autospec=True)
|
|
|
|
|
def test__install_bootloader_uefi_ignores_grub_failure(
|
|
|
|
|
self, mock_grub2, mock_uefi,
|
|
|
|
|
mock_iscsi_clean,
|
|
|
|
|
mock_execute, mock_dispatch):
|
|
|
|
|
self.config(ignore_bootloader_failure=True)
|
|
|
|
|
mock_grub2.side_effect = OSError('meow')
|
|
|
|
|
mock_dispatch.side_effect = [
|
|
|
|
|
self.fake_dev, hardware.BootInfo(current_boot_mode='uefi')
|
|
|
|
|
]
|
|
|
|
|
mock_uefi.return_value = False
|
|
|
|
|
self.agent_extension.install_bootloader(
|
|
|
|
|
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)
|
|
|
|
|
mock_grub2.assert_called_once_with(
|
|
|
|
|
self.fake_dev,
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
prep_boot_part_uuid=None,
|
|
|
|
|
target_boot_mode='uefi'
|
|
|
|
|
)
|
|
|
|
|
mock_iscsi_clean.assert_called_once_with(self.fake_dev)
|
|
|
|
|
|
|
|
|
|
@mock.patch.object(iscsi, 'clean_up', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_manage_uefi', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_install_grub2', autospec=True)
|
|
|
|
|
def test__install_bootloader_uefi_ignores_grub_failure_api_override(
|
|
|
|
|
self, mock_grub2, mock_uefi,
|
|
|
|
|
mock_iscsi_clean,
|
|
|
|
|
mock_execute, mock_dispatch):
|
|
|
|
|
self.config(ignore_bootloader_failure=False)
|
|
|
|
|
mock_grub2.side_effect = OSError('meow')
|
|
|
|
|
mock_dispatch.side_effect = [
|
|
|
|
|
self.fake_dev, hardware.BootInfo(current_boot_mode='uefi')
|
|
|
|
|
]
|
|
|
|
|
mock_uefi.return_value = False
|
|
|
|
|
self.agent_extension.install_bootloader(
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
target_boot_mode='uefi', ignore_bootloader_failure=True,
|
|
|
|
|
).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)
|
|
|
|
|
mock_grub2.assert_called_once_with(
|
|
|
|
|
self.fake_dev,
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
prep_boot_part_uuid=None,
|
|
|
|
|
target_boot_mode='uefi'
|
|
|
|
|
)
|
|
|
|
|
mock_iscsi_clean.assert_called_once_with(self.fake_dev)
|
|
|
|
|
|
|
|
|
|
@mock.patch.object(iscsi, 'clean_up', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_manage_uefi', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_install_grub2', autospec=True)
|
|
|
|
|
def test__install_bootloader_uefi_grub_failure_api_override(
|
|
|
|
|
self, mock_grub2, mock_uefi,
|
|
|
|
|
mock_iscsi_clean,
|
|
|
|
|
mock_execute, mock_dispatch):
|
|
|
|
|
self.config(ignore_bootloader_failure=True)
|
|
|
|
|
mock_grub2.side_effect = OSError('meow')
|
|
|
|
|
mock_dispatch.side_effect = [
|
|
|
|
|
self.fake_dev, hardware.BootInfo(current_boot_mode='uefi')
|
|
|
|
|
]
|
|
|
|
|
mock_uefi.return_value = False
|
|
|
|
|
result = self.agent_extension.install_bootloader(
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
target_boot_mode='uefi', ignore_bootloader_failure=False,
|
|
|
|
|
).join()
|
|
|
|
|
self.assertIsNotNone(result.command_error)
|
|
|
|
|
mock_dispatch.assert_any_call('get_os_install_device')
|
|
|
|
|
mock_dispatch.assert_any_call('get_boot_info')
|
|
|
|
|
self.assertEqual(2, mock_dispatch.call_count)
|
|
|
|
|
mock_grub2.assert_called_once_with(
|
|
|
|
|
self.fake_dev,
|
|
|
|
|
root_uuid=self.fake_root_uuid,
|
|
|
|
|
efi_system_part_uuid=self.fake_efi_system_part_uuid,
|
|
|
|
|
prep_boot_part_uuid=None,
|
|
|
|
|
target_boot_mode='uefi'
|
|
|
|
|
)
|
|
|
|
|
mock_iscsi_clean.assert_called_once_with(self.fake_dev)
|
|
|
|
|
|
|
|
|
|
@mock.patch.object(iscsi, 'clean_up', autospec=True)
|
|
|
|
|
@mock.patch.object(image, '_install_grub2', autospec=True)
|
|
|
|
|
def test__install_bootloader_no_root(self, mock_grub2, mock_iscsi_clean,
|
|
|
|
|