Re: [PATCH] Remove all unused portions of partedUtils.

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

 



On Mon, 2009-04-06 at 15:14 -0400, Chris Lumens wrote:
> ---
>  dmraid.py      |    9 -
>  partedUtils.py |  917 --------------------------------------------------------
>  2 files changed, 0 insertions(+), 926 deletions(-)

dmraid.py should be a candidate for removal now as well. Nothing that
works is using it.

> 
> diff --git a/dmraid.py b/dmraid.py
> index 58aa559..8d07116 100644
> --- a/dmraid.py
> +++ b/dmraid.py
> @@ -34,7 +34,6 @@ if not _bdModulePath in oldPath:
>      block.setBdevidPath(_bdModulePath + oldPath)
>  del oldPath
>  
> -import partedUtils
>  import raid
>  from flags import flags
>  
> @@ -228,14 +227,6 @@ def register_raid_device(dmname, newdevices, newlevel, newnumActive):
>      """Register a new RAID device in the dmlist."""
>      raise NotImplementedError
>  
> -def lookup_raid_device(dmname):
> -    """Return the requested RAID device information."""
> -    for rs, parent, devices, level, nrDisks, totalDisks in \
> -            partedUtils.DiskSet.dmList:
> -        if dmname == rs.name:
> -            return (rs.name, devices, level, totalDisks)
> -    raise KeyError, "dm device not found"
> -
>  def scanForMPath(drives):
>      log.debug("scanning for multipath on drives %s" % (drives,))
>      mpaths = []
> diff --git a/partedUtils.py b/partedUtils.py
> index dde4d0b..dd76336 100644
> --- a/partedUtils.py
> +++ b/partedUtils.py
> @@ -45,79 +45,6 @@ log = logging.getLogger("anaconda")
>  import gettext
>  _ = lambda x: gettext.ldgettext("anaconda", x)
>  
> -def get_partition_file_system_type(part):
> -    """Return the file system type of the parted.Partition part.
> -
> -    Arguments:
> -    part -- parted.Partition object
> -
> -    Return:
> -    Filesystem object (as defined in fsset.py)
> -    """
> -    if part.fileSystem is None and part.getFlag(parted.PARTITION_PREP):
> -        ptype = fsset.fileSystemTypeGet("PPC PReP Boot")
> -    elif part.fileSystem is None:
> -        return None
> -    elif (part.getFlag(parted.PARTITION_BOOT) and
> -          part.getSize(unit="MB") <= 1 and part.fileSystem.type == "hfs"):
> -        ptype = fsset.fileSystemTypeGet("Apple Bootstrap")
> -    elif part.fileSystem.type == "linux-swap":
> -        ptype = fsset.fileSystemTypeGet("swap")
> -    elif isEfiSystemPartition(part):
> -        ptype = fsset.fileSystemTypeGet("efi")
> -    elif isEfiSystemPartition(part):
> -        ptype = fsset.fileSystemTypeGet("efi")
> -    elif part.fileSystem.type in ("fat16", "fat32"):
> -        ptype = fsset.fileSystemTypeGet("vfat")
> -    else:
> -        try:
> -            ptype = fsset.fileSystemTypeGet(part.fileSystem.type)
> -        except:
> -            ptype = fsset.fileSystemTypeGet("foreign")
> -
> -    return ptype
> -
> -
> -def set_partition_file_system_type(part, fstype):
> -    """Set partition type of part to PedFileSystemType implied by fstype."""
> -    if fstype == None:
> -        return
> -    try:
> -        for flag in fstype.getPartedPartitionFlags():
> -            if not part.isFlagAvailable(flag):
> -                raise PartitioningError, ("requested file system type needs "
> -                                          "a flag that is not available.")
> -            part.setFlag(flag)
> -        if isEfiSystemPartition(part):
> -            part.system = parted.fileSystemType["fat32"]
> -        else:
> -            part.system = fstype.getPartedFileSystemType()
> -    except:
> -        print("Failed to set partition type to ", fstype.getName())
> -        pass
> -
> -def get_partition_drive(partition):
> -    """Return the device name for disk that PedPartition partition is on."""
> -    return partition.geometry.device.path[5:]
> -
> -def map_foreign_to_fsname(part):
> -    """Return the name associated with a foreign filesystem type."""
> -    if part._fileSystem:
> -        return part._fileSystem._type.name
> -    else:
> -        return _("None")
> -
> -def filter_partitions(disk, func):
> -    rc = []
> -    for part in disk.partitions:
> -        if func(part):
> -            rc.append(part)
> -    return rc
> -
> -def hasGptLabel(diskset, device):
> -    disk = diskset.disks[device]
> -    return disk.type == "gpt"
> -
>  def isEfiSystemPartition(part):
>      if not part.active:
>          return False
> @@ -127,162 +54,6 @@ def isEfiSystemPartition(part):
>              part.fileSystem.type in ("fat16", "fat32") and
>              isys.readFSLabel(part.getDeviceNodeName()) != "ANACONDA")
>  
> -def labelDisk(platform, deviceFile, forceLabelType=None):
> -    dev = parted.getDevice(deviceFile)
> -    label = platform.diskType
> -
> -    if not forceLabelType is None:
> -        label = forceLabelType
> -    else:
> -        if label.name == 'msdos' and \
> -                dev.length > (2L**41) / dev.sectorSize and \
> -                'gpt' in parted.archLabels[iutil.getArch()]:
> -            label = parted.diskType['gpt']
> -
> -    disk = parted.freshDisk(dev, label)
> -    disk.commit()
> -    return disk
> -
> -# this is kind of crappy, but we don't really want to allow LDL formatted
> -# dasd to be used during the install
> -def checkDasdFmt(disk, intf):
> -    if not iutil.isS390():
> -        return 0
> -
> -    if disk.type != "dasd":
> -        return 0
> -
> -    # FIXME: there has to be a better way to check LDL vs CDL
> -    # how do I test ldl vs cdl?
> -    if disk.maxPrimaryPartitionCount > 1:
> -        return 0
> -
> -    if intf:
> -        try:
> -            device = disk.device.path[5:]
> -            devs = isys.getDasdDevPort()
> -            dev = "/dev/%s (%s)" %(device, devs[device])
> -        except Exception, e:
> -            log.critical("exception getting dasd dev ports: %s" %(e,))
> -            dev = "/dev/%s" %(disk.device.path[5:],)
> -
> -        rc = intf.messageWindow(_("Warning"),
> -                       _("The device %s is LDL formatted instead of "
> -                         "CDL formatted.  LDL formatted DASDs are not "
> -                         "supported for usage during an install of %s.  "
> -                         "If you wish to use this disk for installation, "
> -                         "it must be re-initialized causing the loss of "
> -                         "ALL DATA on this drive.\n\n"
> -                         "Would you like to reformat this DASD using CDL "
> -                         "format?")
> -                        %(dev, productName), type = "yesno")
> -        if rc == 0:
> -            return 1
> -        else:
> -            return -1
> -    else:
> -        return 1
> -
> -
> -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 in parted.archLabels[arch]:
> -            # this is kind of a hack since we don't want LDL to be used
> -            return checkDasdFmt(disk, intf)
> -    else:
> -        if disk.type == "msdos":
> -            return 0
> -
> -    if intf:
> -        rc = intf.messageWindow(_("Warning"),
> -                                _("/dev/%s currently has a %s partition "
> -                                  "layout.  To use this drive for "
> -                                  "the installation of %s, it must be "
> -                                  "re-initialized, causing the loss of "
> -                                  "ALL DATA on this drive.\n\n"
> -                                  "Would you like to re-initialize this "
> -                                  "drive?")
> -                                %(disk.device.path[5:], disk.type,
> -                                  productName), type="custom",
> -                                custom_buttons = [ _("_Ignore drive"),
> -                                                   _("_Re-initialize drive") ],
> -                                custom_icon="question")
> -
> -        if rc == 0:
> -            return 1
> -        else:
> -            return -1
> -    else:
> -        return 1
> -
> -def hasProtectedPartitions(drive, anaconda):
> -    rc = False
> -    if anaconda is None:
> -        return rc
> -
> -    try:
> -        for protected in anaconda.id.storage.protectedPartitions:
> -            if protected.startswith(drive):
> -                part = protected[len(drive):]
> -                if part[0] == "p":
> -                    part = part[1:]
> -                if part.isdigit():
> -                    rc = True
> -                    break
> -    except:
> -        pass
> -
> -    return rc
> -
> -# attempt to associate a parted filesystem type on a partition that
> -# didn't probe as one type or another.
> -def validateFsType(part):
> -    # we only care about primary and logical partitions
> -    if not part.type in (parted.PARTITION_NORMAL,
> -                         parted.PARTITION_LOGICAL):
> -        return
> -
> -    if part.getFlag(parted.PARTITION_LVM) or part.getFlag(parted.PARTITION_RAID):
> -        return
> -
> -    # if the partition already has a type, no need to search
> -    if part.fileSystem:
> -        return
> -
> -    # first fsystem to probe wins, so sort the types into a preferred
> -    # order.
> -    fsnames = parted.fileSystemType.keys()
> -    goodTypes = ['ext3', 'ext2']
> -    badTypes = ['linux-swap',]
> -    for fstype in goodTypes:
> -        fsnames.remove(fstype)
> -    fsnames = goodTypes + fsnames
> -    for fstype in badTypes:
> -        fsnames.remove(fstype)
> -    fsnames.extend(badTypes)
> -
> -    # now check each type, and set the partition system accordingly.
> -    for fsname in fsnames:
> -        fstype = parted.fileSystemType[fsname]
> -        try:
> -            parted.probeForSpecificFileSystem(fstype.name, part.geometry)
> -            # XXX verify that this will not modify system type
> -            # in the case where a user does not modify partitions
> -            part.system = fstype
> -            return
> -        except (parted.FileSystemException, parted.IOException):
> -            pass
> -
> -def isLinuxNative(part):
> -    """Check if the type is a 'Linux native' filesystem."""
> -    if part.getFlag(parted.PARTITION_RAID) or part.getFlag(parted.PARTITION_LVM) or \
> -            part.getFlag(parted.PARTITION_SWAP) or map_foreign_to_fsname(part) in ["ext2", "ext3", "jfs", "reiserfs", "xfs"]:
> -        return True
> -    else:
> -        return False
> -
>  class DiskSet:
>      """The disks in the system."""
>  
> @@ -300,13 +71,6 @@ class DiskSet:
>          self.anaconda = anaconda
>          self.devicesOpen = False
>  
> -    def onlyPrimaryParts(self):
> -        for disk in self.disks.values():
> -            if disk.supportsFeature(parted.DISK_TYPE_EXTENDED):
> -                return 0
> -
> -        return 1
> -
>      def startMPath(self):
>          """Start all of the dm multipath devices associated with the DiskSet."""
>  
> @@ -398,689 +162,8 @@ class DiskSet:
>          while DiskSet.mdList:
>              DiskSet.mdList.pop()
>  
> -    def getInfo(self, readFn=lambda d: isys.readFSLabel(d)):
> -        """Return a dict keyed on device name, storing some sort of data
> -           about each device.  This is typially going to be labels or UUIDs,
> -           as required by readFstab.
> -        """
> -        ret = {}
> -
> -        encryptedDevices = self.anaconda.id.partitions.encryptedDevices
> -
> -        for drive in self.driveList():
> -            # Don't read labels from drives we cleared using clearpart, as
> -            # we don't actually remove the existing filesystems so those
> -            # labels will still be present (#209291).
> -            if drive in DiskSet.skippedDisks:
> -                continue
> -
> -            # ignoredisk takes precedence over clearpart (#186438).
> -            if DiskSet.exclusiveDisks != [] and \
> -                    drive not in DiskSet.exclusiveDisks:
> -                continue
> -
> -            disk = self.disks[drive]
> -            func = lambda part: (part.active and
> -                                 not (part.getFlag(parted.PARTITION_RAID)
> -                                      or part.getFlag(parted.PARTITION_LVM)))
> -            parts = filter_partitions(disk, func)
> -            for part in parts:
> -                node = part.getDeviceNodeName()
> -                crypto = encryptedDevices.get(node)
> -                if crypto and not crypto.openDevice():
> -                    node = crypto.getDevice()
> -
> -                val = readFn(node)
> -                if val:
> -                    ret[node] = val
> -
> -                if crypto:
> -                    crypto.closeDevice()
> -
> -        # not doing this right now, because we should _always_ have a
> -        # partition table of some kind on dmraid.
> -        #if False:
> -        #    for rs in DiskSet.dmList or [] + DiskSet.mpList or []:
> -        #        label = isys.readFSLabel(rs.name)
> -        #        if label:
> -        #            labels[rs.name] = label
> -
> -        for dev, devices, level, numActive in DiskSet.mdList:
> -            crypto = encryptedDevices.get(dev)
> -            if crypto and not crypto.openDevice():
> -                dev = crypto.getDevice()
> -
> -            val = readFn(dev)
> -            if val:
> -                ret[dev] = val
> -
> -            if crypto:
> -                crypto.closeDevice()
> -
> -        active = lvm.vgcheckactive()
> -        if not active:
> -            lvm.vgscan()
> -            lvm.vgactivate()
> -
> -        for (vg, lv, size, lvorigin) in lvm.lvlist():
> -            if lvorigin:
> -                continue
> -            node = "%s/%s" % (vg, lv)
> -            crypto = encryptedDevices.get(node)
> -            if crypto and not crypto.openDevice():
> -                node = crypto.getDevice()
> -
> -            val = readFn("/dev/" + node)
> -            if val:
> -                ret[node] = val
> -
> -            if crypto:
> -                crypto.closeDevice()
> -
> -        if not active:
> -            lvm.vgdeactivate()
> -
> -        return ret
> -
> -    def findExistingRootPartitions(self, upgradeany = 0):
> -        """Return a list of all of the partitions which look like a root fs."""
> -        rootparts = []
> -
> -        self.startMPath()
> -        self.startDmRaid()
> -        self.startMdRaid()
> -
> -        for dev, crypto in self.anaconda.id.partitions.encryptedDevices.items():
> -            # FIXME: order these so LVM and RAID always work on the first try
> -            if crypto.openDevice():
> -                log.error("failed to open encrypted device %s" % (dev,))
> -
> -        if flags.cmdline.has_key("upgradeany"):
> -            upgradeany = 1
> -
> -        for dev, devices, level, numActive in self.mdList:
> -            (errno, msg) = (None, None)
> -            found = 0
> -            theDev = dev
> -            crypto = self.anaconda.id.partitions.encryptedDevices.get(dev)
> -            if crypto and not crypto.openDevice():
> -                theDev = "/dev/%s" % (crypto.getDevice(),)
> -            elif crypto:
> -                log.error("failed to open encrypted device %s" % dev)
> -
> -            fs = isys.readFSType(theDev)
> -            if fs is not None:
> -                try:
> -                    isys.mount(theDev, self.anaconda.rootPath, fs,
> -                               readOnly = True)
> -                    found = 1
> -                except SystemError:
> -                    pass
> -
> -            if found:
> -                if os.access (self.anaconda.rootPath + '/etc/fstab', os.R_OK):
> -                    (prod, ver) = getReleaseString(self.anaconda.rootPath)
> -
> -                    if upgradeany == 1 or self.anaconda.id.instClass.productUpgradable(prod, ver):
> -                        try:
> -                            label = isys.readFSLabel(theDev)
> -                        except:
> -                            label = None
> -
> -                        uuid = isys.readFSUuid(theDev)
> -                        # XXX we could add the "raw" dev and let caller decrypt
> -                        rootparts.append ((theDev, fs, prod+" "+ver, label, uuid))
> -                isys.umount(self.anaconda.rootPath)
> -
> -        # now, look for candidate lvm roots
> -        lvm.vgscan()
> -        lvm.vgactivate()
> -
> -        for dev, crypto in self.anaconda.id.partitions.encryptedDevices.items():
> -            # FIXME: order these so LVM and RAID always work on the first try
> -            if crypto.openDevice():
> -                log.error("failed to open encrypted device %s" % (dev,))
> -
> -        for (vg, lv, size, lvorigin) in lvm.lvlist():
> -            if lvorigin:
> -                continue
> -            dev = "/dev/%s/%s" %(vg, lv)
> -            found = 0
> -            theDev = dev
> -            node = "%s/%s" % (vg, lv)
> -            dmnode = "mapper/%s-%s" % (vg, lv)
> -            crypto = self.anaconda.id.partitions.encryptedDevices.get(dmnode)
> -            if crypto and not crypto.openDevice():
> -                theDev = "/dev/%s" % (crypto.getDevice(),)
> -            elif crypto:
> -                log.error("failed to open encrypted device %s" % dev)
> -
> -            fs = isys.readFSType(theDev)
> -            if fs is not None:
> -                try:
> -                    isys.mount(theDev, self.anaconda.rootPath, fs,
> -                               readOnly = True)
> -                    found = 1
> -                except SystemError:
> -                    pass
> -
> -            if found:
> -                if os.access (self.anaconda.rootPath + '/etc/fstab', os.R_OK):
> -                    (prod, ver) = getReleaseString(self.anaconda.rootPath)
> -
> -                    if upgradeany == 1 or self.anaconda.id.instClass.productUpgradable(prod, ver):
> -                        try:
> -                            label = isys.readFSLabel(theDev)
> -                        except:
> -                            label = None
> -
> -                        uuid = isys.readFSUuid(theDev)
> -                        rootparts.append ((theDev, fs, prod+" "+ver, label, uuid))
> -                isys.umount(self.anaconda.rootPath)
> -
> -        lvm.vgdeactivate()
> -
> -        # don't stop raid until after we've looked for lvm on top of it
> -        self.stopMdRaid()
> -
> -        drives = self.disks.keys()
> -        drives.sort()
> -
> -        protected = self.anaconda.id.storage.protectedPartitions
> -
> -        for drive in drives:
> -            disk = self.disks[drive]
> -            for part in disk.partitions:
> -                node = part.getDeviceNodeName()
> -                crypto = self.anaconda.id.partitions.encryptedDevices.get(node)
> -                if (part.active
> -                    and (part.getFlag(parted.PARTITION_RAID)
> -                         or part.getFlag(parted.PARTITION_LVM))):
> -                    continue
> -                elif part.fileSystem or crypto:
> -                    theDev = node
> -                    if part.fileSystem:
> -                        fstype = part.fileSystem.type
> -                    else:
> -                        fstype = None
> -
> -                    # parted doesn't tell ext4 from ext3
> -                    if fstype == "ext3": 
> -                        fstype = isys.readFSType(theDev)
> -
> -                    if crypto and not crypto.openDevice():
> -                        theDev = crypto.getDevice()
> -                        fstype = isys.readFSType("/dev/%s" % theDev)
> -                    elif crypto:
> -                        log.error("failed to open encrypted device %s" % node)
> -
> -                    if not fstype or fstype not in fsset.getUsableLinuxFs():
> -                        continue
> -
> -                    try:
> -                        isys.mount("/dev/%s" % (theDev,),
> -                                   self.anaconda.rootPath, fstype)
> -                        checkRoot = self.anaconda.rootPath
> -                    except SystemError:
> -                        continue
> -
> -                    if os.access (checkRoot + '/etc/fstab', os.R_OK):
> -                        (prod, ver) = getReleaseString(checkRoot)
> -
> -                        if upgradeany == 1 or self.anaconda.id.instClass.productUpgradable(prod, ver):
> -                            try:
> -                                label = isys.readFSLabel("/dev/%s" % theDev)
> -                            except:
> -                                label = None
> -
> -                            uuid = isys.readFSUuid("/dev/%s" % (theDev,))
> -                            rootparts.append (("/dev/%s" % (theDev,),
> -                                              fstype, prod+" "+ver, label, uuid))
> -
> -                    isys.umount(self.anaconda.rootPath)
> -
> -        return rootparts
> -
>      def driveList (self):
>          """Return the list of drives on the system."""
>          drives = map(lambda x: x.name, self.anaconda.id.storage.disks)
>          drives.sort (isys.compareDrives)
>          return drives
> -
> -    def savePartitions (self):
> -        """Write the partition tables out to the disks."""
> -        for disk in self.disks.values():
> -            if disk.device.path[5:].startswith("sd") and disk.lastPartitionNumber > 15:
> -                log.debug("not saving partition table of disk with > 15 partitions")
> -                del disk
> -                continue
> -
> -            log.info("disk.commit() for %s" % (disk.device.path,))
> -            try:
> -                disk.commit()
> -            except:
> -                # if this fails, remove the disk so we don't use it later
> -                # Basically if we get here, badness has happened and we want
> -                # to prevent tracebacks from ruining the day any more.
> -                del disk
> -                continue
> -
> -            # FIXME: this belongs in parted itself, but let's do a hack...
> -            if iutil.isX86() and disk.type == "gpt" and not iutil.isEfi():
> -                log.debug("syncing gpt to mbr for disk %s" % (disk.device.path,))
> -                iutil.execWithRedirect("gptsync", [disk.device.path,],
> -                                       stdout="/tmp/gptsync.log",
> -                                       stderr="/tmp/gptsync.err",
> -                                       searchPath = 1)
> -            del disk
> -        self.refreshDevices()
> -
> -    def _addDisk(self, drive, disk):
> -        log.debug("adding drive %s to disk list" % (drive,))
> -        self.initializedDisks[drive] = True
> -        self.disks[drive] = disk
> -
> -    def _removeDisk(self, drive, addSkip=True):
> -        msg = "removing drive %s from disk lists" % (drive,)
> -        if addSkip:
> -            msg += "; adding to skip list"
> -        log.debug(msg)
> -
> -        if self.disks.has_key(drive):
> -            del self.disks[drive]
> -        if addSkip:
> -            if self.initializedDisks.has_key(drive):
> -                del self.initializedDisks[drive]
> -            DiskSet.skippedDisks.append(drive)
> -
> -    def refreshDevices (self):
> -        """Reread the state of the disks as they are on disk."""
> -        self.closeDevices()
> -        self.disks = {}
> -        self.openDevices()
> -
> -    def closeDevices (self):
> -        """Close all of the disks which are open."""
> -        self.stopDmRaid()
> -        self.stopMPath()
> -        for disk in self.disks.keys():
> -            #self.disks[disk].close()
> -            del self.disks[disk]
> -        self.devicesOpen = False
> -
> -    def isDisciplineFBA (self, drive):
> -        if not iutil.isS390():
> -            return False
> -
> -        drive = drive.replace('/dev/', '')
> -
> -        if drive.startswith("dasd"):
> -            discipline = "/sys/block/%s/device/discipline" % (drive,)
> -            if os.path.isfile(discipline):
> -                try:
> -                    fp = open(discipline, "r")
> -                    lines = fp.readlines()
> -                    fp.close()
> -
> -                    if len(lines) == 1:
> -                        if lines[0].strip() == "FBA":
> -                            return True
> -                except:
> -                    log.error("failed to check discipline of %s" % (drive,))
> -                    pass
> -
> -        return False
> -
> -    def dasdFmt (self, drive = None):
> -        """Format dasd devices (s390)."""
> -
> -        if self.disks.has_key(drive):
> -            del self.disks[drive]
> -
> -        w = self.anaconda.intf.progressWindow (_("Initializing"),
> -                             _("Please wait while formatting drive %s...\n"
> -                               ) % (drive,), 100)
> -
> -        argList = [ "/sbin/dasdfmt",
> -                    "-y",
> -                    "-b", "4096",
> -                    "-d", "cdl",
> -                    "-F",
> -                    "-P",
> -                    "-f",
> -                    "/dev/%s" % (drive,)]
> -
> -        fd = os.open("/dev/null", os.O_RDWR | os.O_CREAT | os.O_APPEND)
> -        p = os.pipe()
> -        childpid = os.fork()
> -        if not childpid:
> -            os.close(p[0])
> -            os.dup2(p[1], 1)
> -            os.dup2(fd, 2)
> -            os.close(p[1])
> -            os.close(fd)
> -            os.execv(argList[0], argList)
> -            log.critical("failed to exec %s", argList)
> -            os._exit(1)
> -
> -        os.close(p[1])
> -
> -        num = ''
> -        sync = 0
> -        s = 'a'
> -        while s:
> -            try:
> -                s = os.read(p[0], 1)
> -                os.write(fd, s)
> -
> -                if s != '\n':
> -                    try:
> -                        num = num + s
> -                    except:
> -                        pass
> -                else:
> -                    if num:
> -                        val = string.split(num)
> -                        if (val[0] == 'cyl'):
> -                            # printf("cyl %5d of %5d |  %3d%%\n",
> -                            val = int(val[5][:-1])
> -                            w and w.set(val)
> -                            # sync every 10%
> -                            if sync + 10 <= val:
> -                                isys.sync()
> -                                sync = val
> -                    num = ''
> -            except OSError, args:
> -                (errno, str) = args
> -                if (errno != 4):
> -                    raise IOError, args
> -
> -        try:
> -            (pid, status) = os.waitpid(childpid, 0)
> -        except OSError, (num, msg):
> -            print(__name__, "waitpid:", msg)
> -
> -        os.close(fd)
> -
> -        w and w.pop()
> -
> -        if os.WIFEXITED(status) and (os.WEXITSTATUS(status) == 0):
> -            return 0
> -
> -        return 1
> -
> -    def _askForLabelPermission(self, intf, drive, clearDevs, initAll, ks):
> -        #Do not try to initialize device's part. table in rescue mode
> -        if self.anaconda.rescue:
> -            self._removeDisk(drive)
> -            return False
> -
> -        rc = 0
> -        if (ks and (drive in clearDevs) and initAll) or \
> -            self.isDisciplineFBA(drive):
> -            rc = 1
> -        elif intf:
> -            deviceFile = "/dev/" + drive
> -            dev = parted.getDevice(deviceFile)
> -
> -            msg = _("The partition table on device %s (%s %-0.f MB) was unreadable.\n\n"
> -                    "To create new partitions it must be initialized, "
> -                    "causing the loss of ALL DATA on this drive.\n\n"
> -                    "This operation will override any previous "
> -                    "installation choices about which drives to "
> -                    "ignore.\n\n"
> -                    "Would you like to initialize this drive, "
> -                    "erasing ALL DATA?") % (drive, dev.model, dev.getSize(unit="MB"),)
> -
> -            rc = intf.messageWindow(_("Warning"), msg, type="yesno")
> -
> -        if rc != 0:
> -            return True
> -
> -        self._removeDisk(drive)
> -        return False
> -
> -    def _labelDevice(self, drive):
> -        log.info("Reinitializing label for drive %s" % (drive,))
> -
> -        deviceFile = "/dev/" + drive
> -
> -        try:
> -            try:
> -                # FIXME: need the right fix for z/VM formatted dasd
> -                if iutil.isS390() and drive[:4] == "dasd" and \
> -                   not self.isDisciplineFBA(drive):
> -                    if self.dasdFmt(drive):
> -                        raise LabelError, drive
> -                    dev = parted.getDevice(deviceFile)
> -                    disk = parted.Disk(device=dev)
> -                else:
> -                    disk = labelDisk(self.anaconda.platform, deviceFile)
> -            except Exception, msg:
> -                log.error("parted error: %s" % (msg,))
> -                raise
> -        except:
> -            (type, value, tb) = sys.exc_info()
> -            stack = inspect.getinnerframes(tb)
> -            exn = exception.AnacondaExceptionDump(type, value, stack)
> -            lines = exn.__str__()
> -            for line in lines:
> -                log.error(line)
> -            self._removeDisk(drive)
> -            raise LabelError, drive
> -
> -        self._addDisk(drive, disk)
> -        return disk, dev
> -
> -    def openDevices (self):
> -        """Open the disks on the system and skip unopenable devices."""
> -
> -        if self.disks:
> -            return
> -        self.startMPath()
> -        self.startDmRaid()
> -
> -        intf = self.anaconda.intf
> -        zeroMbr = self.anaconda.id.partitions.zeroMbr
> -
> -        for drive in self.driveList():
> -            # ignoredisk takes precedence over clearpart (#186438).
> -            if drive in DiskSet.skippedDisks:
> -                continue
> -
> -            if DiskSet.exclusiveDisks != [] and \
> -                    drive not in DiskSet.exclusiveDisks:
> -                continue
> -
> -            if not isys.mediaPresent(drive):
> -                DiskSet.skippedDisks.append(drive)
> -                continue
> -
> -            disk = None
> -            dev = None
> -
> -            if self.initializedDisks.has_key(drive):
> -                if not self.disks.has_key(drive):
> -                    try:
> -                        dev = parted.getDevice("/dev/%s" % (drive,))
> -                        disk = parted.Disk(device=dev)
> -                        self._addDisk(drive, disk)
> -                    except:
> -                        self._removeDisk(drive)
> -                continue
> -
> -            ks = False
> -            clearDevs = []
> -            initAll = False
> -
> -            if self.anaconda.isKickstart:
> -                ks = True
> -                clearDevs = self.anaconda.id.ksdata.clearpart.drives
> -                initAll = self.anaconda.id.ksdata.clearpart.initAll
> -
> -            # FIXME: need the right fix for z/VM formatted dasd
> -            if iutil.isS390() \
> -                    and drive[:4] == "dasd" \
> -                    and isys.getDasdState(drive):
> -                try:
> -                    if not self._askForLabelPermission(intf, drive, clearDevs,
> -                            initAll, ks):
> -                        raise LabelError, drive
> -
> -                    disk, dev = self._labelDevice(drive)
> -                except:
> -                    continue
> -
> -            if initAll and ((clearDevs is None) or (len(clearDevs) == 0) \
> -                       or (drive in clearDevs)) and not flags.test \
> -                       and not hasProtectedPartitions(drive, self.anaconda):
> -                try:
> -                    disk, dev = self._labelDevice(drive)
> -                except:
> -                    continue
> -
> -            try:
> -                if not dev:
> -                    dev = parted.getDevice("/dev/%s" % (drive,))
> -                    disk = None
> -            except Exception, msg:
> -                log.debug("parted error: %s" % (msg,))
> -                self._removeDisk(drive, disk)
> -                continue
> -
> -            try:
> -                if not disk:
> -                    disk = parted.Disk(device=dev)
> -                    self._addDisk(drive, disk)
> -            except Exception, msg:
> -                recreate = 0
> -                if zeroMbr:
> -                    log.error("zeroMBR was set and invalid partition table "
> -                              "found on %s" % (dev.path[5:]))
> -                    recreate = 1
> -                else:
> -                    if not self._askForLabelPermission(intf, drive, clearDevs,
> -                            initAll, ks):
> -                        continue
> -
> -                    recreate = 1
> -
> -                if recreate == 1 and not flags.test:
> -                    try:
> -                        disk, dev = self._labelDevice(drive)
> -                    except:
> -                        continue
> -
> -            filter_partitions(disk, validateFsType)
> -
> -            # check for more than 15 partitions (libata limit)
> -            if drive.startswith('sd') and disk.lastPartitionNumber > 15:
> -                str = _("The drive /dev/%s has more than 15 partitions on it.  "
> -                        "The SCSI subsystem in the Linux kernel does not "
> -                        "allow for more than 15 partitons at this time.  You "
> -                        "will not be able to make changes to the partitioning "
> -                        "of this disk or use any partitions beyond /dev/%s15 "
> -                        "in %s") % (drive, drive, productName)
> -
> -                rc = intf.messageWindow(_("Warning"), str, 
> -                                    type="custom",
> -                                    custom_buttons = [_("_Reboot"),
> -                                                      _("_Continue")],
> -                                    custom_icon="warning")
> -                if rc == 0:
> -                    sys.exit(0)
> -
> -            # check that their partition table is valid for their architecture
> -            ret = checkDiskLabel(disk, intf)
> -            if ret == 1:
> -                self._removeDisk(drive)
> -            elif ret == -1:
> -                try:
> -                    disk, dev = self._labelDevice(drive)
> -                except:
> -                    pass
> -        self.devicesOpen = True
> -
> -    def partitionTypes (self):
> -        """Return list of (partition, partition type) tuples for all parts."""
> -        rc = []
> -        drives = self.disks.keys()
> -        drives.sort()
> -
> -        for drive in drives:
> -            disk = self.disks[drive]
> -            for part in disk.partitions:
> -                if part.type in (parted.PARTITION_NORMAL,
> -                                 parted.PARTITION_LOGICAL):
> -                    device = part.getDeviceNodeName()
> -                    if part.fileSystem:
> -                        ptype = part.fileSystem.type
> -                    else:
> -                        ptype = None
> -                    rc.append((device, ptype))
> -
> -        return rc
> -
> -    def diskState (self):
> -        """Print out current disk state.  DEBUG."""
> -        rc = ""
> -        for disk in self.disks.values():
> -            rc = rc + ("%s: %s length %ld, maximum "
> -                       "primary partitions: %d\n" %
> -                       (disk.device.path,
> -                        disk.device.model,
> -                        disk.device.length,
> -                        disk.maxPrimaryPartitionCount))
> -
> -            for part in disk.partitions:
> -                rc = rc + ("Device    Type         Filesystem   Start      "
> -                           "End        Length        Flags\n")
> -                rc = rc + ("------    ----         ----------   -----      "
> -                           "---        ------        -----\n")
> -                if not part.type & parted.PARTITION_METADATA:
> -                    device = ""
> -                    fs_type_name = ""
> -                    if part.number > 0:
> -                        device = part.getDeviceNodeName()
> -                    if part.fileSystem:
> -                        fs_type_name = part.fileSystem.type
> -                    partFlags = part.getFlagsAsString()
> -                    rc = rc + ("%-9s %-12s %-12s %-10ld %-10ld %-10ld %7s\n"
> -                               % (device, part.type.name, fs_type_name,
> -                              part.geometry.start, part.geometry.end,
> -                              part.geometry.length, partFlags))
> -
> -        return rc
> -
> -    def checkNoDisks(self):
> -        """Check that there are valid disk devices."""
> -        if len(self.disks.keys()) == 0:
> -            self.anaconda.intf.messageWindow(_("No Drives Found"),
> -                               _("An error has occurred - no valid devices were "
> -                                 "found on which to create new file systems. "
> -                                 "Please check your hardware for the cause "
> -                                 "of this problem."))
> -            return True
> -        return False
> -
> -
> -    def exceptionDisks(self, anaconda, probe=True):
> -        if probe:
> -            isys.flushDriveDict()
> -            self.refreshDevices()
> -
> -        drives = []
> -        for d in isys.removableDriveDict().items():
> -            func = lambda p: p.active and not p.getFlag(parted.PARTITION_RAID) and not p.getFlag(parted.PARTITION_LVM) and p.fileSystem.type in ["ext3", "ext2", "fat16", "fat32"]
> -
> -            disk = self.disks[d[0]]
> -            parts = filter_partitions(disk, func)
> -
> -            if len(parts) == 0:
> -                drives.append(d)
> -            else:
> -                for part in parts:
> -                    name = "%s%s" % (part.disk.device.path, part.number)
> -                    drives.append((os.path.basename(name), d[1]))
> -
> -        return drives

_______________________________________________
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