From: Vojtech Trefny <vtrefny(a)redhat.com>
---
blivet/formats/luks.py | 31 ++++++++++++++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/blivet/formats/luks.py b/blivet/formats/luks.py
index 4d9347d..d71b7d5 100644
--- a/blivet/formats/luks.py
+++ b/blivet/formats/luks.py
@@ -33,7 +33,8 @@
from . import DeviceFormat, register_device_format
from ..flags import flags
from ..i18n import _, N_
-from ..tasks import availability
+from ..tasks import availability, lukstasks
+from ..size import Size
import logging
log = logging.getLogger("blivet")
@@ -50,8 +51,13 @@ class LUKS(DeviceFormat):
_linux_native = True # for clearpart
_packages = ["cryptsetup"] # required packages
_min_size = crypto.LUKS_METADATA_SIZE
+ _max_size = Size("16 EiB")
_plugin = availability.BLOCKDEV_CRYPTO_PLUGIN
+ _size_info_class = lukstasks.LUKSSize
+ _resize_class = lukstasks.LUKSResize
+ _resizable = True
+
def __init__(self, **kwargs):
"""
:keyword device: the path to the underlying device
@@ -85,6 +91,10 @@ def __init__(self, **kwargs):
"""
log_method_call(self, **kwargs)
DeviceFormat.__init__(self, **kwargs)
+
+ self._size_info = self._size_info_class(self)
+ self._resize = self._resize_class(self)
+
self.cipher = kwargs.get("cipher")
self.key_size = kwargs.get("key_size")
self.map_name = kwargs.get("name")
@@ -111,6 +121,10 @@ def __init__(self, **kwargs):
elif not self.map_name and self.device:
self.map_name = "luks-%s" % os.path.basename(self.device)
+ if flags.installer_mode and self._resize.available:
+ # if you want current/min size you have to call update_size_info
+ self.update_size_info()
+
def __repr__(self):
s = DeviceFormat.__repr__(self)
if self.__passphrase:
@@ -179,6 +193,21 @@ def status(self):
return False
return os.path.exists("/dev/mapper/%s" % self.map_name)
+ def update_size_info(self):
+ """ Update this format's current size. """
+
+ self._resizable = False
+
+ if not self.status:
+ return
+
+ try:
+ self._size = self._size_info.do_task()
+ except LUKSError as e:
+ log.warning("Failed to obtain current size for device %s: %s",
self.device, e)
+ else:
+ self._resizable = True
+
def _pre_setup(self, **kwargs):
if not self.configured:
raise LUKSError("luks device not configured")
--
To view this commit on github, visit
https://github.com/rhinstaller/blivet/commit/f5348176b3b30ee1ce92a146fad1...