[ "qemu64-%d"%i for i in range (1,4) ] + \
[ "qemu32-%d"%i for i in range (1,6) ]
test_boxes = plc_boxes + qemu_boxes
+ testmaster_boxes = [ testmaster ]
def __init__ (self):
# dummy defaults
if match: return match.groups(0)
else: return ""
-
def handle_qemu_box (self,box):
if not self.options.probe:
self.reboot(box)
if not ps_line or ps_line.find('PID') >=0 : continue
print self.margin_outline(self.vnodename(ps_line)), ps_line
+ # the ouput of ps -o pid,command gives us <pid> bash <buildname>/run_log
+ def testmaster_buildname (self, ps_line):
+ chunks=ps_line.split()
+ path=chunks[2]
+ [buildname,command]=path.split('/')
+ return buildname
+
+ def handle_testmaster_box (self, box):
+ command=['pgrep','run_log']
+ if self.options.dry_run:
+ self.run_ssh(box,command,None)
+ else:
+ pids=self.backquote_ssh(box,command)
+ if not pids:
+ self.header ('No run_log process on %s'%box)
+ else:
+ self.header ("Active run_log processes on %s"%(box))
+ command=['ps','-o','pid,command'] + [ pid for pid in pids.split("\n") if pid]
+ ps_lines = self.backquote_ssh (box,command).split("\n")
+ for ps_line in ps_lines:
+ if not ps_line or ps_line.find('PID') >=0 : continue
+ print self.margin_outline(self.testmaster_buildname(ps_line)), ps_line
+
+
def handle_box(self,box,type):
if box in self.qemu_boxes:
if type=="qemu": self.handle_qemu_box(self.fqdn(box))
elif box in self.plc_boxes:
if type=="plc": self.handle_plc_box(self.fqdn(box))
+ elif box in self.testmaster_boxes:
+ if type=='testmaster': self.handle_testmaster_box(self.fqdn(box))
elif type=="build":
self.handle_build_box(self.fqdn(box))
def main (self):
usage="""%prog [options] [hostname..(s)]
-Default is to act on test boxes only (with trackers clean)"""
+Default is to act on test boxes only"""
parser = OptionParser (usage=usage)
parser.add_option ("-n","--dry-run",action="store_true",dest="dry_run",default=False,
help="Dry run")
help="Only acts on the qemu boxes")
parser.add_option ("-t","--trackers",action="store_true",dest="trackers_only",default=False,
help="Only wipes trackers")
+ parser.add_option ("-m","--master",action="store_true",dest="testmaster_only",default=False,
+ help="Display the testmaster status")
parser.add_option ("-d","--disk",action="store_true",dest="show_disk",default=False,
help="Only inspects disk status")
self.boxes=self.plc_boxes
self.do_tracker_plcs = True
self.do_tracker_qemus = False
+ elif self.options.testmaster_only:
+ self.boxes=self.testmaster_boxes
+ self.do_tracker_plcs = False
+ self.do_tracker_qemus = False
elif self.options.trackers_only:
self.boxes = []
self.do_tracker_plcs = True
# ALL OTHERS
for box in self.boxes: self.handle_box (box,"build")
+ # TESTMASTER
+ for box in self.boxes: self.handle_box (box,"testmaster")
# PLCS
if self.do_tracker_plcs:self.handle_tracker_plcs ()
for box in self.boxes: self.handle_box (box,"plc")