diff options
author | Zuul <zuul@review.opendev.org> | 2023-03-02 14:23:40 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2023-03-02 14:23:40 +0000 |
commit | a3f854392ad2bba860354647aacb0145b67995aa (patch) | |
tree | 882a1a020d530045a27410764fc29899797aa703 /ironic/tests/unit/conductor/test_utils.py | |
parent | 63de82c3d3724d7989ffe119cc78d2aa9399aa77 (diff) | |
parent | 9a0fa631ca53b40f4dc1877a73e65ded8ac37616 (diff) | |
download | ironic-a3f854392ad2bba860354647aacb0145b67995aa.tar.gz |
Merge "Do not move nodes to CLEAN FAILED with empty last_error"
Diffstat (limited to 'ironic/tests/unit/conductor/test_utils.py')
-rw-r--r-- | ironic/tests/unit/conductor/test_utils.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/ironic/tests/unit/conductor/test_utils.py b/ironic/tests/unit/conductor/test_utils.py index a424e5132..a29da21a7 100644 --- a/ironic/tests/unit/conductor/test_utils.py +++ b/ironic/tests/unit/conductor/test_utils.py @@ -196,7 +196,8 @@ class NodePowerActionTestCase(db_base.DbTestCase): node = obj_utils.create_test_node(self.context, uuid=uuidutils.generate_uuid(), driver='fake-hardware', - power_state=states.POWER_OFF) + power_state=states.POWER_OFF, + last_error='failed before') task = task_manager.TaskManager(self.context, node.uuid) get_power_mock.return_value = states.POWER_OFF @@ -209,6 +210,27 @@ class NodePowerActionTestCase(db_base.DbTestCase): self.assertIsNone(node['target_power_state']) self.assertIsNone(node['last_error']) + @mock.patch.object(fake.FakePower, 'get_power_state', autospec=True) + def test_node_power_action_keep_last_error(self, get_power_mock): + """Test node_power_action to keep last_error for failed states.""" + node = obj_utils.create_test_node(self.context, + uuid=uuidutils.generate_uuid(), + driver='fake-hardware', + power_state=states.POWER_OFF, + provision_state=states.CLEANFAIL, + last_error='failed before') + task = task_manager.TaskManager(self.context, node.uuid) + + get_power_mock.return_value = states.POWER_OFF + + conductor_utils.node_power_action(task, states.POWER_ON) + + node.refresh() + get_power_mock.assert_called_once_with(mock.ANY, mock.ANY) + self.assertEqual(states.POWER_ON, node['power_state']) + self.assertIsNone(node['target_power_state']) + self.assertEqual('failed before', node['last_error']) + @mock.patch('ironic.objects.node.NodeSetPowerStateNotification', autospec=True) @mock.patch.object(fake.FakePower, 'get_power_state', autospec=True) |