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
This commit is contained in:
parent
20c2f4df13
commit
1301286707
@ -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,
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user