Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
    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)
Esempio n. 4
0
    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)
Esempio n. 5
0
    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()
Esempio n. 6
0
    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()
Esempio n. 7
0
    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)
Esempio n. 8
0
    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()
Esempio n. 9
0
    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)
Esempio n. 10
0
    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)
Esempio n. 11
0
    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()
Esempio n. 12
0
    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()