X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=system%2FSubstrate.py;h=139790a88074b73e42084d91acf43d69d3f89d7f;hb=567d6e70500cf677acd5e0a5a4e2d5601d2f999e;hp=56acf7ee12d03a09f83966a754bb9fbcd174e35f;hpb=957bf73e13cfd2f74bcc8cda9ce832b7da06eacf;p=tests.git diff --git a/system/Substrate.py b/system/Substrate.py index 56acf7e..139790a 100644 --- a/system/Substrate.py +++ b/system/Substrate.py @@ -402,34 +402,47 @@ class BuildBox (Box): if not options.soft: Box.reboot(self,options) else: + self.soft_reboot (options) + +class BuildVsBox (BuildBox): + def soft_reboot (self, options): command=['pkill','vbuild'] self.run_ssh(command,"Terminating vbuild processes",dry_run=options.dry_run) # inspect box and find currently running builds matcher=re.compile("\s*(?P[0-9]+).*-[bo]\s+(?P[^\s]+)(\s|\Z)") - matcher_building_vm=re.compile("\s*(?P[0-9]+).*init-vserver.*\s+(?P[^\s]+)\s*\Z") + matcher_building_vm=re.compile("\s*(?P[0-9]+).*initvm.*\s+(?P[^\s]+)\s*\Z") def sense(self, options): - print 'bb', + print 'vb', pids=self.backquote_ssh(['pgrep','vbuild'],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=BuildBox.matcher.match(line) + m=BuildVsBox.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=BuildBox.matcher_building_vm.match(line) + m=BuildVsBox.matcher_building_vm.match(line) if m: # buildname is expansed here self.add_build (buildname,m.group('pid')) continue - header('BuildBox.sense: command %r returned line that failed to match'%command) + header('BuildVsBox.sense: command %r returned line that failed to match'%command) header(">>%s<<"%line) +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 (Substrate.BuildLxcBox.sense - NIY)', + ############################################################ class PlcInstance: def __init__ (self, plcbox): @@ -993,14 +1006,10 @@ class Substrate: self.options.reboot=False self.options.soft=False self.test_box = TestBox (self.test_box_spec()) - self.build_boxes = [ BuildBox(h) for h in self.build_boxes_spec() ] - # for compat with older LocalSubstrate - try: - self.plc_vs_boxes = [ PlcVsBox (h,m) for (h,m) in self.plc_vs_boxes_spec ()] - self.plc_lxc_boxes = [ PlcLxcBox (h,m) for (h,m) in self.plc_lxc_boxes_spec ()] - except: - self.plc_vs_boxes = [ PlcVsBox (h,m) for (h,m) in self.plc_boxes_spec ()] - self.plc_lxc_boxes = [ ] + self.build_vs_boxes = [ BuildVsBox(h) for h in self.build_vs_boxes_spec() ] + self.build_lxc_boxes = [ BuildLxcBox(h) for h in self.build_lxc_boxes_spec() ] + self.plc_vs_boxes = [ PlcVsBox (h,m) for (h,m) in self.plc_vs_boxes_spec ()] + self.plc_lxc_boxes = [ PlcLxcBox (h,m) for (h,m) in self.plc_lxc_boxes_spec ()] self.qemu_boxes = [ QemuBox (h,m) for (h,m) in self.qemu_boxes_spec ()] self._sensed=False @@ -1011,6 +1020,7 @@ class Substrate: # which plc boxes are we interested in ? def rescope (self, plcs_on_vs, plcs_on_lxc): + self.build_boxes = self.build_vs_boxes + self.build_lxc_boxes self.plc_boxes=[] if plcs_on_vs: self.plc_boxes += self.plc_vs_boxes if plcs_on_lxc: self.plc_boxes += self.plc_lxc_boxes