def test_reboot_good(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_parse_driver_info') self.mox.StubOutWithMock(ssh, '_get_nodes_mac_addresses') self.mox.StubOutWithMock(ssh, '_get_connection') self.mox.StubOutWithMock(ssh, '_get_power_status') self.mox.StubOutWithMock(ssh, '_power_off') self.mox.StubOutWithMock(ssh, '_power_on') ssh._parse_driver_info(self.node).\ AndReturn(info) ssh._get_nodes_mac_addresses(mox.IgnoreArg(), self.node).\ AndReturn(info['macs']) ssh._get_connection(self.node).\ AndReturn(self.sshclient) ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_ON) ssh._power_off(self.sshclient, info).\ AndReturn(None) ssh._power_on(self.sshclient, info).\ AndReturn(states.POWER_ON) self.mox.ReplayAll() with task_manager.acquire([info['uuid']], shared=False) as task: task.resources[0].driver.power.reboot(task, self.node) self.mox.VerifyAll()
def test_set_power_state_on_fail(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_parse_driver_info') self.mox.StubOutWithMock(ssh, '_get_nodes_mac_addresses') self.mox.StubOutWithMock(ssh, '_get_connection') self.mox.StubOutWithMock(ssh, '_power_on') ssh._parse_driver_info(self.node).\ AndReturn(info) ssh._get_nodes_mac_addresses(mox.IgnoreArg(), self.node).\ AndReturn(info['macs']) ssh._get_connection(self.node).\ AndReturn(self.sshclient) ssh._power_on(self.sshclient, info).\ AndReturn(states.POWER_OFF) self.mox.ReplayAll() with task_manager.acquire([info['uuid']], shared=False) as task: self.assertRaises(exception.PowerStateFailure, task.resources[0].driver.power.set_power_state, task, self.node, states.POWER_ON) self.mox.VerifyAll()
def test__power_on_fail(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] with mock.patch.object(ssh, '_get_power_status') \ as get_power_status_mock: with mock.patch.object(ssh, '_get_hosts_name_for_node') \ as get_hosts_name_mock: get_power_status_mock.side_effect = [states.POWER_OFF, states.POWER_OFF] get_hosts_name_mock.return_value = "NodeName" expected = [mock.call(self.sshclient, info), mock.call(self.sshclient, info)] cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['start_cmd']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') current_state = ssh._power_on(self.sshclient, info) self.assertEqual(states.ERROR, current_state) self.assertEqual(expected, get_power_status_mock.call_args_list) get_hosts_name_mock.assert_called_once_with(self.sshclient, info) self.exec_ssh_mock.assert_called_once_with(self.sshclient, cmd_to_exec)
def test__power_on_fail(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] with mock.patch.object(ssh, '_get_power_status') \ as get_power_status_mock: with mock.patch.object(ssh, '_get_hosts_name_for_node') \ as get_hosts_name_mock: get_power_status_mock.side_effect = [ states.POWER_OFF, states.POWER_OFF ] get_hosts_name_mock.return_value = "NodeName" expected = [ mock.call(self.sshclient, info), mock.call(self.sshclient, info) ] cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['start_cmd']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') current_state = ssh._power_on(self.sshclient, info) self.assertEqual(current_state, states.ERROR) self.assertEqual(get_power_status_mock.call_args_list, expected) get_hosts_name_mock.assert_called_once_with( self.sshclient, info) self.exec_ssh_mock.assert_called_once_with( self.sshclient, cmd_to_exec)
def test_set_power_state_on_good(self): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, "_parse_driver_info") self.mox.StubOutWithMock(ssh, "_get_nodes_mac_addresses") self.mox.StubOutWithMock(ssh, "_get_connection") self.mox.StubOutWithMock(ssh, "_power_on") ssh._parse_driver_info(self.node).AndReturn(info) ssh._get_nodes_mac_addresses(mox.IgnoreArg(), self.node).AndReturn(info["macs"]) ssh._get_connection(self.node).AndReturn(self.sshclient) ssh._power_on(self.sshclient, info).AndReturn(states.POWER_ON) self.mox.ReplayAll() with task_manager.acquire([info["uuid"]], shared=False) as task: task.resources[0].driver.power.set_power_state(task, self.node, states.POWER_ON) self.assert_(True) self.mox.VerifyAll()
def test_reboot_fail(self): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, "_parse_driver_info") self.mox.StubOutWithMock(ssh, "_get_nodes_mac_addresses") self.mox.StubOutWithMock(ssh, "_get_connection") self.mox.StubOutWithMock(ssh, "_get_power_status") self.mox.StubOutWithMock(ssh, "_power_off") self.mox.StubOutWithMock(ssh, "_power_on") ssh._parse_driver_info(self.node).AndReturn(info) ssh._get_nodes_mac_addresses(mox.IgnoreArg(), self.node).AndReturn(info["macs"]) ssh._get_connection(self.node).AndReturn(self.sshclient) ssh._get_power_status(self.sshclient, info).AndReturn(states.POWER_ON) ssh._power_off(self.sshclient, info).AndReturn(None) ssh._power_on(self.sshclient, info).AndReturn(states.POWER_OFF) self.mox.ReplayAll() with task_manager.acquire([info["uuid"]], shared=False) as task: self.assertRaises(exception.PowerStateFailure, task.resources[0].driver.power.reboot, task, self.node) self.mox.VerifyAll()
def test__power_on_fail(self, get_hosts_name_mock, get_power_status_mock, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] get_power_status_mock.side_effect = [states.POWER_OFF, states.POWER_OFF] get_hosts_name_mock.return_value = "NodeName" expected = [mock.call(self.sshclient, info), mock.call(self.sshclient, info)] cmd_to_exec = "%s %s" % (info["cmd_set"]["base_cmd"], info["cmd_set"]["start_cmd"]) cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName") current_state = ssh._power_on(self.sshclient, info) self.assertEqual(states.ERROR, current_state) self.assertEqual(expected, get_power_status_mock.call_args_list) get_hosts_name_mock.assert_called_once_with(self.sshclient, info) exec_ssh_mock.assert_called_once_with(self.sshclient, cmd_to_exec)
def test__power_on_fail(self): info = ssh._parse_driver_info(self.node) info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, "_get_power_status") self.mox.StubOutWithMock(ssh, "_get_hosts_name_for_node") self.mox.StubOutWithMock(ssh, "_exec_ssh_command") ssh._get_power_status(self.sshclient, info).AndReturn(states.POWER_OFF) ssh._get_hosts_name_for_node(self.sshclient, info).AndReturn("NodeName") cmd_to_exec = info["cmd_set"]["start_cmd"] cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName") ssh._exec_ssh_command(self.sshclient, cmd_to_exec).AndReturn(None) ssh._get_power_status(self.sshclient, info).AndReturn(states.POWER_OFF) self.mox.ReplayAll() current_state = ssh._power_on(self.sshclient, info) self.assertEqual(current_state, states.ERROR) self.mox.VerifyAll()
def test__power_on_good(self, get_hosts_name_mock, get_power_status_mock, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] get_power_status_mock.side_effect = iter([states.POWER_OFF, states.POWER_ON]) get_hosts_name_mock.return_value = "NodeName" expected = [mock.call(self.sshclient, info), mock.call(self.sshclient, info)] cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['start_cmd']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') current_state = ssh._power_on(self.sshclient, info) self.assertEqual(states.POWER_ON, current_state) self.assertEqual(expected, get_power_status_mock.call_args_list) get_hosts_name_mock.assert_called_once_with(self.sshclient, info) exec_ssh_mock.assert_called_once_with(self.sshclient, cmd_to_exec)
def test__power_on_good(self, get_hosts_name_mock, get_power_status_mock, exec_ssh_mock): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] get_power_status_mock.side_effect = [states.POWER_OFF, states.POWER_ON] get_hosts_name_mock.return_value = "NodeName" expected = [mock.call(self.sshclient, info), mock.call(self.sshclient, info)] cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'], info['cmd_set']['start_cmd']) cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') current_state = ssh._power_on(self.sshclient, info) self.assertEqual(states.POWER_ON, current_state) self.assertEqual(expected, get_power_status_mock.call_args_list) get_hosts_name_mock.assert_called_once_with(self.sshclient, info) exec_ssh_mock.assert_called_once_with(self.sshclient, cmd_to_exec)
def test__power_on_fail(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_get_power_status') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') self.mox.StubOutWithMock(ssh, '_exec_ssh_command') ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_OFF) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn("NodeName") cmd_to_exec = info['cmd_set']['start_cmd'] cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\ AndReturn(None) ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_OFF) self.mox.ReplayAll() current_state = ssh._power_on(self.sshclient, info) self.assertEqual(current_state, states.ERROR) self.mox.VerifyAll()
def test__power_on_good(self): info = ssh._parse_driver_info(self.node) info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"] self.mox.StubOutWithMock(ssh, '_get_power_status') self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node') self.mox.StubOutWithMock(ssh, '_exec_ssh_command') ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_OFF) ssh._get_hosts_name_for_node(self.sshclient, info).\ AndReturn("NodeName") cmd_to_exec = info['cmd_set']['start_cmd'] cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName') ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\ AndReturn(None) ssh._get_power_status(self.sshclient, info).\ AndReturn(states.POWER_ON) self.mox.ReplayAll() current_state = ssh._power_on(self.sshclient, info) self.assertEqual(current_state, states.POWER_ON) self.mox.VerifyAll()