+class BuildLxcBox (BuildBox):
+ def soft_reboot (self, options):
+ command=['pkill','lbuild']
+ self.run_ssh(command,"Terminating vbuild processes",dry_run=options.dry_run)
+
+ # inspect box and find currently running builds
+ def sense(self, options):
+ print 'xb',
+ pids=self.backquote_ssh(['pgrep','lbuild'],trash_err=True)
+ if not pids: return
+ command=['ps','-o','pid,command'] + [ pid for pid in pids.split("\n") if pid]
+ ps_lines=self.backquote_ssh (command).split('\n')
+ for line in ps_lines:
+ if not line.strip() or line.find('PID')>=0: continue
+ m=build_matcher.match(line)
+ if m:
+ date=time.strftime('%Y-%m-%d',time.localtime(time.time()))
+ buildname=m.group('buildname').replace('@DATE@',date)
+ self.add_build (buildname,m.group('pid'))
+ continue
+ m=build_matcher_initvm.match(line)
+ if m:
+ # buildname is expansed here
+ self.add_build (buildname,m.group('pid'))
+ continue
+ header('BuildLxcBox.sense: command %r returned line that failed to match'%command)
+ header(">>%s<<"%line)
+