from TestSsh import TestSsh
from TestMapper import TestMapper
+# too painful to propagate this cleanly
+verbose=None
+
def header (message,banner=True):
if not message: return
if banner: print "===============",
self.test_ssh().run("shutdown -r now",message="Rebooting %s"%self.hostname,
dry_run=options.dry_run)
- def hostname_fedora (self): return "%s [%s]"%(self.hostname,self.fedora())
+ def hostname_fedora (self,virt=None):
+ result = "%s {"%self.hostname
+ if virt: result += "%s-"%virt
+ result += "%s"%self.fedora()
+ # too painful to propagate this cleanly
+ global verbose
+ if verbose:
+ result += "-%s" % self.uname()
+ result += "}"
+ return result
separator = "===composite==="
else:
probe_argv=self.test_ssh().actual_argv(composite_command)
composite=self.backquote ( probe_argv, trash_err=True )
- if not composite: print "root@%s unreachable"%self.hostname
self._hostname = self._uptime = self._uname = self._fedora = "** Unknown **"
- try:
- pieces = composite.split(Box.separator)
- pieces = [ x.strip() for x in pieces ]
- [self._hostname, self._uptime, self._uname, self._fedora] = pieces
- # customize
- self._uptime = ', '.join([ x.strip() for x in self._uptime.split(',')[2:]])
- self._fedora = self._fedora.replace("Fedora release ","f").split(" ")[0]
- except:
- import traceback
- print 'BEG issue with pieces',pieces
- traceback.print_exc()
- print 'END issue with pieces',pieces
- self._probed=self._hostname
+ if not composite:
+ print "root@%s unreachable"%self.hostname
+ self._probed=''
+ else:
+ try:
+ pieces = composite.split(Box.separator)
+ pieces = [ x.strip() for x in pieces ]
+ [self._hostname, self._uptime, self._uname, self._fedora] = pieces
+ # customize
+ self._uptime = ', '.join([ x.strip() for x in self._uptime.split(',')[2:]])
+ self._fedora = self._fedora.replace("Fedora release ","f").split(" ")[0]
+ except:
+ import traceback
+ print 'BEG issue with pieces',pieces
+ traceback.print_exc()
+ print 'END issue with pieces',pieces
+ self._probed=self._hostname
return self._probed
# use argv=['bash','-c',"the command line"]
for p in self.plc_instances:
header (p.line(),banner=False)
-
+# we do not this at INRIA any more
class PlcVsBox (PlcBox):
def add_vserver (self,vservername,ctxid):
self.plc_instances.append(PlcVsInstance(self,vservername,ctxid))
def line(self):
- msg="%s [max=%d,free=%d, VS-based] (%s)"%(self.hostname_fedora(), self.max_plcs,self.free_slots(),self.uname())
+ msg="%s [max=%d,free=%d] (%s)"%(self.hostname_fedora(virt="vs"), self.max_plcs,self.free_slots(),self.uptime())
return msg
def plc_instance_by_vservername (self, vservername):
# a line describing the box
def line(self):
- return "%s [max=%d,free=%d, LXC-based] (%s)"%(self.hostname_fedora(), self.max_plcs,self.free_slots(),
- self.uname())
+ return "%s [max=%d,free=%d] (%s)"%(self.hostname_fedora(virt="lxc"),
+ self.max_plcs,self.free_slots(),
+ self.uptime(),
+ )
def plc_instance_by_lxcname (self, lxcname):
for p in self.plc_instances:
# sense is expected to fill self.plc_instances with PlcLxcInstance's
# to describe the currently running VM's
- # as well as to call self.get_uname() once
def sense (self, options):
print "xp",
command="rsync lxc-driver.sh %s:/root"%self.hostname
pid=lxc_line.split(";")[1]
timestamp=lxc_line.split(";")[2]
self.add_lxc(lxcname,pid)
- timestamp=int(timestamp)
+ try: timestamp=int(timestamp)
+ except: timestamp=0
p=self.plc_instance_by_lxcname(lxcname)
if not p:
print 'WARNING zombie plc',self.hostname,lxcname
def line (self):
return "%s [max=%d,free=%d] (%s) %s"%(
- self.hostname_fedora(), self.max_qemus,self.free_slots(),
+ self.hostname_fedora(virt="qemu"), self.max_qemus,self.free_slots(),
self.uptime(),self.driver())
def list(self, verbose=False):
if self.options.qemus: boxes += self.qemu_boxes
if self.options.all: boxes += self.all_boxes
+ global verbose
+ verbose=self.options.verbose
# default scope is -b -p -q -t
if not boxes:
boxes = self.build_boxes + self.plc_boxes + self.qemu_boxes + [self.test_box]