[PATCH] Handle hd iso leavings by dracut (#876897)

Vratislav Podzimek vpodzime at redhat.com
Fri Nov 16 13:43:11 UTC 2012


On Thu, 2012-11-15 at 22:32 -0800, Jesse Keating wrote:
> Re-arranges a bit of code and handles dracut mounted hd isos.
See comments below. Apart from them this looks good to me.

> ---
>  pyanaconda/packaging/yumpayload.py | 35 ++++++++++++++++++++++++++---------
>  1 file changed, 26 insertions(+), 9 deletions(-)
> 
> diff --git a/pyanaconda/packaging/yumpayload.py b/pyanaconda/packaging/yumpayload.py
> index b52fb67..1a8b91c 100644
> --- a/pyanaconda/packaging/yumpayload.py
> +++ b/pyanaconda/packaging/yumpayload.py
> @@ -498,7 +498,14 @@ reposdir=%s
>      @property
>      def ISOImage(self):
>          if self.data.method.method == "harddrive":
> -            return get_mount_device(INSTALL_TREE)[len(ISO_DIR)+1:]
> +            # This could either be mounted to INSTALL_TREE or on
> +            # DRACUT_REPODIR if dracut did the mount.
> +            dev = get_mount_device(INSTALL_TREE)
> +            if dev:
> +                return dev[len(ISO_DIR)+1:]
> +            dev = get_mount_device(DRACUT_REPODIR)
> +            if dev:
> +                return dev[len(DRACUT_ISODIR)+1:]
What if both fail? Is it okay to return None from this method?

>  
>      def _setUpMedia(self, device):
>          method = self.data.method
> @@ -560,6 +567,9 @@ reposdir=%s
>          method = self.data.method
>          sslverify = True
>          url = None
> +        # See if we already have stuff mounted due to dracut
> +        isodev = get_mount_device(DRACUT_ISODIR)
> +        device = get_mount_device(DRACUT_REPODIR)
>  
>          if method.method == "harddrive":
>              if method.biospart:
> @@ -567,15 +577,22 @@ reposdir=%s
>                  devspec = method.biospart
>              else:
>                  devspec = method.partition
> -
> -            device = storage.devicetree.resolveDevice(devspec)
> -            self._setUpMedia(device)
> -            self.install_device = device
> -            url = "file://" + INSTALL_TREE
> +                needmount = True
> +                # See if we used this method for stage2, thus dracut left it
> +                if isodev and method.partition and method.partition in isodev:
> +                    # See if the iso is mounted
> +                    if DRACUT_ISODIR in device:
You could squash these two ifs to the one.

> +                        # Everything shoud be setup
				      "should be setup"

> +                        url = "file://" + DRACUT_REPODIR
> +                        needmount = False
> +                        # We don't setup an install_device here
> +                        # because we can't tear it down
> +            isodevice = storage.devicetree.resolveDevice(devspec)
> +            if needmount:
> +                self._setUpMedia(isodevice)
> +                url = "file://" + INSTALL_TREE
> +                self.install_device = isodevice
>          elif method.method == "nfs":
> -            # See if we already have stuff mounted due to dracut
> -            isodev = get_mount_device(DRACUT_ISODIR)
> -            device = get_mount_device(DRACUT_REPODIR)
>              # See if dracut dealt with nfsiso
>              if isodev:
>                  options, host, path = iutil.parseNfsUrl('nfs:%s' % isodev)

-- 
Vratislav Podzimek

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



More information about the anaconda-patches mailing list