diff options
author | kesper <paresh.h.sao@gmail.com> | 2017-09-01 08:03:27 +0000 |
---|---|---|
committer | Dmitry Tantsur <divius.inside@gmail.com> | 2017-09-04 13:39:02 +0000 |
commit | 446eff88ed6b2a2820bc127836742713dacc76ff (patch) | |
tree | 81a4efde0be02f7f1cb598bd3e66c055ed2b53be | |
parent | d783dffadfcfd049e4694db130850dd4a22888d1 (diff) | |
download | ironic-446eff88ed6b2a2820bc127836742713dacc76ff.tar.gz |
Boot from volume fails with 'iscsi' deploy interface
When boot from volume is requested for a node with 'iscsi' deploy
interface it does not call the boot.prepare_instance and fails to
create pxelinux.cfg file to boot with ipxe.
This commit fixes the issue.
Change-Id: Iff997e1786a933f50a25c9d89cb163a6aaec3f00
Closes-Bug: #1714436
(cherry picked from commit 49c4bba14eee0bd3d9dc93ce8748ef7b8e445f1c)
3 files changed, 15 insertions, 0 deletions
diff --git a/ironic/drivers/modules/iscsi_deploy.py b/ironic/drivers/modules/iscsi_deploy.py index cba4a0bd1..8119a966c 100644 --- a/ironic/drivers/modules/iscsi_deploy.py +++ b/ironic/drivers/modules/iscsi_deploy.py @@ -465,6 +465,7 @@ class ISCSIDeploy(AgentDeployMixin, base.DeployInterface): manager_utils.node_power_action(task, states.POWER_OFF) task.driver.network.remove_provisioning_network(task) task.driver.network.configure_tenant_networks(task) + task.driver.boot.prepare_instance(task) manager_utils.node_power_action(task, states.POWER_ON) task.process_event('done') LOG.info('Deployment to node %s done', node.uuid) diff --git a/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py b/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py index b0a179b5a..2c3de9524 100644 --- a/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py +++ b/ironic/tests/unit/drivers/modules/test_iscsi_deploy.py @@ -713,6 +713,9 @@ class ISCSIDeployTestCase(db_base.DbTestCase): @mock.patch.object(flat_network.FlatNetwork, 'remove_provisioning_network', spec_set=True, autospec=True) + @mock.patch.object(pxe.PXEBoot, + 'prepare_instance', + spec_set=True, autospec=True) @mock.patch.object(manager_utils, 'node_power_action', autospec=True) @mock.patch.object(iscsi_deploy, 'check_image_size', autospec=True) @mock.patch.object(iscsi_deploy, 'cache_instance_image', autospec=True) @@ -720,6 +723,7 @@ class ISCSIDeployTestCase(db_base.DbTestCase): mock_cache_instance_image, mock_check_image_size, mock_node_power_action, + mock_prepare_instance, mock_remove_network, mock_tenant_network, mock_write): @@ -734,6 +738,7 @@ class ISCSIDeployTestCase(db_base.DbTestCase): self.assertFalse(mock_check_image_size.called) mock_remove_network.assert_called_once_with(mock.ANY, task) mock_tenant_network.assert_called_once_with(mock.ANY, task) + mock_prepare_instance.assert_called_once_with(mock.ANY, task) self.assertEqual(2, mock_node_power_action.call_count) @mock.patch.object(noop_storage.NoopStorage, 'detach_volumes', diff --git a/releasenotes/notes/fix-boot-from-volume-for-iscsi-deploy-60bc0790ada62b26.yaml b/releasenotes/notes/fix-boot-from-volume-for-iscsi-deploy-60bc0790ada62b26.yaml new file mode 100644 index 000000000..7db10978e --- /dev/null +++ b/releasenotes/notes/fix-boot-from-volume-for-iscsi-deploy-60bc0790ada62b26.yaml @@ -0,0 +1,9 @@ +--- +fixes: + - | + Fixes an issue in boot from volume for ``iscsi`` deploy interface. Boot + from a volume fails when it is requested for a node having ``iscsi`` + deploy interface, it doesn't create pxelinux.cfg file for mac, + and failed to boot. See `bug 1714436 + <https://bugs.launchpad.net/ironic/+bug/1714436>`_ for details. + |