summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/test_agent_base.py
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2020-07-17 15:10:15 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2020-07-20 09:41:41 +0200
commite804f6c56bbfc9c71dda9096710ad6288b5d618a (patch)
treec385a1f624eaf895f93688bfbcdd958404d5f165 /ironic/tests/unit/drivers/modules/test_agent_base.py
parent3b6163afd2404cbc326598d879c71da0859d6add (diff)
downloadironic-e804f6c56bbfc9c71dda9096710ad6288b5d618a.tar.gz
Account for power interfaces that cannot power on
The future agent power interface will only be capable of rebooting, so: 1) Adjust agent_base to be able to use reboot instead power off+on 2) Adjust power sync to avoid trying to force power state for such nodes Change-Id: Ia95a68729f684a06c722539816eadea5ebb80d1a Story: #2007771 Task: #40381
Diffstat (limited to 'ironic/tests/unit/drivers/modules/test_agent_base.py')
-rw-r--r--ironic/tests/unit/drivers/modules/test_agent_base.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/ironic/tests/unit/drivers/modules/test_agent_base.py b/ironic/tests/unit/drivers/modules/test_agent_base.py
index 25fa4dc23..dac8e2fca 100644
--- a/ironic/tests/unit/drivers/modules/test_agent_base.py
+++ b/ironic/tests/unit/drivers/modules/test_agent_base.py
@@ -1100,6 +1100,29 @@ class AgentDeployMixinTest(AgentDeployMixinBaseTest):
{'node': task.node.uuid, 'error': log_error})
self.assertFalse(mock_collect.called)
+ @mock.patch.object(manager_utils, 'power_on_node_if_needed', autospec=True)
+ @mock.patch.object(driver_utils, 'collect_ramdisk_logs', autospec=True)
+ @mock.patch.object(time, 'sleep', lambda seconds: None)
+ @mock.patch.object(manager_utils, 'node_power_action', autospec=True)
+ @mock.patch.object(fake.FakePower, 'get_supported_power_states',
+ lambda self, task: [states.REBOOT])
+ @mock.patch.object(agent_client.AgentClient, 'sync', autospec=True)
+ def test_tear_down_agent_no_power_on_support(
+ self, sync_mock, node_power_action_mock, collect_mock,
+ power_on_node_if_needed_mock):
+ cfg.CONF.set_override('deploy_logs_collect', 'always', 'agent')
+ self.node.provision_state = states.DEPLOYING
+ self.node.target_provision_state = states.ACTIVE
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ self.deploy.tear_down_agent(task)
+ node_power_action_mock.assert_called_once_with(task, states.REBOOT)
+ self.assertEqual(states.DEPLOYING, task.node.provision_state)
+ self.assertEqual(states.ACTIVE, task.node.target_provision_state)
+ collect_mock.assert_called_once_with(task.node)
+ self.assertFalse(power_on_node_if_needed_mock.called)
+ sync_mock.assert_called_once_with(self.deploy._client, task.node)
+
@mock.patch.object(manager_utils, 'restore_power_state_if_needed',
autospec=True)
@mock.patch.object(manager_utils, 'power_on_node_if_needed', autospec=True)
@@ -1145,6 +1168,27 @@ class AgentDeployMixinTest(AgentDeployMixinBaseTest):
configure_tenant_net_mock.assert_called_once_with(mock.ANY, task)
self.assertFalse(mock_collect.called)
+ @mock.patch.object(manager_utils, 'node_power_action', autospec=True)
+ def test_boot_instance(self, node_power_action_mock):
+ self.node.provision_state = states.DEPLOYING
+ self.node.target_provision_state = states.ACTIVE
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ self.deploy.boot_instance(task)
+ node_power_action_mock.assert_called_once_with(task,
+ states.POWER_ON)
+
+ @mock.patch.object(fake.FakePower, 'get_supported_power_states',
+ lambda self, task: [states.REBOOT])
+ @mock.patch.object(manager_utils, 'node_power_action', autospec=True)
+ def test_boot_instance_no_power_on(self, node_power_action_mock):
+ self.node.provision_state = states.DEPLOYING
+ self.node.target_provision_state = states.ACTIVE
+ self.node.save()
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ self.deploy.boot_instance(task)
+ self.assertFalse(node_power_action_mock.called)
+
@mock.patch.object(agent_client.AgentClient, 'install_bootloader',
autospec=True)
@mock.patch.object(deploy_utils, 'try_set_boot_device', autospec=True)