[PATCH 27/47] Syntax changes for the new pyparted.

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

 



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.
---
 autopart.py         |   74 ++++++++++++++++++++-------------------------------
 bootloader.py       |   14 +++------
 fsset.py            |   18 +++++-------
 iw/osbootwidget.py  |    4 +-
 iw/partition_gui.py |    4 +-
 partIntfHelpers.py  |   10 +++---
 partedUtils.py      |   15 +++-------
 partitions.py       |   21 +++++---------
 8 files changed, 63 insertions(+), 97 deletions(-)

diff --git a/autopart.py b/autopart.py
index 7e25d63..84a9549 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 eedd642..301a8dd 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 77cf841..0af78d7 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 481267d..38e1772 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 f68b90b..78df896 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 1ac193c..dcc15ef 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 0f3162b..037fe1d 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:
@@ -211,7 +211,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:
@@ -681,19 +681,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
 
@@ -708,7 +706,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:
@@ -716,7 +713,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):
@@ -735,7 +731,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 b8b2ca2..612c984 100644
--- a/partitions.py
+++ b/partitions.py
@@ -372,10 +372,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
@@ -383,9 +381,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)
@@ -441,7 +439,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()
@@ -661,14 +658,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
@@ -1713,8 +1708,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()
@@ -1729,8 +1724,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
 
 
-- 
1.6.1.3

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list

[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux