[blivet:master 07/25] Override resize() method in subclasses of StorageDevice

David dlehman at redhat.com
Mon Apr 21 14:37:16 UTC 2014


On 04/16/2014 04:54 PM, mulhern wrote:
> Now raises an exception other than NotImplementedError to keep pylint happy.
>
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
>   blivet/devices.py | 21 +++++++++++++++++++++
>   1 file changed, 21 insertions(+)
>
> diff --git a/blivet/devices.py b/blivet/devices.py
> index 09127e9..6a88c6d 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -1147,6 +1147,9 @@ class DiskDevice(StorageDevice):
>       def description(self):
>           return self.model
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
> +

I think it would make more sense to redefine StorageDevice.resize than 
to make classes that already inherit "resizable = False" define a resize 
method that is pure boilerplate.

>       @property
>       def size(self):
>           """ The disk's size """
> @@ -1989,6 +1992,8 @@ class DMDevice(StorageDevice):
>           """ This device's backing device. """
>           return self.parents[0]
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class DMLinearDevice(DMDevice):
>       _type = "dm-linear"
> @@ -2249,6 +2254,9 @@ class ContainerDevice(StorageDevice):
>           if member in self.parents:
>               self.parents.remove(member)
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
> +
>   class LVMVolumeGroupDevice(ContainerDevice):
>       """ An LVM Volume Group
>   
> @@ -3919,6 +3927,8 @@ class NoDevice(StorageDevice):
>           log_method_call(self, self.name, status=self.status)
>           self._preDestroy()
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class TmpFSDevice(NoDevice):
>       """ A nodev device for a tmpfs filesystem. """
> @@ -4038,6 +4048,8 @@ class FileDevice(StorageDevice):
>           log_method_call(self, self.name, status=self.status)
>           os.unlink(self.path)
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class SparseFileDevice(FileDevice):
>       """A sparse file on a filesystem.
> @@ -4151,6 +4163,8 @@ class LoopDevice(StorageDevice):
>       def slave(self):
>           return self.parents[0]
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class iScsiDiskDevice(DiskDevice, NetworkStorageDevice):
>       """ An iSCSI disk. """
> @@ -4338,6 +4352,8 @@ class OpticalDevice(StorageDevice):
>           except OSError as e:
>               log.warning("error ejecting cdrom %s: %s", self.name, e)
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class ZFCPDiskDevice(DiskDevice):
>       """ A mainframe ZFCP disk. """
> @@ -4503,6 +4519,8 @@ class NFSDevice(StorageDevice, NetworkStorageDevice):
>           """ Destroy the device. """
>           log_method_call(self, self.name, status=self.status)
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
>   
>   class BTRFSDevice(StorageDevice):
>       """ Base class for BTRFS volume and sub-volume devices. """
> @@ -4594,6 +4612,9 @@ class BTRFSDevice(StorageDevice):
>               spec = super(BTRFSDevice, self).fstabSpec
>           return spec
>   
> +    def resize(self):
> +        raise errors.DeviceError("Cannot resize disk %s, because it has type %s" % (self, self.type))
> +
>   class BTRFSVolumeDevice(BTRFSDevice, ContainerDevice):
>       _type = "btrfs volume"
>       vol_id = btrfs.MAIN_VOLUME_ID



More information about the anaconda-patches mailing list