diff options
author | Matthew Gilliard <matthew.gilliard@hp.com> | 2015-01-16 14:37:39 +0000 |
---|---|---|
committer | Matthew Gilliard <matthew.gilliard@hp.com> | 2015-01-22 15:34:06 +0000 |
commit | 6681513fe247cd8c458f234b8514e2af25d8b0ff (patch) | |
tree | 6a3857c3bc83e14884f7d6648e320b4fe7920200 | |
parent | cf70dbff33b1d74a72cbd8f3d958c67bff105d43 (diff) | |
download | ironic-6681513fe247cd8c458f234b8514e2af25d8b0ff.tar.gz |
Force glance recheck for kernel/ramdisk on rebuild
When doing a rebuild, clear the instance_info's kernel
and ramdisk values, to force the deploy driver to check
glance. This is necessary as those values may have changed
without us knowing.
closes-bug: #1401501
(cherry picked from commit 2e06859425ca79fac054b577b54906e4f0f39b12)
(includes bugfix and test for that commit, added in
0556b5852c0a685e47862d945e35a4772c8ed267)
Conflicts:
ironic/conductor/manager.py
Change-Id: I8d7831789d21d3a2dcafd614989cf1e53dbedd70
-rw-r--r-- | ironic/conductor/manager.py | 8 | ||||
-rw-r--r-- | ironic/tests/conductor/test_manager.py | 7 |
2 files changed, 14 insertions, 1 deletions
diff --git a/ironic/conductor/manager.py b/ironic/conductor/manager.py index d310b4dc4..6d017d047 100644 --- a/ironic/conductor/manager.py +++ b/ironic/conductor/manager.py @@ -527,6 +527,14 @@ class ConductorManager(periodic_task.PeriodicTasks): previous_prov_state = node.provision_state previous_tgt_provision_state = node.target_provision_state + if rebuild: + # Note(gilliard) Clear these to force the driver to + # check whether they have been changed in glance + instance_info = node.instance_info + instance_info.pop('kernel', None) + instance_info.pop('ramdisk', None) + node.instance_info = instance_info + # Set target state to expose that work is in progress node.provision_state = states.DEPLOYING node.target_provision_state = states.DEPLOYDONE diff --git a/ironic/tests/conductor/test_manager.py b/ironic/tests/conductor/test_manager.py index e22484392..f1f49ddc0 100644 --- a/ironic/tests/conductor/test_manager.py +++ b/ironic/tests/conductor/test_manager.py @@ -735,7 +735,9 @@ class DoNodeDeployTearDownTestCase(_ServiceSetUpMixin, self._start_service() mock_deploy.return_value = states.DEPLOYING node = obj_utils.create_test_node(self.context, driver='fake', - provision_state=states.ACTIVE) + provision_state=states.ACTIVE, + instance_info={'kernel': 'aaaa', + 'ramdisk': 'bbbb'}) self.service.do_node_deploy(self.context, node.uuid, rebuild=True) self.service._worker_pool.waitall() @@ -747,6 +749,9 @@ class DoNodeDeployTearDownTestCase(_ServiceSetUpMixin, # Verify reservation has been cleared. self.assertIsNone(node.reservation) mock_deploy.assert_called_once_with(mock.ANY) + # Verify instance_info values has been cleared. + self.assertNotIn('kernel', node.instance_info) + self.assertNotIn('ramdisk', node.instance_info) @mock.patch('ironic.drivers.modules.fake.FakeDeploy.deploy') def test_do_node_deploy_rebuild_deployfail_state(self, mock_deploy): |