summaryrefslogtreecommitdiffstats
path: root/partIntfHelpers.py
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2009-02-12 09:58:22 -1000
committerDavid Cantrell <dcantrell@redhat.com>2009-02-12 11:30:50 -1000
commit4dd3e4a3e98825c1d542bb03a58724a2db098765 (patch)
tree7b886e03e469780b8735cb52cfb5f11337f2febb /partIntfHelpers.py
parenteeed969cbe7b8fb12d3ab70c772817de1407f460 (diff)
downloadanaconda-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.py128
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,)