no functional change, just log_exc to show hopefully more edible output
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Tue, 11 Feb 2014 16:33:09 +0000 (17:33 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Tue, 11 Feb 2014 16:33:09 +0000 (17:33 +0100)
account.py
initscript.py
logger.py
plugins/reservation.py
sliver_libvirt.py

index a069f2c..6030ebe 100644 (file)
@@ -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:
 
index 52096eb..0876abb 100644 (file)
@@ -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'
index 07b74b6..b38c872 100644 (file)
--- 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):
index d873835..a81cd04 100644 (file)
@@ -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)
index 6ae8eeb..98525c0 100644 (file)
@@ -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):