From: John Spray Date: Wed, 5 Feb 2014 15:40:33 +0000 (+0000) Subject: Show hostname instead of IP in errors X-Git-Tag: 1.1.0~1671^2~6 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=eafeece243607eef8209eaa8c08eecc7d1098eb1;p=teuthology.git Show hostname instead of IP in errors Signed-off-by: John Spray --- diff --git a/teuthology/orchestra/remote.py b/teuthology/orchestra/remote.py index 512ee3d1f0..f2fb1a429c 100644 --- a/teuthology/orchestra/remote.py +++ b/teuthology/orchestra/remote.py @@ -44,7 +44,7 @@ class Remote(object): TODO refactor to move run.run here? """ - r = self._runner(client=self.ssh, **kwargs) + r = self._runner(client=self.ssh, name=self.name, **kwargs) r.remote = self return r diff --git a/teuthology/orchestra/run.py b/teuthology/orchestra/run.py index 7bc5047668..0364cf8bcd 100644 --- a/teuthology/orchestra/run.py +++ b/teuthology/orchestra/run.py @@ -189,12 +189,14 @@ class KludgeFile(object): self._wrapped.close() self._wrapped.channel.shutdown_write() + def run( client, args, stdin=None, stdout=None, stderr=None, logger=None, check_status=True, wait=True, + name=None ): """ Run a command remotely. @@ -208,6 +210,7 @@ def run( :param logger: If logging, write stdout/stderr to "out" and "err" children of this logger. Defaults to logger named after this module. :param check_status: Whether to raise CalledProcessError on non-zero exit status, and . Defaults to True. All signals and connection loss are made to look like SIGHUP. :param wait: Whether to wait for process to exit. If False, returned ``r.exitstatus`` s a `gevent.event.AsyncResult`, and the actual status is available via ``.get()``. + :param name: Human readable name (probably hostname) of the destination host """ r = execute(client, args) @@ -222,12 +225,16 @@ def run( if logger is None: logger = log - (host,port) = client.get_transport().getpeername() + (host, port) = client.get_transport().getpeername() + + if name is None: + name = host + g_err = None if stderr is not PIPE: if stderr is None: stderr = logger.getChild('err') - g_err = gevent.spawn(copy_file_to, r.stderr, stderr, host) + g_err = gevent.spawn(copy_file_to, r.stderr, stderr, name) r.stderr = stderr else: assert not wait, "Using PIPE for stderr without wait=False would deadlock." @@ -236,7 +243,7 @@ def run( if stdout is not PIPE: if stdout is None: stdout = logger.getChild('out') - g_out = gevent.spawn(copy_file_to, r.stdout, stdout, host) + g_out = gevent.spawn(copy_file_to, r.stdout, stdout, name) r.stdout = stdout else: assert not wait, "Using PIPE for stdout without wait=False would deadlock." @@ -263,8 +270,7 @@ def run( # signal; sadly SSH does not tell us which signal raise CommandCrashedError(command=r.command) if status != 0: - (host,port) = client.get_transport().getpeername() - raise CommandFailedError(command=r.command, exitstatus=status, node=host) + raise CommandFailedError(command=r.command, exitstatus=status, node=name) return status if wait: diff --git a/teuthology/orchestra/test/test_remote.py b/teuthology/orchestra/test/test_remote.py index dbff6ffc42..13e3c31043 100644 --- a/teuthology/orchestra/test/test_remote.py +++ b/teuthology/orchestra/test/test_remote.py @@ -45,6 +45,7 @@ class TestRemote(object): client=fudge.inspector.arg.passes_test(lambda v: v is ssh), args=fudge.inspector.arg.passes_test(lambda v: v is args), foo=fudge.inspector.arg.passes_test(lambda v: v is foo), + name='jdoe@xyzzy.example.com' ).returns(ret) r = remote.Remote(name='jdoe@xyzzy.example.com', ssh=ssh) # monkey patch ook ook