From f7d64d75f1dda54ee6b71c3d781f61bdc50651b9 Mon Sep 17 00:00:00 2001 From: thierry Date: Fri, 5 Feb 2010 09:14:37 +0000 Subject: [PATCH] can more visually check tracker consistency --- scripts/manage-infrastructure.py | 61 ++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 19 deletions(-) diff --git a/scripts/manage-infrastructure.py b/scripts/manage-infrastructure.py index 4445c40..d859270 100755 --- a/scripts/manage-infrastructure.py +++ b/scripts/manage-infrastructure.py @@ -55,22 +55,45 @@ class BuildBoxes: command=['ssh',self.root(box),'shutdown','-r','now'] self.run (command,"Rebooting %s"%box) - def handle_tracker_file (self,filename): + def handle_tracker_plcs (self): box = self.fqdn (self.testmaster) - if self.options.probe: - command=['ssh',self.root(box),"head","-v","--lines=100",filename] - self.run(command,"++++++++++ Inspecting %s on %s"%(filename,box)) - else: + filename="tracker-plcs" + if not self.options.probe: command=['ssh',self.root(box),"rm","-rf",filename] self.run(command,"Cleaning up %s on %s"%(filename,box)) + else: + self.header ("++++++++++ Inspecting %s on %s"%(filename,box)) + read_command = ['ssh',self.root(box),"cat",filename] + trackers=self.backquote(read_command) + for tracker in trackers.split('\n'): + if not tracker: continue + try: + tracker=tracker.strip() + [hostname,buildname]=tracker.split('@') + [left,plcname]=buildname.rsplit('-',1) + print self.margin_outline(plcname),tracker + except: + print self.margin(""),tracker - def handle_tracker_plcs (self): - self.handle_tracker_file("tracker-plcs") def handle_tracker_qemus (self): - self.handle_tracker_file("tracker-qemus") - def handle_trackers (self): - self.handle_tracker_plcs() - self.handle_tracker_qemus() + box = self.fqdn (self.testmaster) + filename="tracker-qemus" + if not self.options.probe: + command=['ssh',self.root(box),"rm","-rf",filename] + self.run(command,"Cleaning up %s on %s"%(filename,box)) + else: + self.header ("++++++++++ Inspecting %s on %s"%(filename,box)) + read_command = ['ssh',self.root(box),"cat",filename] + trackers=self.backquote(read_command) + for tracker in trackers.split('\n'): + if not tracker: continue + try: + tracker=tracker.strip() + [hostname,buildname,nodename]=tracker.split('@') + nodename=nodename.split('.')[0] + print self.margin_outline(nodename),tracker + except: + print self.margin(""),tracker def handle_build_box (self,box): if not self.options.probe: @@ -96,6 +119,11 @@ class BuildBoxes: if match: return match.groups(0) else: return "" + margin_format="%-14s" + def margin(self,string): return self.margin_format%string + def outline (self, string): return '== %s =='%string + def margin_outline (self, string): return self.margin(self.outline(string)) + def handle_plc_box (self,box): if not self.options.probe: self.reboot(box) @@ -120,17 +148,14 @@ class BuildBoxes: # at this point ctx_id maps context id to vservername vserver_stat = self.backquote (command) - format="%-14s" for vserver_line in vserver_stat.split("\n"): if not vserver_line: continue context=vserver_line.split()[0] if context=="CTX": - print format%"",vserver_line + print self.margin(""),vserver_line continue longname=ctx_dict[context] - plcname=self.vplcname(longname) - header="== %s =="%plcname - print format%header,"%(vserver_line)s [=%(longname)s]"%locals() + print self.margin_outline(self.vplcname(longname)),"%(vserver_line)s [=%(longname)s]"%locals() except: self.run(command,"Fine-grained method failed - fallback to plain vserver-stat") @@ -153,14 +178,12 @@ class BuildBoxes: if not pids: self.header ('No qemu process on %s'%box) else: - format="%-14s" self.header ("Active qemu processes on %s"%box) command=['ssh',self.root(box),'ps','-o','pid,command'] + [ pid for pid in pids.split("\n") if pid] ps_lines = self.backquote (command).split("\n") for ps_line in ps_lines: if not ps_line or ps_line.find('PID') >=0 : continue - header=self.vnodename(ps_line) - print format%header, ps_line + print self.margin_outline(self.vnodename(ps_line)), ps_line def handle_box(self,box,type): if box in self.qemu_boxes: -- 2.47.0