outline vnode when listing qemu boxes
authorthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Tue, 26 Jan 2010 06:06:10 +0000 (06:06 +0000)
committerthierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Tue, 26 Jan 2010 06:06:10 +0000 (06:06 +0000)
scripts/manage-infrastructure.py

index 8b41286..95a07e4 100755 (executable)
@@ -10,9 +10,7 @@ class BuildBoxes:
     # everything in the onelab.eu domain
     domain = 'onelab.eu'
     testmaster = 'testmaster'
-    build_boxes = \
-        [ "mirror" ] + \
-        [ "build%d"%i for i in range (1,4) ]
+    build_boxes = [ "mirror", "liquid", "reed", "velvet", ]
     plc_boxes = [ "testplc" ]
     qemu_boxes = \
         [ "testqemu%d"%i for i in range (1,4) ] + \
@@ -57,7 +55,9 @@ class BuildBoxes:
             self.run(command,"Cleaning up trackers on %s"%box)
 
     def handle_build_box (self,box):
-        if self.options.probe:
+        if not self.options.probe:
+            self.reboot(box)
+        else:
             command=['ssh',self.root(box),'pgrep','build']
             if self.options.dry_run:
                 self.run(command,None)
@@ -68,8 +68,6 @@ class BuildBoxes:
                 else:
                     command=['ssh',self.root(box),'ps'] + [ pid for pid in pids.split("\n") if pid]
                     self.run(command,"Active build processes on %s"%box)
-        else:
-            self.reboot(box)
 
     vplc_matcher = re.compile(".*(vplc[0-9]+$)")
     def vplcname (self, vservername):
@@ -78,7 +76,9 @@ class BuildBoxes:
         else: return ""
 
     def handle_plc_box (self,box):
-        if self.options.probe:
+        if not self.options.probe:
+            self.reboot(box)
+        else:
             command=['ssh',self.root(box),'vserver-stat']
             if self.options.dry_run:
                 self.run(command,"Active vservers on %s"%box)
@@ -112,11 +112,17 @@ class BuildBoxes:
                 except:
                     self.run(command,"Fine-grained method failed - fallback to plain vserver-stat")
 
-        else:
-            self.reboot(box)
+    vnode_matcher = re.compile(".*(vnode[0-9]+)")
+    def vnodename (self, ps_line):
+        match = self.vnode_matcher.match(ps_line)
+        if match: return match.groups(0)
+        else: return ""
+
 
     def handle_qemu_box (self,box):
-        if self.options.probe:
+        if not self.options.probe:
+            self.reboot(box)
+        else:
             command=['ssh',self.root(box),'pgrep','qemu']
             if self.options.dry_run:
                 self.run(command,None)
@@ -125,10 +131,14 @@ class BuildBoxes:
                 if not pids:
                     self.header ('No qemu process on %s'%box)
                 else:
+                    self.header ("Active qemu processes on %s"%box)
                     command=['ssh',self.root(box),'ps'] + [ pid for pid in pids.split("\n") if pid]
-                    self.run(command,"Active qemu processes on %s"%box)
-        else:
-            self.reboot(box)
+                    ps_lines = self.backquote (command).split("\n")
+                    for ps_line in ps_lines:
+                        if not ps_line or ps_line.find('PID') >=0 : continue
+                        node=self.vnodename(ps_line)
+                        if node: print "== %s =="%node
+                        print ps_line
 
     def handle_box(self,box):
         if box in self.qemu_boxes: