示例#1
0
文件: test_ssh.py 项目: krast/ironic
    def test__get_power_status_error(self):
        info = ssh._parse_driver_info(self.node)
        self.mox.StubOutWithMock(ssh, "_exec_ssh_command")
        self.mox.StubOutWithMock(ssh, "_get_hosts_name_for_node")

        ssh._exec_ssh_command(self.sshclient, info["cmd_set"]["list_running"]).AndReturn(
            ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}']
        )
        ssh._get_hosts_name_for_node(self.sshclient, info).AndReturn(None)
        self.mox.ReplayAll()

        pstate = ssh._get_power_status(self.sshclient, info)
        self.assertEqual(pstate, states.ERROR)
        self.mox.VerifyAll()
示例#2
0
    def test__get_power_status_error(self):
        info = ssh._parse_driver_info(self.node)
        self.mox.StubOutWithMock(ssh, '_exec_ssh_command')
        self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node')

        ssh._exec_ssh_command(
            self.sshclient, info['cmd_set']['list_running']).AndReturn(
            ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}'])
        ssh._get_hosts_name_for_node(self.sshclient, info).\
                AndReturn(None)
        self.mox.ReplayAll()

        pstate = ssh._get_power_status(self.sshclient, info)
        self.assertEqual(pstate, states.ERROR)
        self.mox.VerifyAll()
示例#3
0
    def test__get_power_status_off(self):
        info = ssh._parse_driver_info(self.node)
        self.mox.StubOutWithMock(ssh, '_exec_ssh_command')
        self.mox.StubOutWithMock(ssh, '_get_hosts_name_for_node')

        ssh._exec_ssh_command(
            self.sshclient, info['cmd_set']['list_running']).AndReturn(
            ['"NodeName" {b43c4982-110c-4c29-9325-d5f41b053513}'])
        ssh._get_hosts_name_for_node(self.sshclient, info).\
                AndReturn("NotNodeName")
        self.mox.ReplayAll()

        pstate = ssh._get_power_status(self.sshclient, info)
        self.assertEqual(pstate, states.POWER_OFF)
        self.mox.VerifyAll()
示例#4
0
    def test__get_hosts_name_for_node_match_after_retry(self, exec_ssh_mock):
        self.config(group='ssh', get_vm_name_attempts=2)
        self.config(group='ssh', get_vm_name_retry_interval=0)
        info = ssh._parse_driver_info(self.node)
        info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"]
        exec_ssh_mock.side_effect = iter([('NodeName', ''), ('', ''),
                                          ('NodeName', ''),
                                          ('11:11:11:11:11:11', '')])

        ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'],
                             info['cmd_set']['list_all'])

        cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'],
                                 info['cmd_set']['get_node_macs'])

        cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName')
        expected = [
            mock.call(self.sshclient, ssh_cmd),
            mock.call(self.sshclient, cmd_to_exec)
        ] * 2

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)

        self.assertEqual('NodeName', found_name)
        self.assertEqual(expected, exec_ssh_mock.call_args_list)
示例#5
0
文件: test_ssh.py 项目: krast/ironic
    def test__power_off_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_ON)
        ssh._get_hosts_name_for_node(self.sshclient, info).AndReturn("NodeName")
        cmd_to_exec = info["cmd_set"]["stop_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_off(self.sshclient, info)
        self.assertEqual(current_state, states.ERROR)
        self.mox.VerifyAll()
示例#6
0
    def test__power_off_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_ON)
        ssh._get_hosts_name_for_node(self.sshclient, info).\
                AndReturn("NodeName")
        cmd_to_exec = info['cmd_set']['stop_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_off(self.sshclient, info)
        self.assertEqual(current_state, states.ERROR)
        self.mox.VerifyAll()
示例#7
0
    def test__power_off_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_ON)
        ssh._get_hosts_name_for_node(self.sshclient, info).\
                AndReturn("NodeName")
        cmd_to_exec = info['cmd_set']['stop_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_off(self.sshclient, info)
        self.assertEqual(current_state, states.POWER_OFF)
        self.mox.VerifyAll()
示例#8
0
文件: test_ssh.py 项目: krast/ironic
    def test__get_hosts_name_for_node_no_match(self):
        info = ssh._parse_driver_info(self.node)
        info["macs"] = ["11:11:11:11:11:11", "22:22:22:22:22:22"]
        self.mox.StubOutWithMock(ssh, "_exec_ssh_command")
        ssh._exec_ssh_command(self.sshclient, info["cmd_set"]["list_all"]).AndReturn(["NodeName"])
        cmd_to_exec = info["cmd_set"]["get_node_macs"]
        cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName")
        ssh._exec_ssh_command(self.sshclient, cmd_to_exec).AndReturn(["52:54:00:cf:2d:31"])
        self.mox.ReplayAll()

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)
        self.assertEqual(found_name, None)
        self.mox.VerifyAll()
示例#9
0
    def test__get_hosts_name_for_node_match(self, exec_ssh_mock):
        info = ssh._parse_driver_info(self.node)
        info["macs"] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
        ssh_cmd = "%s %s" % (info["cmd_set"]["base_cmd"], info["cmd_set"]["list_all"])

        cmd_to_exec = "%s %s" % (info["cmd_set"]["base_cmd"], info["cmd_set"]["get_node_macs"])
        cmd_to_exec = cmd_to_exec.replace("{_NodeName_}", "NodeName")
        exec_ssh_mock.side_effect = [("NodeName", ""), ("52:54:00:cf:2d:31", "")]
        expected = [mock.call(self.sshclient, ssh_cmd), mock.call(self.sshclient, cmd_to_exec)]

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)

        self.assertEqual("NodeName", found_name)
        self.assertEqual(expected, exec_ssh_mock.call_args_list)
示例#10
0
    def test__get_hosts_name_for_node_no_match(self):
        info = ssh._parse_driver_info(self.node)
        info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"]
        self.mox.StubOutWithMock(ssh, '_exec_ssh_command')
        ssh._exec_ssh_command(self.sshclient, info['cmd_set']['list_all']).\
                AndReturn(['NodeName'])
        cmd_to_exec = info['cmd_set']['get_node_macs']
        cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName')
        ssh._exec_ssh_command(self.sshclient, cmd_to_exec).\
                AndReturn(['52:54:00:cf:2d:31'])
        self.mox.ReplayAll()

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)
        self.assertEqual(found_name, None)
        self.mox.VerifyAll()
示例#11
0
    def test__get_hosts_name_for_node_match(self):
        info = ssh._parse_driver_info(self.node)
        info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
        ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'],
                             info['cmd_set']['list_all'])

        cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'],
                                 info['cmd_set']['get_node_macs'])
        cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName')
        self.exec_ssh_mock.side_effect = [['NodeName'], ['52:54:00:cf:2d:31']]
        expected = [mock.call(self.sshclient, ssh_cmd),
                    mock.call(self.sshclient, cmd_to_exec)]

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)

        self.assertEqual(found_name, 'NodeName')
        self.assertEqual(self.exec_ssh_mock.call_args_list, expected)
示例#12
0
    def test__get_hosts_name_for_node_match(self, exec_ssh_mock):
        info = ssh._parse_driver_info(self.node)
        info['macs'] = ["11:11:11:11:11:11", "52:54:00:cf:2d:31"]
        ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'],
                             info['cmd_set']['list_all'])

        cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'],
                                 info['cmd_set']['get_node_macs'])
        cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName')
        exec_ssh_mock.side_effect = [('NodeName', ''),
                                          ('52:54:00:cf:2d:31', '')]
        expected = [mock.call(self.sshclient, ssh_cmd),
                    mock.call(self.sshclient, cmd_to_exec)]

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)

        self.assertEqual('NodeName', found_name)
        self.assertEqual(expected, exec_ssh_mock.call_args_list)
示例#13
0
    def test__get_hosts_name_for_node_no_match(self, exec_ssh_mock):
        info = ssh._parse_driver_info(self.node)
        info['macs'] = ["11:11:11:11:11:11", "22:22:22:22:22:22"]
        exec_ssh_mock.side_effect = iter([('NodeName', ''),
                                          ('52:54:00:cf:2d:31', '')])

        ssh_cmd = "%s %s" % (info['cmd_set']['base_cmd'],
                             info['cmd_set']['list_all'])

        cmd_to_exec = "%s %s" % (info['cmd_set']['base_cmd'],
                                 info['cmd_set']['get_node_macs'])

        cmd_to_exec = cmd_to_exec.replace('{_NodeName_}', 'NodeName')
        expected = [mock.call(self.sshclient, ssh_cmd),
                    mock.call(self.sshclient, cmd_to_exec)]

        found_name = ssh._get_hosts_name_for_node(self.sshclient, info)

        self.assertIsNone(found_name)
        self.assertEqual(expected, exec_ssh_mock.call_args_list)