File virtinst-pvgrub2-bootloader.patch of Package virt-manager

Index: virt-manager-1.0.1/virtinst/guest.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/guest.py
+++ virt-manager-1.0.1/virtinst/guest.py
@@ -351,8 +351,18 @@ class Guest(XMLBuilder):
         if (not install and
             self.os.is_xenpv() and
             not self.os.kernel):
-            self.bootloader = "/usr/bin/pygrub"
-            self.os.clear()
+            os_ver = self._get_os_variant()
+            if os_ver == "sles12" or os_ver == "sled12":
+                self.installer._install_kernel = "/usr/lib/grub2/x86_64-xen/grub.xen"
+                self.installer._install_initrd = None
+                self.installer.extraargs = None
+                # alter_bootconfig won't update the osxml unless it thinks
+                # we are in an install phase. Add force_update param to call
+                self.installer.alter_bootconfig(self, True, self.os, True)
+                logging.info("Using grub.xen to boot guest")
+            else:
+                self.bootloader = "/usr/bin/pygrub"
+                self.os.clear()
 
         return self.get_xml_config()
 
Index: virt-manager-1.0.1/virtinst/installer.py
===================================================================
--- virt-manager-1.0.1.orig/virtinst/installer.py
+++ virt-manager-1.0.1/virtinst/installer.py
@@ -111,7 +111,7 @@ class Installer(object):
         dev.validate()
         return dev
 
-    def alter_bootconfig(self, guest, isinstall, bootconfig):
+    def alter_bootconfig(self, guest, isinstall, bootconfig, force_update=False):
         """
         Generate the portion of the guest xml that determines boot devices
         and parameters. (typically the <os></os> block)
@@ -122,7 +122,7 @@ class Installer(object):
                           'post-install' phase.
         @type isinstall: C{bool}
         """
-        if isinstall and not self.has_install_phase():
+        if isinstall and not force_update and not self.has_install_phase():
             return
 
         bootorder = self._build_boot_order(isinstall, guest)
openSUSE Build Service is sponsored by