]> git.apps.os.sepia.ceph.com Git - teuthology.git/commitdiff
Show hostname instead of IP in errors
authorJohn Spray <john.spray@inktank.com>
Wed, 5 Feb 2014 15:40:33 +0000 (15:40 +0000)
committerJohn Spray <john.spray@inktank.com>
Wed, 12 Feb 2014 16:42:52 +0000 (16:42 +0000)
Signed-off-by: John Spray <john.spray@inktank.com>
teuthology/orchestra/remote.py
teuthology/orchestra/run.py
teuthology/orchestra/test/test_remote.py

index 512ee3d1f0ea0ae1fc109a68d930eefb0b541d37..f2fb1a429c85bf47f453fde6b09d532428079204 100644 (file)
@@ -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
 
index 7bc5047668851c2b4c8ecba1a834cfb29c27ac21..0364cf8bcdba0495f469190b65515cb17344eb01 100644 (file)
@@ -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:
index dbff6ffc42f9c62f98ae500510477c44f27b0fc6..13e3c31043907ca9179ac3a8282bac7c054011c3 100644 (file)
@@ -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