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

Re: [Xen-devel] [PATCH] pyGrub: Use proper bootloader class when entering command manually

On Tue, 2010-05-25 at 16:13 +0100, Michal Novotny wrote:
> Ok, I found that the infrastructure of ExtLinuxImage and LiloImage is 
> different so I rewrote it a little (but according to the code the old 
> behaviour should be preserved) and also fixed the isconfig bug (since no 
> img.initrd is accessible that time).
> So please ignore the previous version of my patch and use this one.

Perhaps instead of these two hunks:

--- a/tools/pygrub/src/pygrub   Tue May 25 11:28:58 2010 +0100
+++ b/tools/pygrub/src/pygrub   Tue May 25 17:10:32 2010 +0200
@@ -356,7 +356,7 @@ class Grub:
                 # if we got boot, then we want to boot the entered image 
-                img = grub.GrubConf.GrubImage(lines)
+                img = self.imgcl("entered", lines)
                 self.selected_image = len(self.cf.images) - 1
                 self.isdone = True

                 self.cf = parser()
                 self.cf.filename = f
+                # Get the bootloader image file constructor to imgcl
+                if type(self.cf) == grub.LiloConf.LiloConfigFile:
+                    self.imgcl = grub.LiloConf.LiloImage
+                elif type(self.cf) == grub.GrubConf.Grub2ConfigFile:
+                    self.imgcl = grub.GrubConf.Grub2Image
+                elif type(self.cf) ==
+                    self.imgcl = grub.ExtLinuxConf.ExtLinuxImage
+                else:
+                    self.imgcl = grub.GrubConf.GrubImage
         if self.__dict__.get('cf', None) is None:
             raise RuntimeError, "couldn't find bootloader config file
in the image provided."

We could add a method to each of the self.cf classes which returns a new
image from the title+lines given. Then the first hunk becomes something

-                img = grub.GrubConf.GrubImage(lines)
+                img = self.cf.new_image("entered", lines)

and the second bit goes away. This would be nice since it avoids
hardcoding another list of bootloaders.


Xen-devel mailing list



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