Build instance PXE options for unrescue

This patch always builds PXE options for booting a user image even if
the provision state is related to rescue mode. When the state is
unrescuing, these options are necessary to boot a user image. When the
provision state is rescuing, these options are just ignored because
the PXE configuration is used at deployment mode.

Change-Id: I1ff51cab120e6612c71e5d9c45cf28797bc16e76
Closes-Bug: 1749433
(cherry picked from commit 4df93fc474)
This commit is contained in:
Hironori Shiina 2018-02-14 21:10:26 +09:00 committed by Julia Kreger
parent 254ce221cb
commit 2bc984aaba
3 changed files with 19 additions and 13 deletions

View File

@ -243,13 +243,12 @@ def _build_pxe_config_options(task, pxe_info, service=False):
else:
pxe_options = _build_deploy_pxe_options(task, pxe_info, mode=mode)
if mode == 'deploy':
# NOTE(pas-ha) we still must always add user image kernel and ramdisk
# info as later during switching PXE config to service mode the
# template will not be regenerated anew, but instead edited as-is.
# This can be changed later if/when switching PXE config will also use
# proper templating instead of editing existing files on disk.
pxe_options.update(_build_instance_pxe_options(task, pxe_info))
# NOTE(pas-ha) we still must always add user image kernel and ramdisk
# info as later during switching PXE config to service mode the
# template will not be regenerated anew, but instead edited as-is.
# This can be changed later if/when switching PXE config will also use
# proper templating instead of editing existing files on disk.
pxe_options.update(_build_instance_pxe_options(task, pxe_info))
pxe_options.update(_build_extra_pxe_options())

View File

@ -249,11 +249,11 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
'deployment_aki_path': pxe_kernel,
'tftp_server': tftp_server,
'ipxe_timeout': 0,
'ari_path': ramdisk,
'aki_path': kernel,
}
if mode == 'deploy':
expected_options.update({'ari_path': ramdisk, 'aki_path': kernel})
elif mode == 'rescue':
if mode == 'rescue':
self.node.provision_state = states.RESCUING
self.node.save()
@ -412,10 +412,11 @@ class PXEPrivateMethodsTestCase(db_base.DbTestCase):
'deployment_aki_path': pxe_kernel,
'tftp_server': tftp_server,
'ipxe_timeout': ipxe_timeout_in_ms,
'ari_path': ramdisk,
'aki_path': kernel,
}
if mode == 'deploy':
expected_options.update({'ari_path': ramdisk, 'aki_path': kernel})
elif mode == 'rescue':
if mode == 'rescue':
self.node.provision_state = states.RESCUING
self.node.save()

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixes a bug preventing a node from booting into the user instance after unrescuing
if instance netboot is used. See `bug 1749433
<https://bugs.launchpad.net/ironic/+bug/1749433>`_ for details.