コード例 #1
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
    def test_host_port_info(self):
        client = ParallelSSHClient(hosts=['dummy'],
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   connect=True)
        # No port case. Port should be 22.
        host_str = '1.2.3.4'
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, host_str)
        self.assertEqual(port, 22)

        # IPv6 with square brackets with port specified.
        host_str = '[fec2::10]:55'
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, 'fec2::10')
        self.assertEqual(port, 55)
コード例 #2
0
ファイル: test_parallel_ssh.py プロジェクト: zsjohny/st2
    def test_host_port_info(self):
        client = ParallelSSHClient(hosts=['dummy'],
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   connect=True)
        # No port case. Port should be 22.
        host_str = '1.2.3.4'
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, host_str)
        self.assertEqual(port, 22)

        # IPv6 with square brackets with port specified.
        host_str = '[fec2::10]:55'
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, 'fec2::10')
        self.assertEqual(port, 55)
コード例 #3
0
    def test_run_command_timeout(self):
        # Make sure stdout and stderr is included on timeout
        hosts = ['localhost', '127.0.0.1', 'st2build001']
        client = ParallelSSHClient(hosts=hosts,
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   connect=True)
        mock_run = Mock(
            side_effect=SSHCommandTimeoutError(cmd='pwd',
                                               timeout=10,
                                               stdout='a',
                                               stderr='b',
                                               ssh_connect_timeout=30))
        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            host_client = client._hosts_client[host]
            host_client.run = mock_run

        results = client.run('pwd')
        for host in hosts:
            result = results[host]
            self.assertEqual(result['failed'], True)
            self.assertEqual(result['stdout'], 'a')
            self.assertEqual(result['stderr'], 'b')
            self.assertEqual(result['return_code'], -9)
コード例 #4
0
    def test_run_command_timeout(self):
        # Make sure stdout and stderr is included on timeout
        hosts = ["localhost", "127.0.0.1", "st2build001"]
        client = ParallelSSHClient(hosts=hosts,
                                   user="******",
                                   pkey_file="~/.ssh/id_rsa",
                                   connect=True)
        mock_run = Mock(
            side_effect=SSHCommandTimeoutError(cmd="pwd",
                                               timeout=10,
                                               stdout="a",
                                               stderr="b",
                                               ssh_connect_timeout=30))
        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            host_client = client._hosts_client[host]
            host_client.run = mock_run

        results = client.run("pwd")
        for host in hosts:
            result = results[host]
            self.assertEqual(result["failed"], True)
            self.assertEqual(result["stdout"], "a")
            self.assertEqual(result["stderr"], "b")
            self.assertEqual(result["return_code"], -9)
コード例 #5
0
    def test_host_port_info(self):
        client = ParallelSSHClient(hosts=["dummy"],
                                   user="******",
                                   pkey_file="~/.ssh/id_rsa",
                                   connect=True)
        # No port case. Port should be 22.
        host_str = "1.2.3.4"
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, host_str)
        self.assertEqual(port, 22)

        # IPv6 with square brackets with port specified.
        host_str = "[fec2::10]:55"
        host, port = client._get_host_port_info(host_str)
        self.assertEqual(host, "fec2::10")
        self.assertEqual(port, 55)
コード例 #6
0
ファイル: test_parallel_ssh.py プロジェクト: zsjohny/st2
 def test_delete_file(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.delete_file('/remote/stuff')
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_file.assert_called_with('/remote/stuff')
コード例 #7
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
 def test_delete_file(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.delete_file('/remote/stuff')
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_file.assert_called_with('/remote/stuff')
コード例 #8
0
 def test_delete_file(self):
     hosts = ["localhost", "127.0.0.1", "st2build001"]
     client = ParallelSSHClient(hosts=hosts,
                                user="******",
                                pkey_file="~/.ssh/id_rsa",
                                connect=True)
     client.delete_file("/remote/stuff")
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_file.assert_called_with(
             "/remote/stuff")
コード例 #9
0
 def test_delete_dir(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.delete_dir('/remote/stuff/', force=True)
     expected_kwargs = {'force': True, 'timeout': None}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_dir.assert_called_with(
             '/remote/stuff/', **expected_kwargs)
コード例 #10
0
 def test_delete_dir(self):
     hosts = ["localhost", "127.0.0.1", "st2build001"]
     client = ParallelSSHClient(hosts=hosts,
                                user="******",
                                pkey_file="~/.ssh/id_rsa",
                                connect=True)
     client.delete_dir("/remote/stuff/", force=True)
     expected_kwargs = {"force": True, "timeout": None}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_dir.assert_called_with(
             "/remote/stuff/", **expected_kwargs)
コード例 #11
0
 def test_put(self):
     hosts = ["localhost", "127.0.0.1", "st2build001"]
     client = ParallelSSHClient(hosts=hosts,
                                user="******",
                                pkey_file="~/.ssh/id_rsa",
                                connect=True)
     client.put("/local/stuff", "/remote/stuff", mode=0o744)
     expected_kwargs = {"mode": 0o744, "mirror_local_mode": False}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].put.assert_called_with(
             "/local/stuff", "/remote/stuff", **expected_kwargs)
コード例 #12
0
 def test_run_command(self):
     hosts = ["localhost", "127.0.0.1", "st2build001"]
     client = ParallelSSHClient(hosts=hosts,
                                user="******",
                                pkey_file="~/.ssh/id_rsa",
                                connect=True)
     client.run("pwd", timeout=60)
     expected_kwargs = {"timeout": 60, "call_line_handler_func": True}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].run.assert_called_with(
             "pwd", **expected_kwargs)
コード例 #13
0
 def test_put(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.put('/local/stuff', '/remote/stuff', mode=0744)
     expected_kwargs = {'mode': 0744, 'mirror_local_mode': False}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].put.assert_called_with(
             '/local/stuff', '/remote/stuff', **expected_kwargs)
コード例 #14
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
    def test_connect_with_bastion(self):
        hosts = ['localhost', '127.0.0.1']
        client = ParallelSSHClient(hosts=hosts,
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   bastion_host='testing_bastion_host',
                                   connect=False)
        client.connect()

        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            self.assertEqual(client._hosts_client[hostname].bastion_host, 'testing_bastion_host')
コード例 #15
0
 def test_run_command(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.run('pwd', timeout=60)
     expected_kwargs = {'timeout': 60, 'call_line_handler_func': True}
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].run.assert_called_with(
             'pwd', **expected_kwargs)
コード例 #16
0
ファイル: test_parallel_ssh.py プロジェクト: zsjohny/st2
    def test_connect_with_bastion(self):
        hosts = ['localhost', '127.0.0.1']
        client = ParallelSSHClient(hosts=hosts,
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   bastion_host='testing_bastion_host',
                                   connect=False)
        client.connect()

        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            self.assertEqual(client._hosts_client[hostname].bastion_host, 'testing_bastion_host')
コード例 #17
0
ファイル: test_parallel_ssh.py プロジェクト: LindsayHill/st2
 def test_run_command(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.run('pwd', timeout=60)
     expected_kwargs = {
         'timeout': 60
     }
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].run.assert_called_with('pwd', **expected_kwargs)
コード例 #18
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
 def test_put(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.put('/local/stuff', '/remote/stuff', mode=0o744)
     expected_kwargs = {
         'mode': 0o744,
         'mirror_local_mode': False
     }
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].put.assert_called_with('/local/stuff', '/remote/stuff',
                                                               **expected_kwargs)
コード例 #19
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
 def test_delete_dir(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=True)
     client.delete_dir('/remote/stuff/', force=True)
     expected_kwargs = {
         'force': True,
         'timeout': None
     }
     for host in hosts:
         hostname, _ = client._get_host_port_info(host)
         client._hosts_client[hostname].delete_dir.assert_called_with('/remote/stuff/',
                                                                      **expected_kwargs)
コード例 #20
0
    def test_connect_with_bastion(self):
        hosts = ["localhost", "127.0.0.1"]
        client = ParallelSSHClient(
            hosts=hosts,
            user="******",
            pkey_file="~/.ssh/id_rsa",
            bastion_host="testing_bastion_host",
            connect=False,
        )
        client.connect()

        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            self.assertEqual(client._hosts_client[hostname].bastion_host,
                             "testing_bastion_host")
コード例 #21
0
ファイル: test_parallel_ssh.py プロジェクト: zsjohny/st2
 def test_connect_with_key(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=False)
     client.connect()
     expected_conn = {
         'allow_agent': False,
         'look_for_keys': False,
         'key_filename': '~/.ssh/id_rsa',
         'username': '******',
         'timeout': 60,
         'port': 22
     }
     for host in hosts:
         hostname, port = client._get_host_port_info(host)
         expected_conn['hostname'] = hostname
         expected_conn['port'] = port
         client._hosts_client[hostname].client.connect.assert_called_once_with(**expected_conn)
コード例 #22
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
 def test_connect_with_key(self):
     hosts = ['localhost', '127.0.0.1', 'st2build001']
     client = ParallelSSHClient(hosts=hosts,
                                user='******',
                                pkey_file='~/.ssh/id_rsa',
                                connect=False)
     client.connect()
     expected_conn = {
         'allow_agent': False,
         'look_for_keys': False,
         'key_filename': '~/.ssh/id_rsa',
         'username': '******',
         'timeout': 60,
         'port': 22
     }
     for host in hosts:
         hostname, port = client._get_host_port_info(host)
         expected_conn['hostname'] = hostname
         expected_conn['port'] = port
         client._hosts_client[hostname].client.connect.assert_called_once_with(**expected_conn)
コード例 #23
0
 def test_connect_with_key(self):
     hosts = ["localhost", "127.0.0.1", "st2build001"]
     client = ParallelSSHClient(hosts=hosts,
                                user="******",
                                pkey_file="~/.ssh/id_rsa",
                                connect=False)
     client.connect()
     expected_conn = {
         "allow_agent": False,
         "look_for_keys": False,
         "key_filename": "~/.ssh/id_rsa",
         "username": "******",
         "timeout": 60,
         "port": 22,
     }
     for host in hosts:
         hostname, port = client._get_host_port_info(host)
         expected_conn["hostname"] = hostname
         expected_conn["port"] = port
         client._hosts_client[
             hostname].client.connect.assert_called_once_with(
                 **expected_conn)
コード例 #24
0
ファイル: test_parallel_ssh.py プロジェクト: lyandut/st2
    def test_run_command_timeout(self):
        # Make sure stdout and stderr is included on timeout
        hosts = ['localhost', '127.0.0.1', 'st2build001']
        client = ParallelSSHClient(hosts=hosts,
                                   user='******',
                                   pkey_file='~/.ssh/id_rsa',
                                   connect=True)
        mock_run = Mock(side_effect=SSHCommandTimeoutError(cmd='pwd', timeout=10,
                                                           stdout='a',
                                                           stderr='b'))
        for host in hosts:
            hostname, _ = client._get_host_port_info(host)
            host_client = client._hosts_client[host]
            host_client.run = mock_run

        results = client.run('pwd')
        for host in hosts:
            result = results[host]
            self.assertEqual(result['failed'], True)
            self.assertEqual(result['stdout'], 'a')
            self.assertEqual(result['stderr'], 'b')
            self.assertEqual(result['return_code'], -9)