[blivet:master 14/16] Refine BTRFSVolumeDevice._removeParent() method.

Vratislav Podzimek vpodzime at redhat.com
Wed May 7 07:37:39 UTC 2014


On Tue, 2014-05-06 at 12:42 -0400, mulhern wrote:
> Now that LinearRAID("single") is a RAID level it is possible to eliminate
> special cases. Should be semantics preserving as LinearRAID.min_members is
> 0.
> 
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
>  blivet/devices.py | 26 ++++++++++----------------
>  1 file changed, 10 insertions(+), 16 deletions(-)
> 
> diff --git a/blivet/devices.py b/blivet/devices.py
> index 8a2d838..89548b2 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -4618,22 +4618,16 @@ class BTRFSVolumeDevice(BTRFSDevice, ContainerDevice):
>          return size
>  
>      def _removeParent(self, member):
> -        # btrfs won't let you degrade it
> -        limits = []
> -        levels = btrfs.RAID_levels
> -        if self.dataLevel and self.dataLevel != "single":
> -            limits.append(levels.raidLevel(self.dataLevel).min_members)
> -
> -        if self.metaDataLevel and self.metaDataLevel != "single":
> -            limits.append(levels.raidLevel(self.metaDataLevel).min_members)
> -
> -        if limits:
> -            min_members = min(limits)
> -
> -        if limits and len(self.parents) - 1 < min_members:
> -            raise errors.DeviceError("cannot remove member due to raid level "
> -                              "constraints")
> -
> +        """ Raises a DeviceError if the device has a raid level and the
> +            resulting number of parents would be fewer than the minimum
> +            number required by the raid level.
> +        """
> +        levels = [btrfs.RAID_levels.raidLevel(l) for l in [self.dataLevel, self.metaDataLevel] if l]
> +        if levels:
> +            min_level = min((l for l in levels), key=lambda l: l.min_members)
What is the point of this generator ^^^? Could it be 'min(levels, ...)'?

-- 
Vratislav Podzimek

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



More information about the anaconda-patches mailing list