summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2009-01-27 20:09:08 -1000
committerDavid Cantrell <dcantrell@redhat.com>2009-02-12 11:30:03 -1000
commite86d17a13c26a57b8745b1951dace73ae6372de9 (patch)
tree1d40a1879386ccf8e33673a8ec512e02affb79f6
parent6926d406cdd73b9da40e9c4a4e4b740b4566736d (diff)
downloadanaconda-e86d17a13c26a57b8745b1951dace73ae6372de9.tar.gz
anaconda-e86d17a13c26a57b8745b1951dace73ae6372de9.tar.xz
anaconda-e86d17a13c26a57b8745b1951dace73ae6372de9.zip
Syntax changes for the new pyparted.
1) Iterate over partitions with a for loop over disk.partitions.values() rather than calling next_partition() 2) Call getFlag() rather than get_flag() 3) Call setFlag() to enable a flag, call unsetFlag() to disable a flag. 4) Reference the active property rather than calling the is_active() method. And other fixes.
-rw-r--r--autopart.py74
-rw-r--r--bootloader.py14
-rw-r--r--fsset.py18
-rw-r--r--iw/osbootwidget.py4
-rw-r--r--iw/partition_gui.py4
-rw-r--r--partIntfHelpers.py10
-rw-r--r--partedUtils.py15
-rw-r--r--partitions.py21
8 files changed, 63 insertions, 97 deletions
diff --git a/autopart.py b/autopart.py
index 0c491a605..4f0a23d72 100644
--- a/autopart.py
+++ b/autopart.py
@@ -114,11 +114,9 @@ def bootAlphaCheckRequirements(part):
# The first free space should start at the begining of the drive
# and span for a megabyte or more.
- free = disk.next_partition()
- while free:
+ for free in disk.partitions.values():
if free.type & parted.PARTITION_FREESPACE:
break
- free = disk.next_partition(free)
if (not free or free.geom.start != 1L or free.getSize(unit="MB") < 1):
return BOOTALPHA_NO_RESERVED_SPACE
@@ -151,11 +149,9 @@ def findFreespace(diskset):
for drive in diskset.disks.keys():
disk = diskset.disks[drive]
free[drive] = []
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
if part.type & parted.PARTITION_FREESPACE:
free[drive].append(part)
- part = disk.next_partition(part)
return free
@@ -274,11 +270,11 @@ def fitConstrained(diskset, requests, primOnly=0, newParts = None):
except Exception, msg:
raise PartitioningError, str(msg)
for flag in request.fstype.getPartedPartitionFlags():
- if not newp.is_flag_available(flag):
- disk.delete_partition(newp)
+ if not newp.isFlagAvailable(flag):
+ disk.deletePartition(newp)
raise PartitioningError, ("requested FileSystemType needs "
"a flag that is not available.")
- newp.set_flag(flag, 1)
+ newp.setFlag(flag)
request.device = fsset.PartedPartitionDevice(newp).getDevice()
request.currentDrive = request.drive[0]
newParts.parts.append(newp)
@@ -442,8 +438,7 @@ def fitSized(diskset, requests, primOnly = 0, newParts = None):
# now need to update freespace since adding extended
# took some space
found = 0
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
if part.type & parted.PARTITION_FREESPACE:
if part.geom.start > freeStartSec and part.geom.end <= freeEndSec:
found = 1
@@ -451,8 +446,6 @@ def fitSized(diskset, requests, primOnly = 0, newParts = None):
freeEndSec = part.geom.end
break
- part = disk.next_partition(part)
-
if not found:
raise PartitioningError, "Could not find free space after making new extended partition"
@@ -477,11 +470,11 @@ def fitSized(diskset, requests, primOnly = 0, newParts = None):
except Exception, msg:
raise PartitioningError, str(msg)
for flag in request.fstype.getPartedPartitionFlags():
- if not newp.is_flag_available(flag):
- disk.delete_partition(newp)
+ if not newp.isFlagAvailable(flag):
+ disk.deletePartition(newp)
raise PartitioningError, ("requested FileSystemType needs "
"a flag that is not available.")
- newp.set_flag(flag, 1)
+ newp.setFlag(flag)
request.device = fsset.PartedPartitionDevice(newp).getDevice()
drive = newp.geom.dev.path[5:]
@@ -870,8 +863,7 @@ def setPreexistParts(diskset, requests):
lvmLog.info("pre-existing partition on non-native disk %s, ignoring" %(request.drive,))
continue
disk = diskset.disks[request.drive]
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
if part.geom.start == request.start and part.geom.end == request.end:
if partedUtils.isEfiSystemPartition(part) and \
request.fstype.name == "vfat":
@@ -896,30 +888,27 @@ def setPreexistParts(diskset, requests):
request.device = part.getDeviceNodeName()
if request.fstype:
if request.fstype.getName() != request.origfstype.getName():
- if part.is_flag_available(parted.PARTITION_RAID):
+ if part.isFlagAvailable(parted.PARTITION_RAID):
if request.fstype.getName() == "software RAID":
- part.set_flag(parted.PARTITION_RAID, 1)
+ part.setFlag(parted.PARTITION_RAID)
else:
- part.set_flag(parted.PARTITION_RAID, 0)
- if part.is_flag_available(parted.PARTITION_LVM):
+ part.unsetFlag(parted.PARTITION_RAID)
+ if part.isFlagAvailable(parted.PARTITION_LVM):
if request.fstype.getName() == "physical volume (LVM)":
- part.set_flag(parted.PARTITION_LVM, 1)
+ part.setFlag(parted.PARTITION_LVM)
else:
- part.set_flag(parted.PARTITION_LVM, 0)
+ part.unsetFlag(parted.PARTITION_LVM)
partedUtils.set_partition_file_system_type(part, request.fstype)
-
+
break
- part = disk.next_partition(part)
def deletePart(diskset, delete):
disk = diskset.disks[delete.drive]
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
if part.geom.start == delete.start and part.geom.end == delete.end:
- disk.delete_partition(part)
+ disk.deletePartition(part)
return
- part = disk.next_partition(part)
def processPartitioning(diskset, requests, newParts):
# collect a hash of all the devices that we have created extended
@@ -947,7 +936,7 @@ def processPartitioning(diskset, requests, newParts):
# Finally, remove all of the partitions we added in the last try from
# the disks. We'll start again from there.
for part in newParts.parts:
- part.disk.delete_partition(part)
+ part.disk.deletePartition(part)
newParts.reset()
@@ -959,7 +948,7 @@ def processPartitioning(diskset, requests, newParts):
# sort requests by size
requests.sortRequests()
-
+
# partitioning algorithm in simplistic terms
#
# we want to allocate partitions such that the most specifically
@@ -1115,7 +1104,7 @@ def doClearPartAction(anaconda, partitions, diskset):
return
else:
raise ValueError, "Invalid clear part type in doClearPartAction"
-
+
drives = diskset.disks.keys()
drives.sort()
@@ -1125,11 +1114,9 @@ def doClearPartAction(anaconda, partitions, diskset):
drive in diskset.skippedDisks:
continue
disk = diskset.disks[drive]
- part = disk.next_partition()
- while part:
- if (not part.is_active() or (part.type == parted.PARTITION_EXTENDED) or
+ for part in disk.partitions.values():
+ if (not part.active or (part.type == parted.PARTITION_EXTENDED) or
(part.disk.type.name == "mac" and part.num == 1 and part.name == "Apple")):
- part = disk.next_partition(part)
continue
if part.fs_type:
ptype = partedUtils.get_partition_file_system_type(part)
@@ -1148,12 +1135,11 @@ def doClearPartAction(anaconda, partitions, diskset):
(not ptype and
partedUtils.isLinuxNative(part)) or
((part._fileSystem is None) and # the ptable doesn't have types
- ((part.is_flag_available(parted.PARTITION_RAID) and part.get_flag(parted.PARTITION_RAID)) or # this is a RAID
- (part.is_flag_available(parted.PARTITION_LVM) and part.get_flag(parted.PARTITION_LVM)) or # or an LVM
+ ((part.isFlagAvailable(parted.PARTITION_RAID) and part.getFlag(parted.PARTITION_RAID)) or # this is a RAID
+ (part.isFlagAvailable(parted.PARTITION_LVM) and part.getFlag(parted.PARTITION_LVM)) or # or an LVM
(iutil.isMactel() and not ptype)))): # or we're on a mactel and have a blank partition from bootcamp #FIXME: this could be dangerous...
old = partitions.getRequestByDeviceName(part.getDeviceNodeName())
if old.getProtected():
- part = disk.next_partition(part)
continue
partitions.deleteDependentRequests(old)
@@ -1192,9 +1178,9 @@ def doClearPartAction(anaconda, partitions, diskset):
(iutil.getPPCMachine() == "iSeries"))
and (linuxOnly == 1)
and (not anaconda.isKickstart) and
- part.is_flag_available(parted.PARTITION_BOOT) and
- (part.get_flag(parted.PARTITION_PREP)) and
- part.get_flag(parted.PARTITION_BOOT)):
+ part.isFlagAvailable(parted.PARTITION_BOOT) and
+ (part.getFlag(parted.PARTITION_PREP)) and
+ part.getFlag(parted.PARTITION_BOOT)):
req = partitions.getRequestByDeviceName(part.getDeviceNodeName())
req.mountpoint = None
req.format = 0
@@ -1205,8 +1191,6 @@ def doClearPartAction(anaconda, partitions, diskset):
break
if request:
partitions.autoPartitionRequests.remove(request)
-
- part = disk.next_partition(part)
# set the diskset up
try:
diff --git a/bootloader.py b/bootloader.py
index eedd64211..301a8dd0c 100644
--- a/bootloader.py
+++ b/bootloader.py
@@ -65,12 +65,10 @@ def bootloaderSetupChoices(anaconda):
bootPart = None
for drive in drives:
disk = anaconda.id.diskset.disks[drive]
- part = disk.next_partition()
- while part:
- if part.is_active() and partedUtils.isEfiSystemPartition(part):
+ for part in disk.partitions.values():
+ if part.active and partedUtils.isEfiSystemPartition(part):
bootPart = part.getDeviceNodeName()
break
- part = disk.next_partition(part)
if bootPart:
break
if bootPart:
@@ -80,18 +78,16 @@ def bootloaderSetupChoices(anaconda):
anaconda.id.fsset.add(FileSystemSetEntry(dev, None, fileSystemTypeGet("efi")))
# iSeries bootloader on upgrades
- if iutil.getPPCMachine() == "iSeries" and not anaconda.id.bootloader.device:
+ if iutil.getPPCMachine() == "iSeries" and not anaconda.id.bootloader.device:
drives = anaconda.id.diskset.disks.keys()
drives.sort()
bootPart = None
for drive in drives:
disk = anaconda.id.diskset.disks[drive]
- part = disk.next_partition()
- while part:
- if part.is_active() and part.get_flag(parted.PARTITION_PREP):
+ for part in disk.partitions.values():
+ if part.active and part.getFlag(parted.PARTITION_PREP):
bootPart = part.getDeviceNodeName()
break
- part = disk.next_partition(part)
if bootPart:
break
if bootPart:
diff --git a/fsset.py b/fsset.py
index 75af04d2b..f0f3a9671 100644
--- a/fsset.py
+++ b/fsset.py
@@ -1656,8 +1656,8 @@ MAILADDR root
or iutil.getPPCMachine() in ("pSeries", "iSeries", "PMac") \
or (iutil.isX86() \
and partedUtils.hasGptLabel(diskset, drive)):
- if part and part.is_flag_available(parted.PARTITION_BOOT):
- part.set_flag(parted.PARTITION_BOOT, 1)
+ if part and part.isFlagAvailable(parted.PARTITION_BOOT):
+ part.setFlag(parted.PARTITION_BOOT)
return
for drive in diskset.disks.keys():
@@ -1666,18 +1666,16 @@ MAILADDR root
if partedUtils.hasGptLabel(diskset, drive):
continue
disk = diskset.disks[drive]
- part = disk.next_partition()
- while part:
- if not part.is_active():
- part = disk.next_partition(part)
+ for part in disk.partitions.values():
+ if not part.active:
continue
- if not part.is_flag_available(parted.PARTITION_BOOT):
+ if not part.isFlagAvailable(parted.PARTITION_BOOT):
foundActive = 1
part = None
continue
- if part.get_flag(parted.PARTITION_BOOT):
+ if part.getFlag(parted.PARTITION_BOOT):
foundActive = 1
part = None
continue
@@ -1688,10 +1686,8 @@ MAILADDR root
if part.getDeviceNodeName() == bootDev:
bootPart = part
- part = disk.next_partition(part)
-
if bootPart and not foundActive:
- bootPart.set_flag(parted.PARTITION_BOOT, 1)
+ bootPart.setFlag(parted.PARTITION_BOOT)
if bootPart:
del bootPart
diff --git a/iw/osbootwidget.py b/iw/osbootwidget.py
index 481267dfa..38e177207 100644
--- a/iw/osbootwidget.py
+++ b/iw/osbootwidget.py
@@ -158,8 +158,8 @@ class OSBootWidget:
parts = []
disks = self.diskset.disks
func = lambda part: (part.is_active() and
- part.get_flag(parted.PARTITION_LVM) != 1 and
- part.get_flag(parted.PARTITION_RAID) != 1)
+ part.getFlag(parted.PARTITION_LVM) != 1 and
+ part.getFlag(parted.PARTITION_RAID) != 1)
for drive in disks.keys():
pedparts.extend(partedUtils.filter_partitions(disks[drive], func))
for part in pedparts:
diff --git a/iw/partition_gui.py b/iw/partition_gui.py
index f68b90b2e..78df8962e 100644
--- a/iw/partition_gui.py
+++ b/iw/partition_gui.py
@@ -836,7 +836,7 @@ class PartitionWindow(InstallWindow):
continue
# ignore the tiny < 1 MB partitions (#119479)
if part.getSize(unit="MB") <= 1.0:
- if not part.is_active() or not part.get_flag(parted.PARTITION_BOOT):
+ if not part.is_active() or not part.getFlag(parted.PARTITION_BOOT):
part = disk.next_partition(part)
continue
@@ -890,7 +890,7 @@ class PartitionWindow(InstallWindow):
ptype = _("Free space")
elif part.type == parted.PARTITION_EXTENDED:
ptype = _("Extended")
- elif part.get_flag(parted.PARTITION_RAID) == 1:
+ elif part.getFlag(parted.PARTITION_RAID) == 1:
ptype = _("software RAID")
parreq = self.partitions.getRaidMemberParent(request)
if parreq:
diff --git a/partIntfHelpers.py b/partIntfHelpers.py
index f2338ded2..8dc195e36 100644
--- a/partIntfHelpers.py
+++ b/partIntfHelpers.py
@@ -382,7 +382,7 @@ def checkForSwapNoMatch(anaconda):
part = parted.getPartitionByName(request.device)
if (part and (not part.type & parted.PARTITION_FREESPACE)
- and (part.get_flag(parted.LINUX_SWAP))
+ 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?"),
@@ -393,15 +393,15 @@ def checkForSwapNoMatch(anaconda):
"Would you like to format this "
"partition as a swap partition?")
% (request.device), type = "yesno",
- custom_icon="question")
+ custom_icon="question")
if rc == 1:
request.format = 1
request.fstype = fsset.fileSystemTypeGet("swap")
if request.fstype.getName() == "software RAID":
- part.set_flag(parted.PARTITION_RAID, 1)
+ part.setFlag(parted.PARTITION_RAID)
else:
- part.set_flag(parted.PARTITION_RAID, 0)
-
+ part.unsetFlag(parted.PARTITION_RAID)
+
partedUtils.set_partition_file_system_type(part,
request.fstype)
diff --git a/partedUtils.py b/partedUtils.py
index 400b04977..55a0a6103 100644
--- a/partedUtils.py
+++ b/partedUtils.py
@@ -91,7 +91,7 @@ def set_partition_file_system_type(part, fstype):
if not part.isFlagAvailable(flag):
raise PartitioningError, ("requested file system type needs "
"a flag that is not available.")
- part.setFlag(flag, True)
+ part.setFlag(flag)
if isEfiSystemPartition(part):
part.system = parted.fileSystemType["fat32"]
else:
@@ -215,7 +215,7 @@ def checkDiskLabel(disk, intf):
"""Check that the disk label on disk is valid for this machine type."""
arch = iutil.getArch()
if arch in parted.archLabels.keys():
- if disk.type.name in parted.archLabels[arch]:
+ if disk.type in parted.archLabels[arch]:
# this is kind of a hack since we don't want LDL to be used
return checkDasdFmt(disk, intf)
else:
@@ -685,19 +685,17 @@ class DiskSet:
for drive in drives:
disk = self.disks[drive]
- part = disk.next_partition ()
- while part:
+ for part in disk.partitions.values():
node = part.getDeviceNodeName()
crypto = self.anaconda.id.partitions.encryptedDevices.get(node)
- if (part.is_active()
+ if (part.active
and (part.getFlag(parted.PARTITION_RAID)
or part.getFlag(parted.PARTITION_LVM))):
- part = part.nextPartition()
continue
elif part.fileSystem or crypto:
theDev = node
if part.fileSystem:
- fstype = part.fileSystem.name
+ fstype = part.fileSystem.type
else:
fstype = None
@@ -712,7 +710,6 @@ class DiskSet:
log.error("failed to open encrypted device %s" % node)
if not fstype or fstype not in fsset.getUsableLinuxFs():
- part = part.nextPartition()
continue
try:
@@ -720,7 +717,6 @@ class DiskSet:
self.anaconda.rootPath, fstype)
checkRoot = self.anaconda.rootPath
except SystemError:
- part = part.nextPartition()
continue
if os.access (checkRoot + '/etc/fstab', os.R_OK):
@@ -739,7 +735,6 @@ class DiskSet:
isys.umount(self.anaconda.rootPath)
- part = disk.next_partition(part)
return rootparts
def driveList (self):
diff --git a/partitions.py b/partitions.py
index 44205bc49..b87443235 100644
--- a/partitions.py
+++ b/partitions.py
@@ -375,10 +375,8 @@ class Partitions:
drives.sort()
for drive in drives:
disk = diskset.disks[drive]
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
if part.type & parted.PARTITION_METADATA:
- part = disk.next_partition(part)
continue
format = None
@@ -386,9 +384,9 @@ class Partitions:
ptype = None
elif part.type & parted.PARTITION_EXTENDED:
ptype = None
- elif part.get_flag(parted.PARTITION_RAID) == 1:
+ elif part.getFlag(parted.PARTITION_RAID) == 1:
ptype = fsset.fileSystemTypeGet("software RAID")
- elif part.get_flag(parted.PARTITION_LVM) == 1:
+ elif part.getFlag(parted.PARTITION_LVM) == 1:
ptype = fsset.fileSystemTypeGet("physical volume (LVM)")
else:
ptype = partedUtils.get_partition_file_system_type(part)
@@ -444,7 +442,6 @@ class Partitions:
if labels[mappedDev] and len(labels[mappedDev])>0:
spec.fslabel = labels[mappedDev]
self.addRequest(spec)
- part = disk.next_partition(part)
# now we need to read in all pre-existing RAID stuff
diskset.startMPath()
@@ -664,14 +661,12 @@ class Partitions:
rc = []
disk = diskset.disks[device]
- part = disk.next_partition()
- while part:
+ for part in disk.partitions.values():
dev = part.getDeviceNodeName()
request = self.getRequestByDeviceName(dev)
if request:
rc.append(request)
- part = disk.next_partition(part)
if len(rc) > 0:
return rc
@@ -1716,8 +1711,8 @@ class Partitions:
disk = part.disk
while part:
- if not part.is_active():
- part = disk.next_partition(part)
+ if not part.active:
+ part = disk.nextPartition(part)
continue
device = part.getDeviceNodeName()
@@ -1732,8 +1727,8 @@ class Partitions:
if self.isLVMVolumeGroupMember(request):
return _("a partition which is a member of a LVM Volume Group.")
-
- part = disk.next_partition(part)
+
+ part = disk.nextPartition(part)
return None