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

Re: [Libguestfs] [PATCH v5 1/3] v2v: bootloaders: search grub config for all distributions



On Thursday, 10 November 2016 14:59:59 CET Richard W.M. Jones wrote:
> From: Pavel Butsykin <pbutsykin virtuozzo com>
> 
> This patch improves the search of grub config on EFI partition. This
> means that the config will be found not only for rhel but also for
> many other distributions.  Tests were performed on the following
> distributions: centos, fedora, ubuntu, suse. In all cases, the config
> path was /boot/efi/EFI/*distname*/grub.cfg
> 
> The main purpose of the patch is to improve support for converting of
> vm with UEFI for most distributions. Unfortunately this patch does not
> solve the problem for all distributions, for example Debian does not
> store grub config on the EFI partition, therefore for such
> distributions another solution is necessary.
> 
> Signed-off-by: Pavel Butsykin <pbutsykin virtuozzo com>
> Signed-off-by: Richard W.M. Jones <rjones redhat com>
> ---

Mostly LGTM, just one thing it can be improved.

>  class bootloader_grub1 (g : G.guestfs) inspect grub_config =
> +  let () =
> +    if grub_config = "/boot/efi/EFI/redhat/grub.conf" then
> +      g#aug_transform "grub" "/boot/efi/EFI/redhat/grub.conf" in

Augeas < 1.7.0 does not like adding a transformation for a file with
the same lens it is handled already [1]. As workaround, we can first
try to list the configuration file: if there are no results, then the
transformation is applied. Something like:

  let () =
    (* Apply the "grub" lens if it is not handling the file
     * already -- Augeas < 1.7.0 will error out otherwise.
     *)
    if g#aug_ls grub_config = [||] then
      g#aug_transform "grub" grub_config in

This way it will:
- pick configuration files for any distro, not just redhat-based ones
  (fixing what Pavel reported)
- work fine (by doing nothing) with Augeas >= 1.7.0

[1] https://www.redhat.com/archives/augeas-devel/2016-November/thread.html

-- 
Pino Toscano

Attachment: signature.asc
Description: This is a digitally signed message part.


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