From d6a038ccc93f3e5e639aab5c370bab95dda6ba4b Mon Sep 17 00:00:00 2001 From: Ramakrishnan G Date: Thu, 19 Mar 2015 14:13:19 +0000 Subject: [PATCH] Add whole disk image support for iscsi_ilo using agent ramdisk This commit adds support for whole disk images to be used with iscsi_ilo when using agent ramdisk. Closes-Bug: 1434452 Change-Id: I62d2650c2f3a117dc68dd96aefecc8c2364b3add --- ironic/drivers/modules/ilo/deploy.py | 3 ++- ironic/tests/drivers/ilo/test_deploy.py | 28 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/ironic/drivers/modules/ilo/deploy.py b/ironic/drivers/modules/ilo/deploy.py index 50b3b86212..0a364758de 100644 --- a/ironic/drivers/modules/ilo/deploy.py +++ b/ironic/drivers/modules/ilo/deploy.py @@ -812,10 +812,11 @@ class VendorPassthru(agent_base_vendor.BaseAgentVendor): ilo_common.cleanup_vmedia_boot(task) + iwdi = node.driver_internal_info.get('is_whole_disk_image') uuid_dict = iscsi_deploy.do_agent_iscsi_deploy(task, self._client) root_uuid = uuid_dict.get('root uuid') - if iscsi_deploy.get_boot_option(node) == "local": + if iscsi_deploy.get_boot_option(node) == "local" or iwdi: efi_system_part_uuid = uuid_dict.get( 'efi system partition uuid') self.configure_local_boot( diff --git a/ironic/tests/drivers/ilo/test_deploy.py b/ironic/tests/drivers/ilo/test_deploy.py index 32ea637343..b4452fc573 100644 --- a/ironic/tests/drivers/ilo/test_deploy.py +++ b/ironic/tests/drivers/ilo/test_deploy.py @@ -945,6 +945,34 @@ class VendorPassthruTestCase(db_base.DbTestCase): update_secure_boot_mock.assert_called_once_with(task, True) reboot_and_finish_deploy_mock.assert_called_once_with(task) + @mock.patch.object(ilo_deploy, '_update_secure_boot_mode') + @mock.patch.object(ilo_common, 'update_boot_mode') + @mock.patch.object(agent_base_vendor.BaseAgentVendor, + 'reboot_and_finish_deploy') + @mock.patch.object(agent_base_vendor.BaseAgentVendor, + 'configure_local_boot') + @mock.patch.object(iscsi_deploy, 'do_agent_iscsi_deploy') + @mock.patch.object(ilo_common, 'cleanup_vmedia_boot') + def test_continue_deploy_whole_disk_image( + self, cleanup_vmedia_boot_mock, do_agent_iscsi_deploy_mock, + configure_local_boot_mock, reboot_and_finish_deploy_mock, + boot_mode_cap_mock, update_secure_boot_mock): + self.node.provision_state = states.DEPLOYWAIT + self.node.target_provision_state = states.DEPLOYING + self.node.driver_internal_info = {'is_whole_disk_image': True} + self.node.save() + do_agent_iscsi_deploy_mock.return_value = { + 'disk identifier': 'some-disk-id'} + with task_manager.acquire(self.context, self.node.uuid, + shared=False) as task: + task.driver.vendor.continue_deploy(task) + cleanup_vmedia_boot_mock.assert_called_once_with(task) + do_agent_iscsi_deploy_mock.assert_called_once_with(task, + mock.ANY) + configure_local_boot_mock.assert_called_once_with( + task, root_uuid=None, efi_system_part_uuid=None) + reboot_and_finish_deploy_mock.assert_called_once_with(task) + @mock.patch.object(ilo_deploy, '_update_secure_boot_mode') @mock.patch.object(ilo_common, 'update_boot_mode') @mock.patch.object(agent_base_vendor.BaseAgentVendor,