Ryan Barry has uploaded a new change for review.

Change subject: Bootloader: find grub configs on EFI
......................................................................

Bootloader: find grub configs on EFI

Mount the EFI filesystem if it's EFI so we can look there.

Recurse through the boot config directory and intelligently pick
the config depending on whether it's grub2 or not.

Change-Id: Id837e7932c1c36f08c1dd9a9c28309f435630545
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1046887
Signed-off-by: Ryan Barry <[email protected]>
---
M src/ovirt/node/utils/system.py
1 file changed, 22 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/01/53001/1

diff --git a/src/ovirt/node/utils/system.py b/src/ovirt/node/utils/system.py
index a064416..3a4e9eb 100755
--- a/src/ovirt/node/utils/system.py
+++ b/src/ovirt/node/utils/system.py
@@ -1105,26 +1105,31 @@
 
     @staticmethod
     def find_grub_cfg():
-        cfg_path = None
+        cfg = None
 
-        if os.path.ismount("/dev/.initramfs/live"):
-            if Bootloader.is_grub2():
-                cfg_path = "/dev/.initramfs/live/grub2/grub.cfg"
-            else:
-                cfg_path = "/dev/.initramfs/live/grub/grub.conf"
-        elif os.path.ismount("/run/initramfs/.live"):
-            cfg_path = "/liveos/grub/grub.conf"
-        elif Filesystem.by_label("Boot"):
-            cfg_path = "/boot/grub/grub.conf"
+        if Filesystem.by_label("Boot"):
+            cfg_path = "/boot/grub"
+        elif is_efi():
+            mount_efi(target="/liveos")
+            cfg_path = "/liveos/EFI"
+        elif os.path.ismount("/dev/.initramfs/live"):
+            cfg_path = "/dev/.initramfs/live"
+        elif os.path.ismount("/run/.initramfs/live"):
+            cfg_path = "/liveos"
 
-        else:
+        cfg_extension = ".cfg" if Bootloader.is_grub2() else ".conf"
+
+        for dirname, _, fileList in os.walk(cfg_path):
+            try:
+                candidate = [f for f in fileList if
+                             f.endswith(cfg_extension)].pop()
+                cfg = File("%s/%s" % (dirname, candidate))
+                LOGGER.debug("The path for grub is: %s" % cfg)
+            except IndexError:
+                LOGGER.debug("No grub config found in %s" % dirname)
+
+        if cfg is None:
             raise RuntimeError("Failed to find the path for grub.[cfg|conf]")
-
-        cfg = File(cfg_path)
-
-        if not cfg.exists():
-            raise RuntimeError("Grub config file does not exist: %s" %
-                               cfg.filename)
 
         return cfg
 


-- 
To view, visit https://gerrit.ovirt.org/53001
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Id837e7932c1c36f08c1dd9a9c28309f435630545
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Ryan Barry <[email protected]>
_______________________________________________
node-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/node-patches

Reply via email to