Merge "Fix fast_track + agent_url update fix"

This commit is contained in:
Zuul 2020-01-10 17:13:35 +00:00 committed by Gerrit Code Review
commit 13e350c7ad
3 changed files with 26 additions and 4 deletions

View File

@ -1480,7 +1480,8 @@ class ConductorManager(base_manager.BaseConductorManager):
driver_internal_info.pop('cleaning_reboot', None)
driver_internal_info.pop('cleaning_polling', None)
# Remove agent_url
driver_internal_info.pop('agent_url', None)
if not utils.fast_track_able(task):
driver_internal_info.pop('agent_url', None)
node.driver_internal_info = driver_internal_info
node.save()
try:

View File

@ -4490,10 +4490,14 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.execute_clean_step',
autospec=True)
def _do_next_clean_step_no_steps(self, mock_execute, manual=False):
def _do_next_clean_step_no_steps(self, mock_execute, manual=False,
fast_track=False):
if fast_track:
self.config(fast_track=True, group='deploy')
for info in ({'clean_steps': None, 'clean_step_index': None},
{'clean_steps': None}):
for info in ({'clean_steps': None, 'clean_step_index': None,
'agent_url': 'test-url'},
{'clean_steps': None, 'agent_url': 'test-url'}):
# Resume where there are no steps, should be a noop
tgt_prov_state = states.MANAGEABLE if manual else states.AVAILABLE
@ -4520,6 +4524,11 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
self.assertEqual({}, node.clean_step)
self.assertNotIn('clean_step_index', node.driver_internal_info)
self.assertFalse(mock_execute.called)
if fast_track:
self.assertEqual('test-url',
node.driver_internal_info.get('agent_url'))
else:
self.assertNotIn('agent_url', node.driver_internal_info)
mock_execute.reset_mock()
def test__do_next_clean_step_automated_no_steps(self):
@ -4528,6 +4537,9 @@ class DoNodeCleanTestCase(mgr_utils.ServiceSetUpMixin, db_base.DbTestCase):
def test__do_next_clean_step_manual_no_steps(self):
self._do_next_clean_step_no_steps(manual=True)
def test__do_next_clean_step_fast_track(self):
self._do_next_clean_step_no_steps(fast_track=True)
@mock.patch('ironic.drivers.modules.fake.FakePower.execute_clean_step',
autospec=True)
@mock.patch('ironic.drivers.modules.fake.FakeDeploy.execute_clean_step',

View File

@ -0,0 +1,9 @@
---
fixes:
- |
Fixes an issue with fasttrack where a recent security related change to
prevent the ``agent_url`` field from being updated in a node, to
functionally prevent fast_track from succeeding as the node would fail
with an exception indicating the ``agent_url`` could not be found.
The required ``agent_url`` value is now preserved when the fast track
feature is enabled as the running ramdisk is not shut down.