diff options
author | Zuul <zuul@review.opendev.org> | 2023-03-17 00:00:56 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-03-17 00:00:56 +0000 |
commit | 12eb9a0d0c2639802a4570e0700158e51eaf8d80 (patch) | |
tree | a77108f2cf01d6548efe912f8a62e764a209854f | |
parent | a27b8c9ff3d88b766960a6d8bffe77ec45c55f0e (diff) | |
parent | 11e5d86488bcb859eb4feb3afd07e6fc6ba138b5 (diff) | |
download | ironic-12eb9a0d0c2639802a4570e0700158e51eaf8d80.tar.gz |
Merge "Wipe Agent Token when cleaning timeout occcurs" into bugfix/21.3
-rw-r--r-- | ironic/conductor/utils.py | 4 | ||||
-rw-r--r-- | ironic/tests/unit/conductor/test_utils.py | 6 | ||||
-rw-r--r-- | releasenotes/notes/wipe-agent-token-upon-cleaning-timeout-c9add514fad1b02c.yaml | 7 |
3 files changed, 15 insertions, 2 deletions
diff --git a/ironic/conductor/utils.py b/ironic/conductor/utils.py index cdf3a99ee..868e2d5b0 100644 --- a/ironic/conductor/utils.py +++ b/ironic/conductor/utils.py @@ -481,9 +481,9 @@ def cleaning_error_handler(task, logmsg, errmsg=None, traceback=False, node.del_driver_internal_info('cleaning_reboot') node.del_driver_internal_info('cleaning_polling') node.del_driver_internal_info('skip_current_clean_step') - # We don't need to keep the old agent URL + # We don't need to keep the old agent URL, or token # as it should change upon the next cleaning attempt. - node.del_driver_internal_info('agent_url') + wipe_token_and_url(task) # For manual cleaning, the target provision state is MANAGEABLE, whereas # for automated cleaning, it is AVAILABLE. manual_clean = node.target_provision_state == states.MANAGEABLE diff --git a/ironic/tests/unit/conductor/test_utils.py b/ironic/tests/unit/conductor/test_utils.py index a29da21a7..e190358d2 100644 --- a/ironic/tests/unit/conductor/test_utils.py +++ b/ironic/tests/unit/conductor/test_utils.py @@ -1172,6 +1172,9 @@ class ErrorHandlersTestCase(db_base.DbTestCase): self.node.set_driver_internal_info('skip_current_clean_step', True) self.node.set_driver_internal_info('clean_step_index', 0) self.node.set_driver_internal_info('agent_url', 'url') + self.node.set_driver_internal_info('agent_secret_token', 'foo') + self.node.set_driver_internal_info('agent_secret_token_pregenerated', + False) msg = 'error bar' last_error = "last error" @@ -1184,6 +1187,9 @@ class ErrorHandlersTestCase(db_base.DbTestCase): self.assertNotIn('cleaning_polling', self.node.driver_internal_info) self.assertNotIn('skip_current_clean_step', self.node.driver_internal_info) + self.assertNotIn('agent_secret_token', self.node.driver_internal_info) + self.assertNotIn('agent_secret_token_pregenerated', + self.node.driver_internal_info) self.assertEqual(last_error, self.node.last_error) self.assertTrue(self.node.maintenance) self.assertEqual(last_error, self.node.maintenance_reason) diff --git a/releasenotes/notes/wipe-agent-token-upon-cleaning-timeout-c9add514fad1b02c.yaml b/releasenotes/notes/wipe-agent-token-upon-cleaning-timeout-c9add514fad1b02c.yaml new file mode 100644 index 000000000..0aa828ccd --- /dev/null +++ b/releasenotes/notes/wipe-agent-token-upon-cleaning-timeout-c9add514fad1b02c.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + Fixes an issue where an agent token was being orphaned if a baremetal node + timed out during cleaning operations, leading to issues where the node + would not be able to establish a new token with Ironic upon future + in some cases. We now always wipe the token in this case. |