On Fri, 2011-03-18 at 15:50 -0700, Brian C. Lane wrote: > When editing a pre-existing partition and changing its format type we > need to re-check the size limits. eg. mounting a partition on /boot/efi > needs to make sure it is <= 256M I hate functions/methods that return strings like that, but otherwise it looks okay. > > Resolves: rhbz#684860 > --- > pyanaconda/storage/__init__.py | 8 ++++++ > pyanaconda/storage/devices.py | 48 ++++++++++++++++++++++++++++++++++++ > pyanaconda/storage/partitioning.py | 12 +-------- > 3 files changed, 57 insertions(+), 11 deletions(-) > > diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py > index a0cbdfa..b000573 100644 > --- a/pyanaconda/storage/__init__.py > +++ b/pyanaconda/storage/__init__.py > @@ -1102,6 +1102,14 @@ class Storage(object): > % {'mount': mount, 'size': size, > 'productName': productName}) > > + for (mount, device) in filesystems.items(): > + problem = filesystems[mount].checkSize() > + if problem: > + errors.append(_("Your %s partition is too %s for %s formatting " > + "(allowable size is %d MB to %d MB)") > + % (mount, problem, device.format.name, > + device.minSize, device.maxSize)) > + > usb_disks = [] > firewire_disks = [] > for disk in self.disks: > diff --git a/pyanaconda/storage/devices.py b/pyanaconda/storage/devices.py > index 80bb7be..303856b 100644 > --- a/pyanaconda/storage/devices.py > +++ b/pyanaconda/storage/devices.py > @@ -932,6 +932,19 @@ class StorageDevice(Device): > break > return grow > > + def checkSize(self): > + """ Check to make sure the size of the device is allowed by the > + format used. > + > + return None is all is ok > + return large or small depending on the problem > + """ > + problem = None > + if self.format.maxSize and self.size > self.format.maxSize: > + problem = _("large") > + elif self.format.minSize and self.size < self.format.minSize: > + problem = _("small") > + return problem > > class DiskDevice(StorageDevice): > """ A disk """ > @@ -1595,6 +1608,24 @@ class PartitionDevice(StorageDevice): > return super(PartitionDevice, self).resizable and \ > self.disk.type != 'dasd' > > + def checkSize(self): > + """ Check to make sure the size of the device is allowed by the > + format used. > + > + return None is all is ok > + return large or small depending on the problem > + """ > + problem = None > + if self.format.maxSize and self.size > self.format.maxSize: > + problem = _("large") > + elif (self.format.minSize and > + (not self.req_grow and > + self.size < self.format.minSize) or > + (self.req_grow and self.req_max_size and > + self.req_max_size < self.format.minSize)): > + problem = _("small") > + return problem > + > class DMDevice(StorageDevice): > """ A device-mapper device """ > _type = "dm" > @@ -2553,6 +2584,23 @@ class LVMLogicalVolumeDevice(DMDevice): > # is different (ofcourse) > return "rd_LVM_LV=%s/%s" % (self.vg.name, self._name) > > + def checkSize(self): > + """ Check to make sure the size of the device is allowed by the > + format used. > + > + return None is all is ok > + return large or small depending on the problem > + """ > + problem = None > + if self.format.maxSize and self.size > self.format.maxSize: > + problem = _("large") > + elif (self.format.minSize and > + (not self.req_grow and > + self.size < self.format.minSize) or > + (self.req_grow and self.req_max_size and > + self.req_max_size < self.format.minSize)): > + problem = _("small") > + return problem > > class MDRaidArrayDevice(StorageDevice): > """ An mdraid (Linux RAID) device. """ > diff --git a/pyanaconda/storage/partitioning.py b/pyanaconda/storage/partitioning.py > index e8f3921..aebd7b8 100644 > --- a/pyanaconda/storage/partitioning.py > +++ b/pyanaconda/storage/partitioning.py > @@ -1000,17 +1000,7 @@ def allocatePartitions(storage, disks, partitions, freespace, bootloader=None): > if _part.req_grow: > current_free = None > > - problem = None > - if _part.format.maxSize and _part.req_size > _part.format.maxSize: > - problem = "large" > - elif (_part.format.minSize and > - (not _part.req_grow and > - _part.req_size < _part.format.minSize) or > - (_part.req_grow and _part.req_max_size and > - _part.req_max_size < _part.format.minSize)): > - # format max/min size also enforced in growPartitions > - problem = "small" > - > + problem = _part.checkSize() > if problem: > raise PartitioningError("partition is too %s for %s formatting " > "(allowable size is %d MB to %d MB)" _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list