diff options
author | David Cantrell <dcantrell@redhat.com> | 2009-02-12 09:58:22 -1000 |
---|---|---|
committer | David Cantrell <dcantrell@redhat.com> | 2009-02-12 11:30:50 -1000 |
commit | 4dd3e4a3e98825c1d542bb03a58724a2db098765 (patch) | |
tree | 7b886e03e469780b8735cb52cfb5f11337f2febb /partIntfHelpers.py | |
parent | eeed969cbe7b8fb12d3ab70c772817de1407f460 (diff) | |
download | anaconda-4dd3e4a3e98825c1d542bb03a58724a2db098765.tar.gz anaconda-4dd3e4a3e98825c1d542bb03a58724a2db098765.tar.xz anaconda-4dd3e4a3e98825c1d542bb03a58724a2db098765.zip |
Use parted.Disk.getPartitionByPath()
Removed the parted.getPartitionByName() function. There is now
a method on parted.Disk called getPartitionByPath() which provides
the same functionality, but only works on a single Disk.
Diffstat (limited to 'partIntfHelpers.py')
-rw-r--r-- | partIntfHelpers.py | 128 |
1 files changed, 77 insertions, 51 deletions
diff --git a/partIntfHelpers.py b/partIntfHelpers.py index 2bc6620d6..a47222fb6 100644 --- a/partIntfHelpers.py +++ b/partIntfHelpers.py @@ -253,43 +253,65 @@ def doDeletePartitionsByDevice(intf, requestlist, diskset, device, return # get list of unique IDs of these requests - reqIDs = [] + reqIDs = set() + reqparts = {} + for req in requests: - part = parted.getPartitionByName(req.device) - if part.type & parted.PARTITION_FREESPACE or part.type & parted.PARTITION_METADATA or part.type & parted.PARTITION_PROTECTED: - continue - reqIDs.append(req.uniqueID) + for drive in req.drive: + part = diskset.disks[drive].getPartitionByPath(req.device) + + if part.type & parted.PARTITION_FREESPACE or \ + part.type & parted.PARTITION_METADATA or \ + part.type & parted.PARTITION_PROTECTED: + continue + + reqIDs.add(req.uniqueID) + + if reqparts.has_key(req.uniqueID): + reqparts[req.uniqueID].append(part) + else: + reqparts[req.uniqueID] = [ part ] + + reqIDs = list(reqIDs) # now go thru and try to delete the unique IDs for id in reqIDs: try: - req = requestlist.getRequestByID(id) - if req is None: - continue - part = parted.getPartitionByName(req.device) - rc = doDeletePartitionByRequest(intf, requestlist, part, - confirm=0, quiet=1) - if not rc: - pass + req = requestlist.getRequestByID(id) + if req is None: + continue + for partlist in reqparts[id]: + for part in partlist: + rc = doDeletePartitionByRequest(intf, requestlist, part, + confirm=0, quiet=1) + if not rc: + pass except: - pass + pass # see which partitions are left notdeleted = [] left_requests = requestlist.getRequestsByDevice(diskset, device) if left_requests: - # get list of unique IDs of these requests - leftIDs = [] - for req in left_requests: - part = parted.getPartitionByName(req.device) - if part.type & parted.PARTITION_FREESPACE or part.type & parted.PARTITION_METADATA or part.type & parted.PARTITION_PROTECTED: - continue - leftIDs.append(req.uniqueID) - - for id in leftIDs: - req = requestlist.getRequestByID(id) - notdeleted.append(req) - + # get list of unique IDs of these requests + leftIDs = set() + + for req in left_requests: + for drive in req.drive: + part = diskset.disks[drive].getPartitionByPath(req.device) + + if part.type & parted.PARTITION_FREESPACE or \ + part.type & parted.PARTITION_METADATA or \ + part.type & parted.PARTITION_PROTECTED: + continue + + leftIDs.add(req.uniqueID) + + leftIDs = list(leftIDs) + + for id in leftIDs: + req = requestlist.getRequestByID(id) + notdeleted.append(req) # see if we need to report any failures - some were because we removed # an extended partition which contained other members of our delete list @@ -377,34 +399,38 @@ def doEditPartitionByRequest(intf, requestlist, part): def checkForSwapNoMatch(anaconda): """Check for any partitions of type 0x82 which don't have a swap fs.""" + diskset = anaconda.id.diskset + for request in anaconda.id.partitions.requests: if not request.device or not request.fstype: continue - - part = parted.getPartitionByName(request.device) - if (part and (not part.type & parted.PARTITION_FREESPACE) - and (part.getFlag(parted.PARTITION_SWAP)) - and (request.fstype and request.fstype.getName() != "swap") - and (not request.format)): - rc = anaconda.intf.messageWindow(_("Format as Swap?"), - _("/dev/%s has a partition type of 0x82 " - "(Linux swap) but does not appear to " - "be formatted as a Linux swap " - "partition.\n\n" - "Would you like to format this " - "partition as a swap partition?") - % (request.device), type = "yesno", - custom_icon="question") - if rc == 1: - request.format = 1 - request.fstype = fsset.fileSystemTypeGet("swap") - if request.fstype.getName() == "software RAID": - part.setFlag(parted.PARTITION_RAID) - else: - part.unsetFlag(parted.PARTITION_RAID) - - partedUtils.set_partition_file_system_type(part, - request.fstype) + + for drive in request.drive: + part = diskset.disks[drive].getPartitionByPath(request.device) + + if (part and (not part.type & parted.PARTITION_FREESPACE) + and (part.getFlag(parted.PARTITION_SWAP)) + and (request.fstype and request.fstype.getName() != "swap") + and (not request.format)): + rc = anaconda.intf.messageWindow(_("Format as Swap?"), + _("/dev/%s has a partition type of 0x82 " + "(Linux swap) but does not appear to " + "be formatted as a Linux swap " + "partition.\n\n" + "Would you like to format this " + "partition as a swap partition?") + % (request.device), type = "yesno", + custom_icon="question") + if rc == 1: + request.format = 1 + request.fstype = fsset.fileSystemTypeGet("swap") + if request.fstype.getName() == "software RAID": + part.setFlag(parted.PARTITION_RAID) + else: + part.unsetFlag(parted.PARTITION_RAID) + + partedUtils.set_partition_file_system_type(part, + request.fstype) def mustHaveSelectedDrive(intf): txt =_("You need to select at least one hard drive to install %s.") % (productName,) |