From db1f4974bb5e2f250152890207c9164f8fa4a852 Mon Sep 17 00:00:00 2001 From: Thierry Parmentelat Date: Tue, 11 Feb 2014 17:33:09 +0100 Subject: [PATCH] no functional change, just log_exc to show hopefully more edible output --- account.py | 2 +- initscript.py | 4 ++-- logger.py | 5 ++++- plugins/reservation.py | 4 ++-- sliver_libvirt.py | 29 +++++++++++++++++------------ 5 files changed, 26 insertions(+), 18 deletions(-) diff --git a/account.py b/account.py index a069f2c..6030ebe 100644 --- a/account.py +++ b/account.py @@ -159,7 +159,7 @@ class Account: 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: diff --git a/initscript.py b/initscript.py index 52096eb..0876abb 100644 --- a/initscript.py +++ b/initscript.py @@ -48,7 +48,7 @@ class Initscript: 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): @@ -67,7 +67,7 @@ class Initscript: 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' diff --git a/logger.py b/logger.py index 07b74b6..b38c872 100644 --- a/logger.py +++ b/logger.py @@ -42,11 +42,14 @@ def log(msg,level=LOG_NODE): 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): diff --git a/plugins/reservation.py b/plugins/reservation.py index d873835..a81cd04 100644 --- a/plugins/reservation.py +++ b/plugins/reservation.py @@ -243,7 +243,7 @@ class reservation: # 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) @@ -276,6 +276,6 @@ class reservation: 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) diff --git a/sliver_libvirt.py b/sliver_libvirt.py index 6ae8eeb..98525c0 100644 --- a/sliver_libvirt.py +++ b/sliver_libvirt.py @@ -96,16 +96,18 @@ class Sliver_Libvirt(Account): 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 @@ -115,11 +117,14 @@ class Sliver_Libvirt(Account): '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): -- 2.43.0