diff options
author | Jim Rollenhagen <jim@jimrollenhagen.com> | 2015-04-08 11:28:51 -0700 |
---|---|---|
committer | Jim Rollenhagen <jim@jimrollenhagen.com> | 2015-04-08 22:38:11 +0000 |
commit | 13012867079cbb37b3333b4fec847e0b807201ba (patch) | |
tree | 389d15f581daa5902bde17dc085407c09d34483c | |
parent | 20c2f4df13be06b957b40a00351b04205283365e (diff) | |
download | ironic-13012867079cbb37b3333b4fec847e0b807201ba.tar.gz |
Don't pass boot_option: local for whole disk images
This fixes an issue where DIB installs a bootloader on top of the disk
image's bootloader. For now, hack boot_option to show as netboot for
whole disk images (from DIB's perspective), and fix it for real in
Liberty.
Change-Id: I5cc41932acd75cf5e9e5b626285331f97126932e
Closes-Bug: #1441556
-rw-r--r-- | ironic/drivers/modules/iscsi_deploy.py | 8 | ||||
-rw-r--r-- | ironic/tests/drivers/test_iscsi_deploy.py | 18 |
2 files changed, 25 insertions, 1 deletions
diff --git a/ironic/drivers/modules/iscsi_deploy.py b/ironic/drivers/modules/iscsi_deploy.py index 57df4a7d6..352cfb977 100644 --- a/ironic/drivers/modules/iscsi_deploy.py +++ b/ironic/drivers/modules/iscsi_deploy.py @@ -447,13 +447,19 @@ def build_deploy_ramdisk_options(node): node.instance_info = i_info node.save() + # XXX(jroll) DIB relies on boot_option=local to decide whether or not to + # lay down a bootloader. Hack this for now; fix it for real in Liberty. + boot_option = get_boot_option(node) + if node.driver_internal_info.get('is_whole_disk_image'): + boot_option = 'netboot' + deploy_options = { 'deployment_id': node['uuid'], 'deployment_key': deploy_key, 'iscsi_target_iqn': "iqn-%s" % node.uuid, 'ironic_api_url': ironic_api, 'disk': CONF.pxe.disk_devices, - 'boot_option': get_boot_option(node), + 'boot_option': boot_option, 'boot_mode': _get_boot_mode(node), # NOTE: The below entry is a temporary workaround for bug/1433812 'coreos.configdrive': 0, diff --git a/ironic/tests/drivers/test_iscsi_deploy.py b/ironic/tests/drivers/test_iscsi_deploy.py index a0b1f40ba..39e72091e 100644 --- a/ironic/tests/drivers/test_iscsi_deploy.py +++ b/ironic/tests/drivers/test_iscsi_deploy.py @@ -487,6 +487,24 @@ class IscsiDeployMethodsTestCase(db_base.DbTestCase): self._test_build_deploy_ramdisk_options(mock_alnum, fake_api_url, expected_boot_option=expected) + @mock.patch.object(keystone, 'get_service_url') + @mock.patch.object(utils, 'random_alnum') + def test_build_deploy_ramdisk_options_whole_disk_image(self, mock_alnum, + mock_get_url): + """Tests a hack to boot_option for whole disk images. + + This hack is in place to fix bug #1441556. + """ + self.node.instance_info = {'capabilities': '{"boot_option": "local"}'} + dii = self.node.driver_internal_info + dii['is_whole_disk_image'] = True + self.node.driver_internal_info = dii + expected = 'netboot' + fake_api_url = 'http://127.0.0.1:6385' + self.config(api_url=fake_api_url, group='conductor') + self._test_build_deploy_ramdisk_options(mock_alnum, fake_api_url, + expected_boot_option=expected) + def test_get_boot_option(self): self.node.instance_info = {'capabilities': '{"boot_option": "local"}'} result = iscsi_deploy.get_boot_option(self.node) |