Wiping agent tokens on reboot via API - take 2

Because of using an incorrect variable, reboot was treated as power on,
and the token was not wiped.

Change-Id: I656450c2bedc3dc0d20a70de78cc29bf64d5fe85
Story: #2008097
Task: #40799
This commit is contained in:
Dmitry Tantsur 2020-10-05 17:36:45 +02:00
parent e7d08bcf75
commit e39858dd8c
3 changed files with 11 additions and 3 deletions

View File

@ -287,8 +287,8 @@ def node_power_action(task, new_state, timeout=None):
# NOTE(dtantsur): wipe token on shutting down, otherwise a reboot in
# fast-track (or an accidentally booted agent) will cause subsequent
# actions to fail.
if target_state in (states.POWER_OFF, states.SOFT_POWER_OFF,
states.REBOOT, states.SOFT_REBOOT):
if new_state in (states.POWER_OFF, states.SOFT_POWER_OFF,
states.REBOOT, states.SOFT_REBOOT):
wipe_internal_info_on_power_off(node)
node.save()

View File

@ -278,10 +278,13 @@ class NodePowerActionTestCase(db_base.DbTestCase):
@mock.patch.object(fake.FakePower, 'get_power_state', autospec=True)
def test_node_power_action_power_reboot(self, get_power_mock, reboot_mock):
"""Test for reboot a node."""
dii = {'agent_secret_token': 'token',
'agent_cached_deploy_steps': ['steps']}
node = obj_utils.create_test_node(self.context,
uuid=uuidutils.generate_uuid(),
driver='fake-hardware',
power_state=states.POWER_ON)
power_state=states.POWER_ON,
driver_internal_info=dii)
task = task_manager.TaskManager(self.context, node.uuid)
conductor_utils.node_power_action(task, states.REBOOT)
@ -292,6 +295,7 @@ class NodePowerActionTestCase(db_base.DbTestCase):
self.assertEqual(states.POWER_ON, node['power_state'])
self.assertIsNone(node['target_power_state'])
self.assertIsNone(node['last_error'])
self.assertNotIn('agent_secret_token', node['driver_internal_info'])
@mock.patch.object(fake.FakePower, 'get_power_state', autospec=True)
def test_node_power_action_invalid_state(self, get_power_mock):

View File

@ -0,0 +1,4 @@
---
fixes:
- |
Fixes wiping agent token on rebooting via API.