Fix fast track when exiting cleaning
When exiting cleaning, previously the agent token was purged from ironic's database and agents continuing to run would not be able to heartbeat to the conductor. With agent token, this would orphan the agent such that it thought it had an agent token, yet the conductor did not. Change-Id: Id6f8609bcda369649d0f677aceed26ed5e72a313
This commit is contained in:
parent
3daffe07a8
commit
5b785569b6
@ -218,12 +218,13 @@ def do_next_clean_step(task, step_index):
|
||||
driver_internal_info.pop('clean_step_index', None)
|
||||
driver_internal_info.pop('cleaning_reboot', None)
|
||||
driver_internal_info.pop('cleaning_polling', None)
|
||||
driver_internal_info.pop('agent_secret_token', None)
|
||||
driver_internal_info.pop('agent_secret_token_pregenerated', None)
|
||||
|
||||
# Remove agent_url
|
||||
if not utils.fast_track_able(task):
|
||||
driver_internal_info.pop('agent_url', None)
|
||||
driver_internal_info.pop('agent_secret_token', None)
|
||||
driver_internal_info.pop('agent_secret_token_pregenerated', None)
|
||||
|
||||
node.driver_internal_info = driver_internal_info
|
||||
node.save()
|
||||
try:
|
||||
|
@ -889,8 +889,9 @@ class DoNodeCleanTestCase(db_base.DbTestCase):
|
||||
self.config(fast_track=True, group='deploy')
|
||||
|
||||
for info in ({'clean_steps': None, 'clean_step_index': None,
|
||||
'agent_url': 'test-url'},
|
||||
{'clean_steps': None, 'agent_url': 'test-url'}):
|
||||
'agent_url': 'test-url', 'agent_secret_token': 'magic'},
|
||||
{'clean_steps': None, 'agent_url': 'test-url',
|
||||
'agent_secret_token': 'it_is_a_kind_of_magic'}):
|
||||
# Resume where there are no steps, should be a noop
|
||||
tgt_prov_state = states.MANAGEABLE if manual else states.AVAILABLE
|
||||
|
||||
@ -918,8 +919,12 @@ class DoNodeCleanTestCase(db_base.DbTestCase):
|
||||
if fast_track:
|
||||
self.assertEqual('test-url',
|
||||
node.driver_internal_info.get('agent_url'))
|
||||
self.assertIsNotNone(
|
||||
node.driver_internal_info.get('agent_secret_token'))
|
||||
else:
|
||||
self.assertNotIn('agent_url', node.driver_internal_info)
|
||||
self.assertNotIn('agent_secret_token',
|
||||
node.driver_internal_info)
|
||||
mock_execute.reset_mock()
|
||||
|
||||
def test__do_next_clean_step_automated_no_steps(self):
|
||||
|
@ -0,0 +1,7 @@
|
||||
---
|
||||
fixes:
|
||||
- |
|
||||
Fixes a bug in "fast track" where Ironic would delete the ``agent token``
|
||||
upon exiting cleaning steps. However, if we are in fast track mode, we can
|
||||
preserve the token and continue operations with the agent as it is not
|
||||
powered off during fast track operations.
|
Loading…
x
Reference in New Issue
Block a user