[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[PATCH] Give access to partitions when determining min/max size to resize; also keep



---
 iw/lvm_dialog_gui.py           |    2 +-
 iw/partition_dialog_gui.py     |    2 +-
 iw/partition_ui_helpers_gui.py |   11 +++++------
 iw/raid_dialog_gui.py          |    2 +-
 partRequests.py                |   13 +++++++++++--
 5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/iw/lvm_dialog_gui.py b/iw/lvm_dialog_gui.py
index 560970f..88ead9f 100644
--- a/iw/lvm_dialog_gui.py
+++ b/iw/lvm_dialog_gui.py
@@ -463,7 +463,7 @@ class VolumeGroupEditor:
 
 	self.fsoptionsDict = {}
 	if logrequest.getPreExisting():
-	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(logrequest, maintable, row, mountCombo, ignorefs = ["software RAID", "physical volume (LVM)", "vfat"])
+	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(logrequest, maintable, row, mountCombo, self.partitions, ignorefs = ["software RAID", "physical volume (LVM)", "vfat"])
 
         dialog.vbox.pack_start(maintable)
         dialog.show_all()
diff --git a/iw/partition_dialog_gui.py b/iw/partition_dialog_gui.py
index fa7a6fd..0dc13ac 100644
--- a/iw/partition_dialog_gui.py
+++ b/iw/partition_dialog_gui.py
@@ -444,7 +444,7 @@ class PartitionEditor:
         # aren't protected (we'd still like to be able to mount them, though)
 	self.fsoptionsDict = {}
         if self.origrequest.type == REQUEST_PREEXIST and self.origrequest.fstype and not self.origrequest.getProtected():
-	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(self.origrequest, maintable, row, self.mountCombo)
+	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(self.origrequest, maintable, row, self.mountCombo, self.partitions)
 
         # size options
         if self.origrequest.type == REQUEST_NEW:
diff --git a/iw/partition_ui_helpers_gui.py b/iw/partition_ui_helpers_gui.py
index e4477d2..4773e8e 100644
--- a/iw/partition_ui_helpers_gui.py
+++ b/iw/partition_ui_helpers_gui.py
@@ -270,7 +270,7 @@ def noformatCB(widget, data):
        resizesb      - spinbutton with resize target
 """
 def createPreExistFSOptionSection(origrequest, maintable, row, mountCombo,
-                                  ignorefs=[]):
+                                  partitions, ignorefs=[]):
     rc = {}
     ofstype = origrequest.fstype
 
@@ -316,9 +316,8 @@ def createPreExistFSOptionSection(origrequest, maintable, row, mountCombo,
 	migratecb = None
 	migfstypeCombo = None
 
-    # FIXME: we should support resizing LVs too
-    if origrequest.origfstype.isResizable() and origrequest.type == REQUEST_PREEXIST:
-        resizecb = gtk.CheckButton(label=_("_Resize partition"))
+    if origrequest.isResizable():
+        resizecb = gtk.CheckButton(label=_("_Resize"))
         resizecb.set_active(origrequest.targetSize is not None)
         rc["resizecb"] = resizecb
         maintable.attach(resizecb, 0, 1, row, row + 1)
@@ -328,8 +327,8 @@ def createPreExistFSOptionSection(origrequest, maintable, row, mountCombo,
         else:
             value = origrequest.size
 
-        reqlower = origrequest.getMinimumResizeMB()
-        requpper = origrequest.getMaximumResizeMB()
+        reqlower = origrequest.getMinimumResizeMB(partitions)
+        requpper = origrequest.getMaximumResizeMB(partitions)
         if not origrequest.format:
             lower = reqlower
         else:
diff --git a/iw/raid_dialog_gui.py b/iw/raid_dialog_gui.py
index 22123f8..563cc4a 100644
--- a/iw/raid_dialog_gui.py
+++ b/iw/raid_dialog_gui.py
@@ -444,7 +444,7 @@ class RaidEditor:
             maintable.attach(self.lukscb, 0, 2, row, row + 1)
             row = row + 1
 	else:
-	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(self.origrequest, maintable, row, self.mountCombo)
+	    (row, self.fsoptionsDict) = createPreExistFSOptionSection(self.origrequest, maintable, row, self.mountCombo, self.partitions)
 
 	# put main table into dialog
 	dialog.vbox.pack_start(maintable)
diff --git a/partRequests.py b/partRequests.py
index c5655e0..84ff18a 100644
--- a/partRequests.py
+++ b/partRequests.py
@@ -158,6 +158,9 @@ class RequestSpec:
         self.targetSize = None
         """Size to resize to"""
 
+        self.resizable = False
+        """Is this a request that can be resized?"""
+
     def __str__(self):
         if self.fstype:
             fsname = self.fstype.getName()
@@ -190,6 +193,11 @@ class RequestSpec:
         import traceback
         traceback.print_stack()
 
+    def isResizable(self):
+        if self.encryption: # encrypted devices can't be resized currently
+            return False
+        return self.resizable and self.fstype.isResizable()
+
     def toEntry(self, partitions):
         """Turn a request into a fsset entry and return the entry."""
         device = self.getDevice(partitions)
@@ -581,17 +589,18 @@ class PreexistingPartitionSpec(PartitionSpec):
                                format = format, migrate = migrate,
                                mountpoint = mountpoint, preexist = 1)
         self.type = REQUEST_PREEXIST
+        self.resizable = True
 
         self.maxResizeSize = None
         """Maximum size of this partition request"""
 
-    def getMaximumResizeMB(self):
+    def getMaximumResizeMB(self, partitions):
         if self.maxResizeSize is not None:
             return self.maxResizeSize
         log.warning("%s doesn't have a max size set" %(self.device,))
         return MAX_PART_SIZE
 
-    def getMinimumResizeMB(self):
+    def getMinimumResizeMB(self, partitions):
         return self.fstype.getMinimumSize(self.device)
 
 class RaidRequestSpec(RequestSpec):
-- 
1.5.3.4


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]