[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] pygrub: do not overload RuntimeError for "no menu.lst found"



From: pbonzini@xxxxxxxxxx

# HG changeset patch
# User Paolo Bonzini <pbonzini@xxxxxxxxxx>
# Date 1319096986 -7200
# Node ID bd1f7361d3d7f4c767af21317fb4ec7ea1372f42
# Parent  1b110e895e285f43f14532e14c77597e54a0bcd2
pygrub will still try the next partition if run_grub exits with a
"real" error, thus hiding the root cause from the trace.  Defining
a separate exception for "no bootloader config file found" avoids
this.

diff --git a/tools/pygrub/src/pygrub b/tools/pygrub/src/pygrub
--- a/tools/pygrub/src/pygrub
+++ b/tools/pygrub/src/pygrub
@@ -29,6 +29,9 @@ import grub.ExtLinuxConf
 
 PYGRUB_VER = 0.6
 
+class NotFoundError(RuntimeError):
+    pass
+
 def enable_cursor(ison):
     if ison:
         val = 2
@@ -412,7 +412,7 @@ class Grub:
                 self.cf.filename = f
                 break
         if self.__dict__.get('cf', None) is None:
-            raise RuntimeError, "couldn't find bootloader config file in the 
image provided."
+            raise NotFoundError, "couldn't find bootloader config file in the 
image provided."
         f = fs.open_file(self.cf.filename)
         buf = f.read()
         del f
@@ -763,9 +766,9 @@ if __name__ == "__main__":
                 break
             fs = None
 
-        except:
+        except (IOError, NotFoundError):
             # IOErrors raised by fsimage.open
-            # RuntimeErrors raised by run_grub if no menu.lst present
+            # NotFoundError raised by run_grub if no menu.lst present
             fs = None
             continue
 



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.