[PATCH atomic-rhel-7.1] rescue: find root partition of ostree (atomic) installations (#1152041)

Vratislav Podzimek vpodzime at redhat.com
Mon Jan 19 14:52:39 UTC 2015


On Mon, 2015-01-19 at 14:19 +0100, Radek Vykydal wrote:
> This patch is targeted for RHEL Atomic Host 7.1 which is using 7.0 anaconda
> plus patches in atomic-rhel-7.1 dist-git branch. So the patch should go to
> rhel7-branch in 7.2 dev.
> 
> ---
>  pyanaconda/rescue.py | 37 +++++++++++++++++++++++++++++++++++++
>  1 file changed, 37 insertions(+)
> 
> diff --git a/pyanaconda/rescue.py b/pyanaconda/rescue.py
> index e0c4e13..fbf3f06 100644
> --- a/pyanaconda/rescue.py
> +++ b/pyanaconda/rescue.py
> @@ -264,6 +264,42 @@ def _unlock_devices(intf, storage):
>                          device.format.passphrase = None
>                          try_passphrase = None
>  
> +def findExistingOstreePartitions(devicetree):
> +    import blivet
> +    if not os.path.exists(blivet.getTargetPhysicalRoot()):
> +        util.makedirs(blivet.getTargetPhysicalRoot())
> +
> +    roots = []
> +    for device in devicetree.leaves:
> +        if not device.format.linuxNative or not device.format.mountable or \
> +           not device.controllable:
> +            continue
> +
> +        try:
> +            device.setup()
> +        except Exception: # pylint: disable=broad-except
> +            log.warning("setup of %s failed", [device.name])
> +            continue
> +
> +        options = device.format.options + ",ro"
> +        try:
> +            device.format.mount(options=options, mountpoint=iutil.getSysroot())
> +        except Exception: # pylint: disable=broad-except
> +            log.warning("mount of %s as %s failed", device.name, device.format.type)
> +            device.teardown()
> +            continue
> +
> +        if not os.access(iutil.getSysroot() + "/ostree", os.R_OK):
> +            device.teardown(recursive=True)
> +            continue
> +
> +        name = _("Ostree on %s") % device.name
> +        roots.append(blivet.Root(mounts=None, swaps=None, name=device.name))
> +
> +    return roots
> +
> +
> +
>  def doRescue(intf, rescue_mount, ksdata):
>      import blivet
>  
> @@ -323,6 +359,7 @@ def doRescue(intf, rescue_mount, ksdata):
>      blivet.storageInitialize(sto, ksdata, [])
>      _unlock_devices(intf, sto)
>      roots = blivet.findExistingInstallations(sto.devicetree)
> +    roots.extend(findExistingOstreePartitions(sto.devicetree))
>  
>      if not roots:
>          root = None
Looks good to me.

-- 
Vratislav Podzimek

Anaconda Rider | Red Hat, Inc. | Brno - Czech Republic



More information about the anaconda-patches mailing list