subprocess.call("umount %s"%(root_ssh),shell=True)
logger.log("_manage_ssh_dir: umounted %s"%(root_ssh))
except:
- logger.log_exc("_manage_ssh_dir with slice %s failed"%slicename)
+ logger.log_exc("_manage_ssh_dir failed",name=slicename)
class Worker:
logger.log("Initscript: %s: creating runlevel3 symlink %s"%(self.name,enable_link))
os.symlink(enable_target,enable_link)
except:
- logger.log_exc("Initscript: %s: failed to create runlevel3 symlink %s"%enable_link)
+ logger.log_exc("Initscript failed to create runlevel3 symlink %s"%enable_link,name=self.name)
# very similar but with systemd unit files - we target 'multi-user' in this context
def install_and_enable_vinit_for_systemd(self):
logger.log("Initscript: %s: creating enabling symlink %s"%(self.name,enable_link))
os.symlink(enable_target,enable_link)
except:
- logger.log_exc("Initscript: %s: failed to create enabling symlink %s"%enable_link)
+ logger.log_exc("Initscript failed to create enabling symlink %s"%enable_link,name=name)
#ln -s '/usr/lib/systemd/system/vinit.service' '/etc/systemd/system/multi-user.target.wants/vinit.service'
sys.stderr.write(msg)
sys.stderr.flush()
+date_width=24
def log_exc(msg="",name=None):
"""Log traceback resulting from an exception."""
printout=""
if name: printout += "%s: "%name
- printout += "EXCEPTION caught <%s> \n %s" %(msg, traceback.format_exc())
+ printout += "EXCEPTION caught <%s> \n" %msg
+ for frame in traceback.format_exc().split("\n"):
+ printout+=(date_width+2)*" "+"%s\n"%frame
log(printout)
def log_trace(msg="",name=None):
# when the underlying worker is not entirely initialized yet
pass
except:
- logger.log_exc("reservation.suspend_slice: Could not stop slice %s through its worker"%slicename)
+ logger.log_exc("reservation.suspend_slice: Could not stop slice through its worker",name=slicename)
# we hope the status line won't return anything
self.debug_box('after suspending',slicename)
logger.log("reservation: Located record at the db %r"%record)
worker.start(record)
except:
- logger.log_exc("reservation.restart_slice: Could not start slice %s through its worker"%slicename)
+ logger.log_exc("reservation.restart_slice: Could not start slice through its worker",name=slicename)
# we hope the status line won't return anything
self.debug_box('after restarting',slicename)
try:
self.dom.destroy()
except:
- logger.verbose('sliver_libvirt: Domain %s not running ' \
- 'UNEXPECTED: %s'%(self.name, sys.exc_info()[1]))
- print 'sliver_libvirt: Domain %s not running ' \
- 'UNEXPECTED: %s'%(self.name, sys.exc_info()[1])
+ logger.log_exc("in sliver_libvirt.stop",name=self.name)
- def is_running(self):
+ def is_running (self):
+ result=self._is_running()
+ logger.log("sliver_libvirt.is_running on %s returned %s"%(self.name,result))
+ return result
+
+ def _is_running(self):
''' Return True if the domain is running '''
- logger.verbose('sliver_libvirt: %s is_running'%self.name)
+ logger.verbose('sliver_libvirt: entering is_running on [%s:%s]'%(self.name,self.dom.ID()))
try:
- [state, _, _, _, _] = self.dom.info()
+ state, _, _, _, _ = self.dom.info()
if state == libvirt.VIR_DOMAIN_RUNNING:
logger.verbose('sliver_libvirt: %s is RUNNING'%self.name)
return True
'NOT RUNNING...\n%s'%(self.name, info))
return False
except:
- logger.verbose('sliver_libvirt: UNEXPECTED ERROR in ' \
- '%s: %s'%(self.name, sys.exc_info()[1]))
- print 'sliver_libvirt: UNEXPECTED ERROR in ' \
- '%s: %s'%(self.name, sys.exc_info()[1])
- return False
+ logger.log("Re-fetching dom from name=%s"%self.name)
+ try:
+ self.dom=self.conn.lookupByName(self.name)
+ state, _, _, _, _ = self.dom.info()
+ return state==libvirt.VIR_DOMAIN_RUNNING
+ except:
+ logger.log_exc("in sliver_libvirt.is_running",name=self.name)
+ return False
def configure(self, rec):