def margin_outline (self, string): return self.margin(self.outline(string))
def handle_plc_box (self,box):
+# initial approach was to first scan vserver-stat, but it's not needed
+ if not self.options.probe:
+# # remove mark for all running servers to avoid resurrection
+# if vserver_names:
+# bash="; ".join( [ "rm -f /etc/vservers/%s/apps/init/mark"%vs for vs in vserver_names ] )
+# stop_command=['bash','-c',"'" + bash + "'"]
+# self.run_ssh(box,stop_command,"Removing mark on running vservers on %s"%box)
+ # just trash all marks
+ stop_command=['rm','-rf','/etc/vservers/*/apps/init/mark']
+ self.run_ssh(box,stop_command,"Removing all vserver marks on %s"%box)
+ if not self.options.soft:
+ self.reboot(box)
+ else:
+ self.run_ssh(box,['service','util-vserver','stop'],"Stopping all running vservers")
+ return
# even for rebooting we need to scan vserver-stat to stop the vservers properly
vserver_names=[]
command=['vserver-stat']
longname=ctx_dict[context]
vserver_names.append(longname)
print self.margin_outline(self.vplcname(longname)),"%(vserver_line)s [=%(longname)s]"%locals()
- if not self.options.probe:
-# # remove mark for all running servers to avoid resurrection
-# if vserver_names:
-# bash="; ".join( [ "rm -f /etc/vservers/%s/apps/init/mark"%vs for vs in vserver_names ] )
-# stop_command=['bash','-c',"'" + bash + "'"]
-# self.run_ssh(box,stop_command,"Removing mark on running vservers on %s"%box)
- # just trash all marks
- stop_command=['rm','-rf','/etc/vservers/*/apps/init/mark']
- self.run_ssh(box,stop_command,"Removing all vserver marks on %s"%box)
- self.reboot(box)
vnode_matcher = re.compile(".*(vnode[0-9]+)")
def vnodename (self, ps_line):
def handle_qemu_box (self,box):
if not self.options.probe:
- self.reboot(box)
+ if not self.options.soft:
+ self.reboot(box)
+ else:
+ self.run_ssh(box,['pkill','qemu'],"Killing qemu instances")
else:
command=['lsmod']
modules=self.backquote_ssh(box,command).split('\n')
- kqemu_msg='*NO kqemu MODULE LOADED*'
+ kqemu_msg='*NO kqemu/kmv_intel MODULE LOADED*'
for module in modules:
if module.find('kqemu')==0:
- kqemu_msg='kqemu OK'
+ kqemu_msg='kqemu module loaded'
+ # kvm might be loaded without vkm_intel (we dont have AMD)
+ elif module.find('kvm_intel')==0:
+ kqemu_msg='kvm_intel module loaded'
command=['pgrep','qemu']
if self.options.dry_run:
else:
pids=self.backquote_ssh(box,command)
if not pids:
- self.header ('No qemu process on %s'%box)
+ self.header ('No qemu process on %s (%s)'%(box,kqemu_msg))
else:
self.header ("Active qemu processes on %s (%s)"%(box,kqemu_msg))
command=['ps','-o','pid,command'] + [ pid for pid in pids.split("\n") if pid]
help="Dry run")
parser.add_option ("-r","--reboot", action="store_false",dest="probe",default=True,
help="Actually reset/reboot stuff instead of just probing it")
+ parser.add_option ("-s","--soft",action="store_true",dest="soft",default=False,
+ help="Soft reset instead of hard reboot of the boxes")
# no need for -p = probe, as this is the default
parser.add_option ("-p","--plc", action="store_true",dest="plc_only",default=False,
help="Acts on the plc box only")
+ parser.add_option ("-e","--deep",action="store_true", dest="deep", default=False,
+ help="on build boxes, shows vbuild processes in vservers as well; signif. slower")
+
parser.add_option ("-a","--all",action="store_true",dest="all_boxes",default=False,
help="Acts on build and test boxes")
parser.add_option ("-b","--build",action="store_true",dest="build_only",default=False,
help="Acts on build boxes only")
- parser.add_option ("-e","--deep",action="store_true", dest="deep", default=False,
- help="on build boxes, shows vbuild processes in vservers as well; signif. slower")
parser.add_option ("-q","--qemu",action="store_true",dest="qemu_only",default=False,
help="Only acts on the qemu boxes")
parser.add_option ("-t","--trackers",action="store_true",dest="trackers_only",default=False,