[blivet:master] Make a StorageDevice.raw_device property and use it where appropriate
Vratislav Podzimek
vpodzime at redhat.com
Wed Jun 4 09:52:42 UTC 2014
On Fri, 2014-05-30 at 14:48 -0400, mulhern wrote:
> Only allow a "NoneType has no attribute <x>" exception where it would
> be allowed by the code that it replaces anyway. Otherwise, check for
> existance of device before accessing its raw_device property.
>
> Signed-off-by: mulhern <amulhern at redhat.com>
> ---
> blivet/devicefactory.py | 16 +++-------------
> blivet/devices.py | 9 +++++++++
> tests/devices_test.py | 1 +
> 3 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/blivet/devicefactory.py b/blivet/devicefactory.py
> index 055fdc2..a5717c1 100644
> --- a/blivet/devicefactory.py
> +++ b/blivet/devicefactory.py
> @@ -79,10 +79,7 @@ def get_device_type(device):
> "btrfs volume": DEVICE_TYPE_BTRFS,
> "mdarray": DEVICE_TYPE_MD}
>
> - use_dev = device
> - if isinstance(device, LUKSDevice):
> - use_dev = device.slave
> -
> + use_dev = device.raw_device
> if use_dev.isDisk:
> device_type = DEVICE_TYPE_DISK
> else:
> @@ -536,14 +533,7 @@ class DeviceFactory(object):
> @property
> def raw_device(self):
> """ If self.device is encrypted, this is its backing device. """
> - use_dev = None
> - if self.device:
> - if isinstance(self.device, LUKSDevice):
> - use_dev = self.device.slave
> - else:
> - use_dev = self.device
> -
> - return use_dev
> + return self.device.raw_device if self.device else None
>
> @property
> def devices(self):
> @@ -858,7 +848,7 @@ class PartitionFactory(DeviceFactory):
>
> def _set_device_size(self):
> """ Set the size of a defined factory device. """
> - if self.device and self.size != self.raw_device.size:
> + if self.raw_device and self.size != self.raw_device.size:
> log.info("adjusting device size from %s to %s",
> self.raw_device.size, self.size)
>
> diff --git a/blivet/devices.py b/blivet/devices.py
> index 80282c7..d324ce1 100644
> --- a/blivet/devices.py
> +++ b/blivet/devices.py
> @@ -672,6 +672,11 @@ class StorageDevice(Device):
>
> return self._partedDevice
>
> + @property
> + def raw_device(self):
> + """ The device itself, or when encrypted, the backing device. """
> + return self
> +
> def _setName(self, value):
> """Set the device's name.
>
> @@ -2173,6 +2178,10 @@ class LUKSDevice(DMCryptDevice):
> uuid=None, exists=exists)
>
> @property
> + def raw_device(self):
> + return self.slave
> +
> + @property
> def size(self):
> if not self.exists or not self.partedDevice:
> size = self.slave.size - crypto.LUKS_METADATA_SIZE
> diff --git a/tests/devices_test.py b/tests/devices_test.py
> index 3f8c4fc..3dc5fd1 100644
> --- a/tests/devices_test.py
> +++ b/tests/devices_test.py
> @@ -82,6 +82,7 @@ class MDRaidArrayDeviceTestCase(DeviceStateTestCase):
> self.assertIsInstance(x, ParentList, m),
> "path" : lambda x, m: self.assertRegexpMatches(x, "^/dev", m),
> "partitionable" : self.assertFalse,
> + "raw_device" : self.assertIsNotNone,
> "resizable" : self.assertFalse,
> "size" : lambda x, m: self.assertEqual(x, Size(0), m),
> "spares" : lambda x, m: self.assertEqual(x, 0, m),
Looks good to me.
--
Vratislav Podzimek
Anaconda Rider | RHCE | Red Hat, Inc. | Brno - Czech Republic
More information about the anaconda-patches
mailing list