improve handling of unreachable boxes
[tests.git] / system / Substrate.py
index 9656251..773e750 100644 (file)
@@ -286,21 +286,24 @@ class Box:
         else:
             probe_argv=self.test_ssh().actual_argv(composite_command)
         composite=self.backquote ( probe_argv, trash_err=True )
-        if not composite: print "root@%s unreachable"%self.hostname
         self._hostname = self._uptime = self._uname = self._fedora = "** Unknown **"
-        try:
-            pieces = composite.split(Box.separator)
-            pieces = [ x.strip() for x in pieces ]
-            [self._hostname, self._uptime, self._uname, self._fedora] = pieces
-            # customize
-            self._uptime = ', '.join([ x.strip() for x in self._uptime.split(',')[2:]])
-            self._fedora = self._fedora.replace("Fedora release ","f").split(" ")[0]
-        except:
-            import traceback
-            print 'BEG issue with pieces',pieces
-            traceback.print_exc()
-            print 'END issue with pieces',pieces
-        self._probed=self._hostname
+        if not composite: 
+            print "root@%s unreachable"%self.hostname
+            self._probed=''
+        else:
+            try:
+                pieces = composite.split(Box.separator)
+                pieces = [ x.strip() for x in pieces ]
+                [self._hostname, self._uptime, self._uname, self._fedora] = pieces
+                # customize
+                self._uptime = ', '.join([ x.strip() for x in self._uptime.split(',')[2:]])
+                self._fedora = self._fedora.replace("Fedora release ","f").split(" ")[0]
+            except:
+                import traceback
+                print 'BEG issue with pieces',pieces
+                traceback.print_exc()
+                print 'END issue with pieces',pieces
+            self._probed=self._hostname
         return self._probed
 
     # use argv=['bash','-c',"the command line"]
@@ -696,14 +699,15 @@ class QemuBox (Box):
         self.qemu_instances.append(dummy)
 
     def line (self):
-        msg="%s [max=%d,free=%d] (%s)"%(self.hostname_fedora(), self.max_qemus,self.free_slots(),self.driver())
-        return msg
+        return "%s [max=%d,free=%d] (%s) %s"%(
+            self.hostname_fedora(), self.max_qemus,self.free_slots(),
+            self.uptime(),self.driver())
 
     def list(self, verbose=False):
         if not self.qemu_instances: 
             header ('No qemu on %s'%(self.line()))
         else:
-            header ("Active qemus on %s"%(self.line()))
+            header ("Qemus on %s"%(self.line()))
             self.qemu_instances.sort(timestamp_sort)
             for q in self.qemu_instances: 
                 header (q.line(),banner=False)