[blivet:rhel7/master 1/2] Handle size related attributes of LUKSDevice in blivet (#1076055)

mulhern amulhern at redhat.com
Tue Sep 16 17:26:04 UTC 2014


Try to handle size related activities by overrriding methods in
blivet.devices.LUKSDevice. All these methods handle size related quantities
in terms of the slave device in what is intended to be a consistant manner.

Signed-off-by: mulhern <amulhern at redhat.com>
---
 blivet/devices.py | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/blivet/devices.py b/blivet/devices.py
index 7e4279c..6fe2afd 100644
--- a/blivet/devices.py
+++ b/blivet/devices.py
@@ -2269,6 +2269,28 @@ class LUKSDevice(DMCryptDevice):
         return self.slave
 
     @property
+    def resizable(self):
+        # Can resize a LUKS device if the slave is resizable and the LUKS
+        # device itself does not yet exist.
+        return self.slave.resizable and not self.exists
+
+    @property
+    def maxSize(self):
+        max_size = self.slave.maxSize
+        if not max_size:
+            return max_size
+
+        max_size = max_size - crypto.LUKS_METADATA_SIZE
+        if max_size < 0:
+            return 0
+
+        return max_size
+
+    @property
+    def minSize(self):
+        return self.slave.minSize + crypto.LUKS_METADATA_SIZE
+
+    @property
     def size(self):
         if not self.exists or not self.partedDevice:
             size = self.slave.size - crypto.LUKS_METADATA_SIZE
@@ -2276,6 +2298,22 @@ class LUKSDevice(DMCryptDevice):
             size = Size(self.partedDevice.getLength(unit="B"))
         return size
 
+    def _setSize(self, size):
+        self.slave.size = size + crypto.LUKS_METADATA_SIZE
+
+    def resize(self):
+        self.slave.resize()
+
+    def _setTargetSize(self, newsize):
+        self.slave._setTargetSize(newsize + crypto.LUKS_METADATA_SIZE)
+
+    def _getTargetSize(self):
+        return self.slave._getTargetSize() - crypto.LUKS_METADATA_SIZE
+
+    @property
+    def currentSize(self):
+        return self.slave.currentSize + crypto.LUKS_METADATA_SIZE
+
     def _postCreate(self):
         self.name = self.slave.format.mapName
         StorageDevice._postCreate(self)
-- 
1.9.3



More information about the anaconda-patches mailing list