[PATCH] Check parent/container type for thin volumes and normal volumes.

David Lehman dlehman at redhat.com
Fri Jan 30 17:20:02 UTC 2015


---
 blivet/devices/lvm.py | 21 +++++++++++++--------
 1 file changed, 13 insertions(+), 8 deletions(-)

diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index d1817dd..1c72c86 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -440,6 +440,7 @@ class LVMLogicalVolumeDevice(DMDevice):
     _type = "lvmlv"
     _resizable = True
     _packages = ["lvm2"]
+    _containerClass = LVMVolumeGroupDevice
 
     def __init__(self, name, parents=None, size=None, uuid=None,
                  copies=1, logSize=None, segType=None,
@@ -480,14 +481,17 @@ class LVMLogicalVolumeDevice(DMDevice):
             :type percent: int
 
         """
-        if self.__class__.__name__ == "LVMLogicalVolumeDevice":
-            if isinstance(parents, list):
-                if len(parents) != 1:
-                    raise ValueError("constructor requires a single LVMVolumeGroupDevice instance")
-                elif not isinstance(parents[0], LVMVolumeGroupDevice):
-                    raise ValueError("constructor requires a LVMVolumeGroupDevice instance")
-            elif not isinstance(parents, LVMVolumeGroupDevice):
-                raise ValueError("constructor requires a LVMVolumeGroupDevice instance")
+        if isinstance(parents, list):
+            if len(parents) != 1:
+                raise ValueError("constructor requires a single %s instance" % self._containerClass.__name__)
+
+            container = parents[0]
+        else:
+            container = parents
+
+        if not isinstance(container, self._containerClass):
+            raise ValueError("constructor requires a %s instance" % self._containerClass.__name__)
+
         DMDevice.__init__(self, name, size=size, fmt=fmt,
                           sysfsPath=sysfsPath, parents=parents,
                           exists=exists)
@@ -1093,6 +1097,7 @@ class LVMThinPoolDevice(LVMLogicalVolumeDevice):
 class LVMThinLogicalVolumeDevice(LVMLogicalVolumeDevice):
     """ An LVM Thin Logical Volume """
     _type = "lvmthinlv"
+    _containerClass = LVMThinPoolDevice
 
     @property
     def pool(self):
-- 
1.9.3



More information about the anaconda-patches mailing list