[blivet:master 6/8] Remove preferLeaves parameter from getDeviceByPath()

David Lehman dlehman at redhat.com
Thu Jun 19 17:13:38 UTC 2014


On 06/18/2014 02:05 PM, mulhern wrote:
> The only use of this parameter was removed in anaconda commit
> 8eb4f8f82ace112e7f216b6e70633a3549949187 (Wed Aug 8 09:58:51 2012).
> It was added in anaconda commit 718622ed2b54979b09712c10bc94fd86f6ea81e8
> (Mon Nov 21 09:50:25 2011 -0600).
>
> This is a semantic change, the new version returns the first match it finds,
> whereas the old version prefers a non-leaf match by default.
>
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
>   blivet/devicetree.py | 30 +++++-------------------------
>   1 file changed, 5 insertions(+), 25 deletions(-)
>
> diff --git a/blivet/devicetree.py b/blivet/devicetree.py
> index ab6e4e5..5749ad9 100644
> --- a/blivet/devicetree.py
> +++ b/blivet/devicetree.py
> @@ -2327,42 +2327,22 @@ class DeviceTree(object):
>           log_method_return(self, result)
>           return result
>
> -    def getDeviceByPath(self, path, preferLeaves=True, incomplete=False, hidden=False):
> +    def getDeviceByPath(self, path, incomplete=False, hidden=False):
>           """ Return a device with a matching path.
>
>               :param str path: the path to match
> -            :param bool preferLeaves: prefer leaf devices to internal ones
>               :param bool incomplete: include incomplete devices in search
>               :param bool hidden: include hidden devices in search
>               :returns: the first matching device found
>               :rtype: :class:`~.devices.Device`
>           """
> -        log_method_call(self, path=path, preferLeaves=preferLeaves, incomplete=incomplete, hidden=hidden)
> +        log_method_call(self, path=path, incomplete=incomplete, hidden=hidden)
>           result = None
>           if path:
>               devices = self._filterDevices(incomplete=incomplete, hidden=hidden)
> -            matching_devices = (d for d in devices if d.path == path or \
> -               ((d.type == "lvmlv" or d.type == "lvmvg") and d.path == path.replace("--","-")))
> -
> -            leaf_device = None
> -            non_leaf_device = None
> -
> -            for device in matching_devices:
> -                if leaf_device is not None and non_leaf_device is not None:
> -                    break
> -                if device.isleaf:
> -                    if preferLeaves:
> -                        return device
> -                    leaf_device = leaf_device or device
> -                else:
> -                    if not preferLeaves:
> -                        return device
> -                    non_leaf_device = non_leaf_device or device
> -
> -            # This point is reached if preferLeaves is True and there are no
> -            # leaf devices or if preferLeaves is False and there are no non-leaf
> -            # devices. Therefore at most one of the two variables is not None.
> -            result = leaf_device or non_leaf_device
> +            result = next((d for d in devices if d.path == path or \
> +               ((d.type == "lvmlv" or d.type == "lvmvg") and d.path == path.replace("--","-"))),
> +               None)
>
>           log_method_return(self, result)
>           return result
>

As long as you're not sorting the device list this should preserve the 
default behavior since devices must be added leaves-last and therefore 
the devices list is also leaves-last.

David


More information about the anaconda-patches mailing list