コード例 #1
0
ファイル: test_cluster.py プロジェクト: zmc/teuthology
 def test_str(self):
     r1 = remote.Remote('r1', ssh=Mock())
     r2 = remote.Remote('r2', ssh=Mock())
     c = cluster.Cluster(remotes=[
         (r1, ['foo', 'bar']),
         (r2, ['baz']),
     ], )
     assert str(c) == "r1[foo,bar] r2[baz]"
コード例 #2
0
ファイル: test_cluster.py プロジェクト: zmc/teuthology
 def test_repr(self):
     r1 = remote.Remote('r1', ssh=Mock())
     r2 = remote.Remote('r2', ssh=Mock())
     c = cluster.Cluster(remotes=[
         (r1, ['foo', 'bar']),
         (r2, ['baz']),
     ], )
     assert repr(c) == \
         "Cluster(remotes=[[Remote(name='r1'), ['foo', 'bar']], " \
         "[Remote(name='r2'), ['baz']]])"
コード例 #3
0
 def test_repr(self):
     fudge.clear_expectations()
     r1 = remote.Remote('r1', ssh=fudge.Fake('SSH'))
     r2 = remote.Remote('r2', ssh=fudge.Fake('SSH'))
     c = cluster.Cluster(
         remotes=[
             (r1, ['foo', 'bar']),
             (r2, ['baz']),
             ],
         )
     assert repr(c) == "Cluster(remotes=[[Remote(name='r1'), ['foo', 'bar']], [Remote(name='r2'), ['baz']]])" # noqa
コード例 #4
0
 def test_str(self):
     fudge.clear_expectations()
     r1 = remote.Remote('r1', ssh=fudge.Fake('SSH'))
     r2 = remote.Remote('r2', ssh=fudge.Fake('SSH'))
     c = cluster.Cluster(
         remotes=[
             (r1, ['foo', 'bar']),
             (r2, ['baz']),
             ],
         )
     assert str(c) == "r1[foo,bar] r2[baz]"
コード例 #5
0
 def test_shortname_default(self):
     r = remote.Remote(
         name='*****@*****.**',
         ssh=self.m_ssh,
         )
     assert r.shortname == 'xyzzy'
     assert str(r) == '*****@*****.**'
コード例 #6
0
 def test_arch(self):
     m_transport = MagicMock()
     m_transport.getpeername.return_value = ('name', 22)
     self.m_ssh.get_transport.return_value = m_transport
     m_run = MagicMock()
     args = [
         'uname',
         '-m',
         ]
     stdout = StringIO('test_arch')
     stdout.seek(0)
     proc = RemoteProcess(
         client=self.m_ssh,
         args='fakey',
         )
     proc._stdout_buf = Mock()
     proc._stdout_buf.channel = Mock()
     proc._stdout_buf.channel.recv_exit_status.return_value = 0
     proc._stdout_buf.channel.expects('recv_exit_status').returns(0)
     proc.stdout = stdout
     m_run.return_value = proc
     r = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
     r._runner = m_run
     assert m_transport.getpeername.called_once_with()
     assert proc._stdout_buf.channel.recv_exit_status.called_once_with()
     assert m_run.called_once_with(
         client=self.m_ssh,
         args=args,
         stdout=StringIO(),
         name=r.shortname,
     )
     assert r.arch == 'test_arch'
コード例 #7
0
ファイル: __init__.py プロジェクト: aspineon/teuthology
def add_remotes(ctx, config):
    """
    Create a ctx.cluster object populated with remotes mapped to roles
    """
    ctx.cluster = cluster.Cluster()
    # Allow jobs to run without using nodes, for self-testing
    if 'roles' not in ctx.config and 'targets' not in ctx.config:
        return
    remotes = []
    machs = []
    for name in ctx.config['targets'].keys():
        machs.append(name)
    for t, key in ctx.config['targets'].items():
        t = misc.canonicalize_hostname(t)
        try:
            if ctx.config['sshkeys'] == 'ignore':
                key = None
        except (AttributeError, KeyError):
            pass
        rem = remote.Remote(name=t, host_key=key, keep_alive=True)
        remotes.append(rem)
    if 'roles' in ctx.config:
        for rem, roles in zip(remotes, ctx.config['roles']):
            assert all(isinstance(role, str) for role in roles), \
                "Roles in config must be strings: %r" % roles
            ctx.cluster.add(rem, roles)
            log.info('roles: %s - %s' % (rem, roles))
    else:
        for rem in remotes:
            ctx.cluster.add(rem, rem.name)
コード例 #8
0
def main():
    if len(sys.argv) == 3:
	user = sys.argv[1] + "@"
	host = sys.argv[2]
    elif len(sys.argv) == 2:
        user = ""
	host = sys.argv[1]
    else:
        sys.stderr.write("usage: radosgw_admin.py [user] host\n")
	exit(1)
    client0 = remote.Remote(user + host)
    ctx = config
    ctx.cluster=cluster.Cluster(remotes=[(client0,
     [ 'ceph.client.rgw.%s' % (host),  ]),])

    ctx.rgw = argparse.Namespace()
    endpoints = {}
    endpoints['ceph.client.rgw.%s' % host] = (host, 80)
    ctx.rgw.role_endpoints = endpoints
    ctx.rgw.realm = None
    ctx.rgw.regions = {'region0': { 'api name': 'api1',
	    'is master': True, 'master zone': 'r0z0',
	    'zones': ['r0z0', 'r0z1'] }}
    ctx.rgw.config = {'ceph.client.rgw.%s' % host: {'system user': {'name': '%s-system-user' % host}}}
    task(config, None)
    exit()
コード例 #9
0
 def setup(self):
     self.r1 = remote.Remote('r1', ssh=Mock())
     self.c = cluster.Cluster(
         remotes=[
             (self.r1, ['foo', 'bar']),
         ],
     )
コード例 #10
0
ファイル: test_remote.py プロジェクト: zmc/teuthology
 def test_is_container(self):
     m_transport = MagicMock()
     m_transport.getpeername.return_value = ('name', 22)
     self.m_ssh.get_transport.return_value = m_transport
     m_run = MagicMock()
     args = []
     proc = RemoteProcess(
         client=self.m_ssh,
         args=args,
     )
     proc.returncode = 0
     m_run.return_value = proc
     rem = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
     rem._runner = m_run
     assert rem.is_container
     proc.returncode = 1
     rem2 = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
     rem2._runner = m_run
     assert not rem2.is_container
コード例 #11
0
 def test_17102(self, caplog):
     # http://tracker.ceph.com/issues/17102
     rem = remote.Remote(HOST)
     interval = 3
     rem.run(args="echo before; sleep %s; echo after" % interval)
     for record in caplog.records():
         if record.msg == 'before':
             before_time = record.created
         elif record.msg == 'after':
             after_time = record.created
     assert int(round(after_time - before_time)) == interval
コード例 #12
0
 def test_host_key(self):
     m_key = MagicMock()
     m_key.get_name.return_value = 'key_type'
     m_key.get_base64.return_value = 'test ssh key'
     m_transport = MagicMock()
     m_transport.get_remote_server_key.return_value = m_key
     self.m_ssh.get_transport.return_value = m_transport
     r = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
     assert r.host_key == 'key_type test ssh key'
     self.m_ssh.get_transport.assert_called_once_with()
     m_transport.get_remote_server_key.assert_called_once_with()
コード例 #13
0
 def test_sftp_get_size(self):
     m_file_obj = MagicMock()
     m_stat = Mock()
     m_stat.st_size = 42
     m_file_obj.stat.return_value = m_stat
     m_open = MagicMock()
     m_open.return_value = m_file_obj
     m_open.return_value.__enter__.return_value = m_file_obj
     with patch.object(remote.Remote, '_sftp_open_file', new=m_open):
         rem = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
         assert rem._sftp_get_size('/fake/file') == 42
コード例 #14
0
 def test_inventory_info(self):
     r = remote.Remote('user@host', host_key='host_key')
     r._arch = 'arch'
     r._os = opsys.OS(name='os_name', version='1.2.3', codename='code')
     inv_info = r.inventory_info
     assert inv_info == dict(
         name='host',
         user='******',
         arch='arch',
         os_type='os_name',
         os_version='1.2',
         ssh_pub_key='host_key',
         up=True,
     )
コード例 #15
0
 def test_run(self):
     m_transport = MagicMock()
     m_transport.getpeername.return_value = ('name', 22)
     self.m_ssh.get_transport.return_value = m_transport
     m_run = MagicMock()
     args = [
         'something',
         'more',
         ]
     proc = RemoteProcess(
         client=self.m_ssh,
         args=args,
         )
     m_run.return_value = proc
     rem = remote.Remote(name='*****@*****.**', ssh=self.m_ssh)
     rem._runner = m_run
     result = rem.run(args=args)
     assert m_transport.getpeername.called_once_with()
     assert m_run.called_once_with(args=args)
     assert result is proc
     assert result.remote is rem
コード例 #16
0
 def test_hostname(self):
     m_transport = MagicMock()
     m_transport.getpeername.return_value = ('name', 22)
     self.m_ssh.get_transport.return_value = m_transport
     m_run = MagicMock()
     args = [
         'hostname',
         '--fqdn',
         ]
     stdout = StringIO('test_hostname')
     stdout.seek(0)
     proc = RemoteProcess(
         client=self.m_ssh,
         args=args,
         )
     proc.stdout = stdout
     proc._stdout_buf = Mock()
     proc._stdout_buf.channel.recv_exit_status.return_value = 0
     r = remote.Remote(name='xyzzy.example.com', ssh=self.m_ssh)
     m_run.return_value = proc
     r._runner = m_run
     assert r.hostname == 'test_hostname'
コード例 #17
0
 def test_os(self):
     rem = remote.Remote(HOST)
     assert rem.os.name
     assert rem.os.version