summaryrefslogtreecommitdiffstats
path: root/textw
diff options
context:
space:
mode:
authorChris Lumens <clumens@redhat.com>2008-11-19 14:29:08 -0500
committerChris Lumens <clumens@redhat.com>2009-02-09 11:30:36 -0500
commit820b3c654e13d95fbba017b69f8c60c2083b1a96 (patch)
tree638e17c3382803d7c32466adb59b68dc34780678 /textw
parenta3570474c83aea26477b9826e1201b4d68e9476a (diff)
downloadanaconda-820b3c654e13d95fbba017b69f8c60c2083b1a96.tar.gz
anaconda-820b3c654e13d95fbba017b69f8c60c2083b1a96.tar.xz
anaconda-820b3c654e13d95fbba017b69f8c60c2083b1a96.zip
Remove interactive partitioning. Now you only get autopart.
You can, however, still select the drives to use and the basic layout to use. You can also still use kickstart.
Diffstat (limited to 'textw')
-rw-r--r--textw/partition_text.py1484
1 files changed, 11 insertions, 1473 deletions
diff --git a/textw/partition_text.py b/textw/partition_text.py
index f11222e40..77f937dcc 100644
--- a/textw/partition_text.py
+++ b/textw/partition_text.py
@@ -44,1451 +44,6 @@ _ = lambda x: gettext.ldgettext("anaconda", x)
import logging
log = logging.getLogger("anaconda")
-# sanity checking for various numeric input boxes
-def invalidInteger(str):
- ints = string.digits
- if str == "":
- return _("Must specify a value")
- for n in str:
- if n not in ints:
- return _("Requested value is not an integer")
- if len(str) > 9:
- return _("Requested value is too large")
-
- return None
-
-class PartitionWindow:
- def _findFirstUnused(self, dict):
- keys = dict.keys()
- i = 0
-
- while True:
- if i in keys:
- i += 1
- else:
- return i
-
- def populate(self):
- # XXX we really should separate this stuff out into interface
- # independent bits...
- self.lb.clear()
-
- # first do LVM
- lvmrequests = self.partitions.getLVMRequests()
- if lvmrequests:
- for vgname in lvmrequests.keys():
- vgrequest = self.partitions.getRequestByVolumeGroupName(vgname)
- size = vgrequest.getActualSize(self.partitions, self.diskset)
- device = "VG %s" % (vgname,)
- self.lb.append(["%s" % (device,),
- "", "", "%dM" %(size),
- "VolGroup", ""], str(vgrequest.uniqueID),
- [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
-
- for lvrequest in lvmrequests[vgname]:
- lvdevice = "LV %s" % (lvrequest.logicalVolumeName,)
- if lvrequest.fstype and lvrequest.mountpoint:
- mntpt = lvrequest.mountpoint
- else:
- mntpt = ""
- lvsize = lvrequest.getActualSize(self.partitions, self.diskset)
- ptype = lvrequest.fstype.getName()
- self.lb.append(["%s" %(lvdevice),
- "", "", "%dM" %(lvsize),
- "%s" %(ptype), "%s" %(mntpt)], str(lvrequest.uniqueID),
- [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
-
-
- # next, add the raid partitions
- self.raidminors = {}
- raidrequests = self.partitions.getRaidRequests()
- if raidrequests:
- for request in raidrequests:
- if request and request.mountpoint:
- mount = request.mountpoint
- else:
- mount = ""
-
- if request.fstype:
- ptype = request.fstype.getName()
- else:
- ptype = _("None")
-
- try:
- self.raidminors[request.raidminor] = True
- device = "/dev/md%d" % (request.raidminor,)
- except:
- minor = self._findFirstUnused(self.raidminors)
- self.raidminors[minor] = True
- device = _("RAID Device %s" %(str(minor)))
-
- size = request.size
- self.lb.append(["%s" %(device),
- "", "", "%dM" %(size),
- "%s" %(ptype), "%s" %(mount)], str(request.uniqueID),
- [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
-
- # next, add the drives and partitions to the list
- drives = self.diskset.disks.keys()
- drives.sort()
- for drive in drives:
- disk = self.diskset.disks[drive]
- sectorsPerCyl = disk.dev.heads * disk.dev.sectors
-
- self.lb.append([devify(drive),"","","","",""], None)
-
- extendedParent = None
- part = disk.next_partition()
- while part:
- if part.type & parted.PARTITION_METADATA:
-# print("partition %s has type %d" %(get_partition_name(part), part.type))
- part = disk.next_partition(part)
- continue
- # ignore the tiny < 1 MB partitions (#119479)
- if getPartSizeMB(part) <= 1.0:
- if not part.is_active() or not part.get_flag(parted.PARTITION_BOOT):
- part = disk.next_partition(part)
- continue
-
- device = get_partition_name(part)
- request = self.partitions.getRequestByDeviceName(device)
- if request and request.mountpoint:
- mount = request.mountpoint
- else:
- mount = ""
-
- if part.type & parted.PARTITION_FREESPACE:
- ptype = _("Free space")
- elif part.type & parted.PARTITION_EXTENDED:
- ptype = _("Extended")
- elif part.get_flag(parted.PARTITION_RAID) == 1:
- ptype = _("software RAID")
- elif part.fs_type:
- if request and request.fstype != None:
- ptype = request.fstype.getName()
- if ptype == "foreign":
- ptype = map_foreign_to_fsname(part.native_type)
- else:
- ptype = part.fs_type.name
- else:
- if request and request.fstype != None:
- ptype = request.fstype.getName()
- if ptype == "foreign":
- ptype = map_foreign_to_fsname(part.native_type)
- else:
- ptype = _("None")
-
- start = (part.geom.start / sectorsPerCyl) + 1
- end = (part.geom.end / sectorsPerCyl) + 1
- size = (part.geom.length * disk.dev.sector_size / (1024.0 * 1024.0))
-
- if part.type & parted.PARTITION_EXTENDED:
- if extendedParent:
- raise RuntimeError, ("can't handle more than"
- "one extended partition per disk")
- extendedParent = part.num
- indent = 2 * " "
- elif part.type & parted.PARTITION_LOGICAL:
- if not extendedParent:
- raise RuntimeError("crossed logical partition "
- "before extended")
- indent = 4 * " "
- else:
- indent = 2 * " "
-
- if part.type & parted.PARTITION_FREESPACE:
- self.lb.append(["%s%s" %(indent, _("Free space")),
- "%d" %(start),
- "%d" %(end),
- "%dM" %(size),
- "%s" %(ptype),
- ""], part,
- [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
-
- else:
- dev = devify(get_partition_name(part))
- # save some space per #90838
- if dev.startswith("/dev/iseries/"):
- dev = dev[13:]
- elif dev.startswith("/dev/"):
- dev = dev[5:]
- self.lb.append(["%s%s" %(indent, dev),
- "%d" %(start),
- "%d" %(end),
- "%dM" %(size),
- "%s" %(ptype),
- "%s" %(mount)], part,
- [LEFT, RIGHT, RIGHT, RIGHT, LEFT, LEFT])
- part = disk.next_partition(part)
-
- def refresh(self):
- # XXX need some way to stay at the same place in the list after
- # repopulating
-
- # XXXX - Backup some info which doPartitioning munges if it fails
- origInfoDict = {}
- for request in self.partitions.requests:
- try:
- origInfoDict[request.uniqueID] = (request.requestSize, request.currentDrive)
- except:
- pass
-
- try:
- doPartitioning(self.diskset, self.partitions)
- rc = 0
- except PartitioningError, msg:
- try:
- for request in self.partitions.requests:
- if request.uniqueID in origInfoDict.keys():
- (request.requestSize, request.currentDrive) = origInfoDict[request.uniqueID]
- except:
- log.error("Failed to restore original info")
-
- self.intf.messageWindow(_("Error Partitioning"),
- _("Could not allocate requested partitions: %s.") % (msg))
- rc = -1
- except PartitioningWarning, msg:
- rc = ButtonChoiceWindow(self.screen, _("Warning"), _("Warning: %s") %(msg),
- buttons = [ (_("Modify Partition"), "modify"), (_("Add anyway"), "add") ])
-
- if rc == "modify":
- rc = -1
- else:
- rc = 0
- reqs = self.partitions.getBootableRequest()
- if reqs:
- for req in reqs:
- req.ignoreBootConstraints = 1
-
- self.populate()
- return rc
-
-
- def fstypeSet(self, obj):
- (current, entry) = obj
- flag = FLAGS_RESET
- if not current.isMountable():
- if entry.value() != _("<Not Applicable>"):
- self.oldMount = entry.value()
- entry.set(_("<Not Applicable>"))
- flag = FLAGS_SET
- elif entry.value() == _("<Not Applicable>"):
- if self.oldMount:
- entry.set(self.oldMount)
- else:
- entry.set("")
-
- entry.setFlags(FLAG_DISABLED, flag)
-
- def fstypeSetCB(self, obj):
- (listbox, entry) = obj
- self.fstypeSet((listbox.current(), entry))
-
- # make the entry for the mount point and its label
- def makeMountEntry(self, request):
- mountgrid = Grid(2, 1)
- mountLbl = Label(_("Mount Point:"))
- mountgrid.setField(mountLbl, 0, 0, (0,0,0,0), anchorLeft = 1)
- mountpoint = request.mountpoint
- if mountpoint:
- mount = Entry(20, mountpoint)
- else:
- mount = Entry(20, "")
- mountgrid.setField(mount, 1, 0, anchorRight = 1, growx = 1)
- if request.fstype and not request.fstype.isMountable():
- mount.setFlags(FLAG_DISABLED, FLAGS_SET)
- mount.set(_("<Not Applicable>"))
- return (mount, mountgrid)
-
- # make the entry for the lv name and it's label
- def makeLVNameEntry(self, request):
- lvnamegrid = Grid(2, 1)
- lvnameLbl = Label(_("Logical Volume Name:"))
- lvnamegrid.setField(lvnameLbl, 0, 0, (0,0,0,0), anchorLeft = 1)
- lvn = request.logicalVolumeName
- if lvn:
- lvname = Entry(20, lvn)
- else:
- lvname = Entry(20, "")
- lvnamegrid.setField(lvname, 1, 0, anchorRight = 1, growx = 1)
- if request.preexist:
- lvname.setFlags(FLAG_DISABLED, FLAGS_SET)
- return (lvname, lvnamegrid)
-
- # make the size entry for a logical volume
- def makeLVSize(self, request):
- grid = Grid(3, 1)
- lbl = Label(_("Size (MB):"))
- grid.setField(lbl, 0, 0, (0,0,0,0), anchorLeft = 1)
- if request.size:
- size = Entry(8, "%d" %(request.size,))
- else:
- size = Entry(8, "")
- grid.setField(size, 1, 0, anchorRight = 1, growx = 1)
-# maxLbl = Label(_("(Max is %s MB") %(maxlv,))
-# grid.setField(maxLbl, 2, 0, anchorRight = 1)
- if request.preexist:
- size.setFlags(FLAG_DISABLED, FLAGS_SET)
- return (size, grid)
-
-
- # make the list of available filesystems and its label
- def makeFsList(self, request, usecallback=1, uselabel=1, usetypes=None,
- ignorefs = None):
- subgrid = Grid(1, 2)
- row = 0
- # filesystem type selection
- if uselabel:
- typeLbl = Label(_("File System type:"))
- subgrid.setField(typeLbl, 0, row)
- row = row + 1
-
- fstype = Listbox(height=2, scroll=1)
- types = fileSystemTypeGetTypes()
- if usetypes:
- names = usetypes
- else:
- names = types.keys()
- names.sort()
- for name in names:
- if not fileSystemTypeGet(name).isSupported():
- continue
-
- if ignorefs and name in ignorefs:
- continue
-
- if fileSystemTypeGet(name).isFormattable():
- fstype.append(name, types[name])
- if request.fstype and request.fstype.getName() in names and \
- request.fstype.isFormattable() and request.fstype.isSupported():
- fstype.setCurrent(request.fstype)
- else:
- fstype.setCurrent(fileSystemTypeGetDefault())
- subgrid.setField(fstype, 0, row)
- if usecallback:
- fstype.setCallback(self.fstypeSetCB, (fstype, self.mount))
- return (fstype, subgrid)
-
-
- # make the list of drives
- def makeDriveList(self, request):
- subgrid = Grid(1, 2)
- driveLbl = Label(_("Allowable Drives:"))
- subgrid.setField(driveLbl, 0, 0)
- disks = self.diskset.disks.keys()
- disks.sort()
- drivelist = CheckboxTree(height=2, scroll=1)
- if not request.drive:
- for disk in disks:
- drivelist.append(disk, selected = 1)
- else:
- for disk in disks:
- if disk in request.drive:
- selected = 1
- else:
- selected = 0
- drivelist.append(disk, selected = selected)
- subgrid.setField(drivelist, 0, 1)
- return (drivelist, subgrid)
-
-
- def makeSizeEntry(self, request):
- # requested size
- sizegrid = Grid(2, 1)
- sizeLbl = Label(_("Size (MB):"))
- sizegrid.setField(sizeLbl, 0, 0, (0,0,2,0))
- if request.size:
- origsize = "%s" %(int(request.size))
- else:
- origsize = "1"
- size = Entry(7, origsize)
- sizegrid.setField(size, 1, 0, growx = 1, anchorLeft = 1)
- return (size, sizegrid)
-
-
- def sizeOptionsChange(self, (sizeopts, limitentry)):
- flag = FLAGS_RESET
- if sizeopts.getSelection() != "limit":
- flag = FLAGS_SET
- limitentry.setFlags(FLAG_DISABLED, flag)
-
-
- def makeSizeOptions(self, request):
- # size options
- optiongrid = Grid(2, 3)
- sizeopts = RadioGroup()
- limitdef = 0
- maxdef = 0
- fixeddef = 0
- limitentrydef = "1"
- if request.grow:
- if request.maxSizeMB != None:
- limitdef = 1
- limitentrydef = "%s" %(int(request.maxSizeMB))
- else:
- maxdef = 1
- else:
- fixeddef = 1
- fixed = sizeopts.add(_("Fixed Size:"), "fixed", fixeddef)
- optiongrid.setField(fixed, 0, 0, anchorRight = 1)
- limit = sizeopts.add(_("Fill maximum size of (MB):"), "limit", limitdef)
- optiongrid.setField(limit, 0, 1, anchorRight = 1)
- limitentry = Entry(5, limitentrydef)
- optiongrid.setField(limitentry, 1, 1, (1,0,0,0), anchorRight = 1)
- max = sizeopts.add(_("Fill all available space:"), "max", maxdef)
- optiongrid.setField(max, 0, 2, anchorRight = 1)
- fixed.setCallback(self.sizeOptionsChange, (sizeopts, limitentry))
- limit.setCallback(self.sizeOptionsChange, (sizeopts, limitentry))
- max.setCallback(self.sizeOptionsChange, (sizeopts, limitentry))
- self.sizeOptionsChange((sizeopts, limitentry))
- return (sizeopts, limitentry, optiongrid)
-
-
- # the selected cylinder boundary type changed
- def cylOptionsChange(self, (cylopts, end, size)):
- if cylopts.getSelection() == "end":
- end.setFlags(FLAG_DISABLED, FLAGS_RESET)
- size.setFlags(FLAG_DISABLED, FLAGS_SET)
- elif cylopts.getSelection() == "size":
- end.setFlags(FLAG_DISABLED, FLAGS_SET)
- size.setFlags(FLAG_DISABLED, FLAGS_RESET)
-
-
- # make the list of cylinder stuff
- def makeCylEntries(self, request):
- subgrid = Grid(2, 4)
-
- startLbl = Label(_("Start Cylinder:"))
- subgrid.setField(startLbl, 0, 0, (0,0,2,0), anchorRight=1)
- start = "%s" %(int(request.start))
- start = Entry(7, start)
- subgrid.setField(start, 1, 0, anchorLeft=1)
-
- cylopts = RadioGroup()
- enddef = 1
- sizedef = 0
- if not request.end:
- enddef = 0
- sizedef = 1
-
- endrb = cylopts.add(_("End Cylinder:"), "end", enddef)
- subgrid.setField(endrb, 0, 1, (0,0,2,0), anchorRight=1)
- end = Entry(7)
- if request.end:
- end.set("%s" %(int(request.end)))
- subgrid.setField(end, 1, 1, anchorLeft=1)
-
- sizerb = cylopts.add(_("Size (MB):"), "size", sizedef)
- subgrid.setField(sizerb, 0, 2, (0,0,2,0), anchorRight=1)
- size = Entry(7)
- if request.size:
- size.set("%s" %(int(request.size)))
- subgrid.setField(size, 1, 2, anchorLeft=1)
-
- endrb.setCallback(self.cylOptionsChange, (cylopts, end, size))
- sizerb.setCallback(self.cylOptionsChange, (cylopts, end, size))
- self.cylOptionsChange((cylopts, end, size))
-
- return (cylopts, start, end, size, subgrid)
-
- # make the list of VGs
- def makeVGList(self, request):
- subgrid = Grid(1, 2)
- vgLbl = Label(_("Volume Group:"))
- subgrid.setField(vgLbl, 0, 0)
- vgs = self.partitions.getLVMVGRequests()
- if len(vgs) > 3:
- scroll = 1
- else:
- scroll = 0
- vgBox = Listbox(height=3, scroll=scroll)
- current = None
- for vg in vgs:
- vgBox.append(vg.volumeGroupName, vg)
- if vg.uniqueID == request.volumeGroup:
- current = vg
- if request.volumeGroup is not None:
- vgBox.setCurrent(current)
-
- subgrid.setField(vgBox, 0, 1)
- return (vgBox, subgrid)
-
- # make the list of RAID levels
- def makeRaidList(self, request):
- subgrid = Grid(1, 2)
- raidLbl = Label(_("RAID Level:"))
- subgrid.setField(raidLbl, 0, 0)
- if len(availRaidLevels) > 3:
- scroll = 1
- else:
- scroll = 0
- raidBox = Listbox(height=3, scroll=scroll)
- for level in availRaidLevels:
- raidBox.append(level, level)
- if request.raidlevel:
- raidBox.setCurrent(request.raidlevel)
- subgrid.setField(raidBox, 0, 1)
- return (raidBox, subgrid)
-
-
- # make the list of drives for the RAID
- def makeRaidDriveList(self, request):
- subgrid = Grid(1, 2)
- driveLbl = Label(_("RAID Members:"))
- subgrid.setField(driveLbl, 0, 0)
- disks = self.diskset.disks.keys()
- drivelist = CheckboxTree(height=2, scroll=1)
- avail = self.partitions.getAvailRaidPartitions(request, self.diskset)
-
- # XXX
- if not request.raidmembers:
- for (part, size, used) in avail:
- drivelist.append(part, part, 1)
- else:
- for (part, size, used) in avail:
- drivelist.append(part, part, used)
- subgrid.setField(drivelist, 0, 1)
- return (drivelist, subgrid)
-
-
- def makeSpareEntry(self, request):
- subgrid = Grid(2, 1)
- label = Label(_("Number of spares?"))
- subgrid.setField(label, 1, 0)
- entry = Entry(3)
- if request.raidspares:
- entry.set(str(request.raidspares))
- else:
- entry.set("0")
- subgrid.setField(entry, 0, 0, (0,0,1,0))
- return (entry, subgrid)
-
- def fsOptionsGrid(self, origrequest, newfstype):
- subgrid = Grid(2, 4)
- # filesystem type selection
- srow = 0
- typeLbl = Label(_("File System Type:"))
- subgrid.setField(typeLbl, 0, srow, (0,0,0,1), anchorLeft = 1)
- ptype = origrequest.fstype.getName()
- if ptype == "foreign":
- part = get_partition_by_name(self.diskset.disks, origrequest.device)
- if part is not None:
- ptype = map_foreign_to_fsname(part.native_type)
- else:
- pytype = _("Foreign")
- type = Label(ptype)
- subgrid.setField(type, 1, srow, (0,0,0,1), anchorRight = 1)
- srow = srow +1
- if origrequest.type != REQUEST_NEW and origrequest.fslabel:
- fsLbl = Label(_("File System Label:"))
- subgrid.setField(fsLbl, 0, srow, (0,0,0,1), anchorLeft = 1)
- label = Label(origrequest.fslabel)
- subgrid.setField(label, 1, srow, (0,0,0,1), anchorRight = 1)
- srow = srow + 1
-
- sizeLbl = Label(_("Size (MB):"))
- subgrid.setField(sizeLbl, 0, srow, (0,0,0,1), anchorLeft = 1)
- size = Label("%s" %(int(origrequest.size)))
- subgrid.setField(size, 1, srow, (0,0,0,1), anchorRight = 1)
- srow = srow + 1
- tmpLbl = Label(_("File System Option:"))
- subgrid.setField(tmpLbl, 0, srow, (0,0,0,1), anchorLeft = 1)
- if origrequest.format:
- fsoptLbl = Label(_("Format as %s") % (newfstype.getName()))
- elif origrequest.migrate:
- fsoptLbl = Label(_("Migrate to %s") %(newfstype.getName()))
- else:
- fsoptLbl = Label(_("Leave unchanged"))
- subgrid.setField(fsoptLbl, 1, srow, (0,0,0,1), anchorLeft = 1)
-
- return (subgrid, fsoptLbl, type)
-
-
- def fsOptionsDialog(self, origrequest, format, migrate, newfstype):
-
- def formatChanged((formatrb)):
- flag = FLAGS_SET
- if formatrb.selected():
- flag = FLAGS_RESET
-
- poplevel = GridFormHelp(self.screen, _("File System Options"),
- "fsoption", 1, 6)
- row = 0
- poplevel.add(TextboxReflowed(40, _("Please choose how you would "
- "like to prepare the file system "
- "on this partition.")), 0, 0)
- row = row + 1
- subgrid = Grid(2, 5)
- srow = 0
-
- noformatrb = SingleRadioButton(_("Leave unchanged (preserve data)"),
- None, not format and not migrate)
- subgrid.setField(noformatrb, 0, srow, (0,0,0,1),anchorLeft = 1)
-
- srow = srow + 1
- if format:
- forflag = 1
- else:
- forflag = 0
- formatrb = SingleRadioButton(_("Format as:"), noformatrb, forflag)
- formatrb.setCallback(formatChanged, (formatrb))
- noformatrb.setCallback(formatChanged, (formatrb))
-
- subgrid.setField(formatrb, 0, srow, (0,0,0,1), anchorLeft = 1)
-
- (fortype, forgrid) = self.makeFsList(origrequest, usecallback = 0,
- uselabel = 0)
- if newfstype and newfstype.isFormattable() and \
- newfstype.getName() in fileSystemTypeGetTypes().keys() and \
- newfstype.isSupported():
- fortype.setCurrent(newfstype)
- subgrid.setField(forgrid, 1, srow, (0,0,0,1))
-
- if origrequest.origfstype and origrequest.origfstype.isMigratable():
- srow = srow + 1
- if migrate:
- migflag = 1
- else:
- migflag = 0
- migraterb = SingleRadioButton(_("Migrate to:"), formatrb, migflag)
- migraterb.setCallback(formatChanged, (formatrb))
- subgrid.setField(migraterb, 0, srow, (0,0,0,1), anchorLeft = 1)
-
- migtypes = origrequest.origfstype.getMigratableFSTargets()
-
- (migtype, miggrid) = self.makeFsList(origrequest, usecallback = 0,
- uselabel = 0,
- usetypes = migtypes)
-
- if newfstype and newfstype.getName() in migtypes:
- migtype.setCurrent(newfstype)
- subgrid.setField(miggrid, 1, srow, (0,0,0,1))
- else:
- migraterb = None
-
- poplevel.add(subgrid, 0, row, (0,1,0,1))
-
- row = row + 1
-
- formatChanged((formatrb))
-
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON))
- poplevel.add(popbb, 0, row, (0,0,0,0), growx = 1)
-
- while 1:
- res = poplevel.run()
-
- if popbb.buttonPressed(res) == 'cancel':
- self.screen.popWindow()
- return (format, migrate, newfstype)
-
- if noformatrb.selected():
- format = 0
- migrate = 0
- newfstype = origrequest.origfstype
- elif formatrb and formatrb.selected():
- format = 1
- migrate = 0
- newfstype = fortype.current()
- elif migraterb and migraterb.selected():
- format = 0
- migrate = 1
- newfstype = migtype.current()
-
- self.screen.popWindow()
-
- return (format, migrate, newfstype)
-
- def shutdownUI(self):
- # XXX remove parted object refs
- # need to put in clear() method for checkboxtree in snack
- if self.drivelist:
- self.drivelist.key2item = {}
- self.drivelist.item2key = {}
-
- # isNew implies that this request has never been successfully used before
- def editPartitionRequest(self, origrequest, isNew = 0):
- self.oldMount = None
-
- poplevel = GridFormHelp(self.screen,_("Add Partition"),"addpart", 1, 6)
-
- # mount point entry
- row = 0
- (self.mount, mountgrid) = self.makeMountEntry(origrequest)
- poplevel.add(mountgrid, 0, row)
-
- row = row + 1
-
- self.drivelist = None
- if origrequest.type == REQUEST_NEW:
- subgrid = Grid(2, 1)
- (fstype, fsgrid) = self.makeFsList(origrequest)
- subgrid.setField(fsgrid, 0, 0, anchorLeft = 1, anchorTop=1)
-
- if origrequest.start == None:
- (self.drivelist, drivegrid) = self.makeDriveList(origrequest)
- subgrid.setField(drivegrid, 1, 0, (2,0,0,0), anchorRight=1, anchorTop=1)
- poplevel.add(subgrid, 0, row, (0,1,0,0), growx=1)
-
- # size stuff
- row = row + 1
-
- allsize = Grid(2, 1)
- (size, sizegrid) = self.makeSizeEntry(origrequest)
- allsize.setField(sizegrid, 0, 0, anchorTop = 1)
-
- (sizeopts, limitentry, optiongrid) = self.makeSizeOptions(origrequest)
- allsize.setField(optiongrid, 1, 0)
-
- poplevel.add(allsize, 0, row, (0,1,0,0), growx=1)
- else: # explicit add via cylinder
- poplevel.add(subgrid, 0, row, (0,1,0,0))
-
- row = row + 1
- (cylopts, start, end, size, cylgrid) = self.makeCylEntries(origrequest)
- poplevel.add(cylgrid, 0, row, (0,1,0,0))
-
- # primary
- # XXX need to see if cylinder range is in extended or not
- row = row + 1
- primary = Checkbox(_("Force to be a primary partition"))
- # only show if we have something other than primary
- if not self.diskset.onlyPrimaryParts():
- poplevel.add(primary, 0, row, (0,1,0,0))
- row = row + 1
-
- fsoptLbl = None
-
- elif origrequest.type == REQUEST_VG:
- self.intf.messageWindow(_("Not Supported"),
- _("You can only edit LVM Volume Groups "
- "in the graphical installer."))
- return
-
- elif (origrequest.type == REQUEST_LV or origrequest.type == REQUEST_PREEXIST) and origrequest.fstype:
-
- # set some defaults
- format = origrequest.format
- migrate = origrequest.migrate
- newfstype = origrequest.fstype
-
- (subgrid, fsoptLbl, fstypeLbl) = self.fsOptionsGrid(origrequest, newfstype)
- poplevel.add(subgrid, 0, row, (0,1,0,0))
-
-
- row = row + 1
- if origrequest.type == REQUEST_NEW or origrequest.getProtected():
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON))
- else:
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON,
- (_("File System Options"), "fsopts"),
- TEXT_CANCEL_BUTTON))
- poplevel.add(popbb, 0, row, (0,1,0,0), growx = 1)
-
- while 1:
-
- res = poplevel.run()
-
- # if the user hit cancel, do nothing
- if popbb.buttonPressed(res) == 'cancel':
- self.screen.popWindow()
- return
-
- if popbb.buttonPressed(res) == 'fsopts':
- (format, migrate, newfstype) = self.fsOptionsDialog(origrequest, format, migrate, newfstype)
- self.fstypeSet((newfstype, self.mount))
- fstypeLbl.setText(newfstype.getName())
-
- if fsoptLbl:
- if format:
- fsoptLbl.setText(_("Format as %s") % (newfstype.getName()))
- elif migrate:
- fsoptLbl.setText(_("Migrate to %s") %(newfstype.getName()))
- else:
- fsoptLbl.setText(_("Leave unchanged"))
-
- continue
-
- if origrequest.type == REQUEST_NEW:
- filesystem = fstype.current()
-
- if primary.selected():
- primonly = True
- else:
- primonly = None
-
- request = copy.copy(origrequest)
- request.fstype = filesystem
- if request.fstype.isMountable():
- request.mountpoint = self.mount.value()
- else:
- request.mountpoint = None
- request.format = True
- request.primary = primonly
-
- if origrequest.start == None:
- if invalidInteger(size.value()):
- self.intf.messageWindow(_("Invalid Entry for Partition Size"),
- invalidInteger(size.value()))
- continue
- request.size = int(size.value())
-
- growtype = sizeopts.getSelection()
- if growtype == "fixed":
- grow = None
- else:
- grow = True
- if growtype == "limit":
- if invalidInteger(limitentry.value()):
- self.intf.messageWindow(_("Invalid Entry for Maximum Size"),
- invalidInteger(limitentry.value()))
- continue
-
- maxsize = int(limitentry.value())
- else:
- maxsize = None
- request.grow = grow
- request.maxSizeMB = maxsize
-
- if len(self.drivelist.getSelection()) == len(self.diskset.disks.keys()):
- allowdrives = None
- else:
- allowdrives = []
- for i in self.drivelist.getSelection():
- allowdrives.append(i)
- request.drive = allowdrives
- else:
- if invalidInteger(start.value()):
- self.intf.messageWindow(_("Invalid Entry for Starting Cylinder"),
- invalidInteger(start.value()))
- continue
-
- request.start = int(start.value())
-
- cyltype = cylopts.getSelection()
- if cyltype == "end":
- if invalidInteger(end.value()):
- self.intf.messageWindow(_("Invalid Entry for End Cylinder"),
- invalidInteger(end.value()))
- continue
-
- request.end = int(end.value())
- request.size = None
- elif cyltype == "size":
- if invalidInteger(size.value()):
- self.intf.messageWindow(_("Invalid Entry for Partition Size"),
- invalidInteger(size.value()))
- continue
- request.end = None
- request.size = int(size.value())
- else: # can't ever get here
- raise RuntimeError, "Selected a way of partitioning by cylinder that's not supported"
-
- err = request.sanityCheckRequest(self.partitions)
- if err:
- self.intf.messageWindow(_("Error With Request"),
- "%s" % (err))
- continue
- else:
- request = copy.copy(origrequest)
-
- if request.type == REQUEST_PREEXIST or request.type == REQUEST_LV:
- request.fstype = newfstype
-
- if request.fstype.isMountable():
- request.mountpoint = self.mount.value()
- else:
- request.mountpoint = None
-
- if request.type == REQUEST_PREEXIST or request.type == REQUEST_LV:
- request.format = format
- request.migrate = migrate
- request.fstype = newfstype
-
- err = request.sanityCheckRequest(self.partitions)
- if err:
- self.intf.messageWindow(_("Error With Request"),
- "%s" % (err))
- continue
-
- if (not request.format and request.mountpoint
- and request.formatByDefault()):
- if not queryNoFormatPreExisting(self.intf):
- continue
-
- if not isNew:
- self.partitions.removeRequest(origrequest)
-
- self.partitions.addRequest(request)
- if self.refresh():
- # the add failed; remove what we just added and put
- # back what was there if we removed it
- self.partitions.removeRequest(request)
- if not isNew:
- self.partitions.addRequest(origrequest)
- if self.refresh():
- # this worked before and doesn't now...
- raise RuntimeError, "Returning partitions to state prior to edit failed"
- else:
- break
-
- # clean up
- self.shutdownUI()
- self.screen.popWindow()
-
- # isNew implies that this request has never been successfully used before
- def editRaidRequest(self, raidrequest, isNew = 0):
- preexist = raidrequest and raidrequest.preexist
- if preexist:
- tmpstr = _("Edit RAID Device")
- else:
- tmpstr = _("Make RAID Device")
- poplevel = GridFormHelp(self.screen, tmpstr, "makeraid", 1, 6)
-
- # mount point entry
- row = 0
- (self.mount, mountgrid) = self.makeMountEntry(raidrequest)
- poplevel.add(mountgrid, 0, row)
- row = row + 1
-
- # initialize holder for temporary mount point value
- self.oldMount = None
-
- if preexist:
- # set some defaults
- format = raidrequest.format
- migrate = raidrequest.migrate
- newfstype = raidrequest.fstype
-
- (subgrid, fsoptLbl, fstypeLbl) = self.fsOptionsGrid(raidrequest, newfstype)
- poplevel.add(subgrid, 0, row, (0,1,0,0))
- self.drivelist = None
- else:
- subgrid = Grid(2, 1)
- (fstype, fsgrid) = self.makeFsList(raidrequest, ignorefs = ["software RAID", "PPC PReP Boot", "Apple Bootstrap"])
- subgrid.setField(fsgrid, 0, 0, anchorLeft = 1, anchorTop=1)
- (raidtype, raidgrid) = self.makeRaidList(raidrequest)
- subgrid.setField(raidgrid, 1, 0, (2,0,0,0), anchorRight=1, anchorTop=1)
- poplevel.add(subgrid, 0, row, (0,1,0,0))
-
- row = row + 1
- drivegrid = Grid(2, 1)
-
- #Let's see if we have any RAID partitions to make a RAID device with
- avail = self.partitions.getAvailRaidPartitions(raidrequest, self.diskset)
-
- #If we don't, then tell the user that none exist
- if len(avail) < 2:
- ButtonChoiceWindow (self.screen, _("No RAID partitions"),
- _("At least two software RAID partitions are needed."),
- [ TEXT_OK_BUTTON ])
- return
-
- (self.drivelist, drivesubgrid) = self.makeRaidDriveList(raidrequest)
- drivegrid.setField(drivesubgrid, 0, 0, (0,0,4,0), anchorLeft = 1, anchorTop = 1)
-
- miscgrid = Grid(1, 2)
- (spares, sparegrid) = self.makeSpareEntry(raidrequest)
- miscgrid.setField(sparegrid, 0, 0, anchorRight=1, anchorTop=1)
-
- if raidrequest.fstype and raidrequest.fstype.isFormattable():
- format = Checkbox(_("Format partition?"))
- miscgrid.setField(format, 0, 1)
- else:
- format = None
-
- if raidrequest.format == 1 or raidrequest.format == None:
- format.setValue("*")
-
- drivegrid.setField(miscgrid, 1, 0, anchorTop=1)
- poplevel.add(drivegrid, 0, row, (0,1,0,0))
-
- row = row + 1
- if preexist:
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON,
- (_("File System Options"), "fsopts"),
- TEXT_CANCEL_BUTTON))
- else:
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON,TEXT_CANCEL_BUTTON))
- poplevel.add(popbb, 0, row, (0,1,0,0), growx = 1)
-
- while 1:
- res = poplevel.run()
-
- if popbb.buttonPressed(res) == 'cancel':
- self.screen.popWindow()
- return
-
- if popbb.buttonPressed(res) == 'fsopts':
- (format, migrate, newfstype) = self.fsOptionsDialog(raidrequest, format, migrate, newfstype)
- self.fstypeSet((newfstype, self.mount))
- fstypeLbl.setText(newfstype.getName())
-
- if fsoptLbl:
- if format:
- fsoptLbl.setText(_("Format as %s") % (newfstype.getName()))
- elif migrate:
- fsoptLbl.setText(_("Migrate to %s") %(newfstype.getName()))
- else:
- fsoptLbl.setText(_("Leave unchanged"))
-
- continue
-
- request = copy.copy(raidrequest)
-
- if not preexist:
- request.fstype = fstype.current()
- else:
- request.fstype = newfstype
-
- if request.fstype.isMountable():
- request.mountpoint = self.mount.value()
- else:
- request.mountpoint = None
-
- if not preexist:
- raidmembers = []
- for drive in self.drivelist.getSelection():
- id = self.partitions.getRequestByDeviceName(drive).uniqueID
- raidmembers.append(id)
-
- request.raidmembers = raidmembers
- if invalidInteger(spares.value()):
- self.intf.messageWindow(_("Invalid Entry for RAID Spares"),
- invalidInteger(spares.value()))
- continue
-
- request.raidspares = int(spares.value())
- request.raidlevel = raidtype.current()
- request.raidminor = self._findFirstUnused(self.raidminors)
- self.raidminors[request.raidminor] = True
-
- if format:
- request.format = format.selected()
- else:
- request.format = 0
-
- if request.raidlevel == "RAID0" and request.raidspares > 0:
- self.intf.messageWindow(_("Too many spares"),
- _("You may not use any spares "
- "with a RAID0 array."))
- continue
- else:
- request.format = format
- request.migrate = migrate
- request.fstype = newfstype
-
- err = request.sanityCheckRequest(self.partitions)
- if err:
- self.intf.messageWindow(_("Error With Request"),
- "%s" % (err))
- continue
-
- if not isNew:
- self.partitions.removeRequest(raidrequest)
-
- self.partitions.addRequest(request)
-
- if self.refresh():
- # how can this fail? well, if it does, do the remove new,
- # add old back in dance
- self.partitions.removeRequest(request)
- if not isNew:
- self.partitions.addRequest(raidrequest)
- if self.refresh():
- raise RuntimeError, "Returning partitions to state prior to RAID edit failed"
- else:
- break
-
- break
-
- # clean up
- self.shutdownUI()
- self.screen.popWindow()
-
- # isNew implies that this request has never been successfully used before
- def editLVRequest(self, lvrequest, isNew = 0):
- preexist = lvrequest and lvrequest.preexist
- if preexist:
- tmpstr = _("Edit Logical Volume")
- else:
- tmpstr = _("Make Logical Volume")
- self.drivelist = None
- poplevel = GridFormHelp(self.screen, tmpstr, "makelv", 1, 8)
-
- # mount point entry
- row = 0
- (self.mount, mountgrid) = self.makeMountEntry(lvrequest)
- poplevel.add(mountgrid, 0, row)
- row = row + 1
-
- (self.lvname, lvgrid) = self.makeLVNameEntry(lvrequest)
- poplevel.add(lvgrid, 0, row)
- row = row + 1
-
- (lvsize, lvsizegrid) = self.makeLVSize(lvrequest)
- poplevel.add(lvsizegrid, 0, row)
- row = row + 1
-
- # initialize holder for temporary mount point value
- self.oldMount = None
-
- if preexist:
- # set some defaults
- format = lvrequest.format
- migrate = lvrequest.migrate
- newfstype = lvrequest.fstype
-
- (subgrid, fsoptLbl, fstypeLbl) = self.fsOptionsGrid(lvrequest, newfstype)
- poplevel.add(subgrid, 0, row, (0,1,0,0))
- self.drivelist = None
- else:
- subgrid = Grid(2, 1)
- (fstype, fsgrid) = self.makeFsList(lvrequest, ignorefs = ["software RAID", "efi", "PPC PReP Boot", "Apple Bootstrap"])
- subgrid.setField(fsgrid, 0, 0, anchorLeft = 1, anchorTop=1)
-
- vgs = self.partitions.getLVMVGRequests()
- if len(vgs) < 1:
- ButtonChoiceWindow (self.screen, _("No Volume Groups"),
- _("No volume groups exist in which to create "
- "a logical volume"),[ TEXT_OK_BUTTON ])
- return
-
- (vgtype, vggrid) = self.makeVGList(lvrequest)
- subgrid.setField(vggrid, 1, 0, (2,0,0,0), anchorRight=1, anchorTop=1)
- poplevel.add(subgrid, 0, row, (0,1,0,0))
-
- row = row + 1
-
- miscgrid = Grid(1, 3)
-
- if lvrequest.fstype and lvrequest.fstype.isFormattable():
- format = Checkbox(_("Format partition?"))
- miscgrid.setField(format, 0, 1)
- else:
- format = None
-
- if lvrequest.format == 1 or lvrequest.format == None:
- format.setValue("*")
-
- poplevel.add(miscgrid, 0, row, (0,1,0,0))
-
- row = row + 1
- if preexist:
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON,
- (_("File System Options"), "fsopts"),
- TEXT_CANCEL_BUTTON))
- else:
- popbb = ButtonBar(self.screen, (TEXT_OK_BUTTON,TEXT_CANCEL_BUTTON))
- poplevel.add(popbb, 0, row, (0,1,0,0), growx = 1)
-
- while 1:
- res = poplevel.run()
-
- if popbb.buttonPressed(res) == 'cancel':
- self.screen.popWindow()
- return
-
- if popbb.buttonPressed(res) == 'fsopts':
- (format, migrate, newfstype) = self.fsOptionsDialog(lvrequest, format, migrate, newfstype)
- self.fstypeSet((newfstype, self.mount))
- fstypeLbl.setText(newfstype.getName())
-
- if fsoptLbl:
- if format:
- fsoptLbl.setText(_("Format as %s") % (newfstype.getName()))
- elif migrate:
- fsoptLbl.setText(_("Migrate to %s") %(newfstype.getName()))
- else:
- fsoptLbl.setText(_("Leave unchanged"))
-
- continue
-
- request = copy.copy(lvrequest)
-
- if not preexist:
- request.fstype = fstype.current()
- else:
- request.fstype = newfstype
-
- if request.fstype.isMountable():
- request.mountpoint = self.mount.value()
- else:
- request.mountpoint = None
-
- if not preexist:
- if format:
- request.format = format.selected()
- else:
- request.format = 0
-
- # set the vg
- vgreq = vgtype.current()
- request.volumeGroup = vgreq.uniqueID
-
- if vgreq is None:
- raise RuntimeError, "Somehow ended up with a None volume group!"
-
- # get the lv name, check for a "valid" name
- lvn = self.lvname.value().strip()
- err = sanityCheckLogicalVolumeName(lvn)
- if err:
- self.intf.messageWindow(_("Illegal Logical Volume Name"), err, custom_icon="error")
-
- continue
-
- # make sure we don't have an LV in this volume group by
- # this name already
- used = 0
- origlvname = lvrequest.logicalVolumeName
- for lv in self.partitions.getLVMLVRequests():
- if origlvname and lvn == origlvname:
- break
- if ((lv.logicalVolumeName == lvn) and
- (lv.volumeGroup == vgreq.uniqueID)):
- used = 1
- break
-
- if used:
- self.intf.messageWindow(_("Illegal logical volume name"),
- _("The logical volume name \"%s\" "
- "is already in use. Please "
- "pick another.") % (lvn,),
- custom_icon="error")
- continue
-
- request.logicalVolumeName = lvn
-
- try:
- size = int(lvsize.value().strip())
- except:
- self.intf.messageWindow(_("Illegal size"),
- _("The requested size as entered is "
- "not a valid number greater "
- "than 0."), custom_icon="error")
- continue
-
- pesize = vgreq.pesize
- size = lvm.clampLVSizeRequest(size, pesize, roundup=1)
-
- maxlv = lvm.getMaxLVSize(pesize)
- if size > lvm.getMaxLVSize(pesize):
- self.intf.messageWindow(_("Not enough space"),
- _("The current requested size "
- "(%10.2f MB) is larger than the "
- "maximum logical volume "
- "size (%10.2f MB). ") % (size,
- maxlv),
- custom_icon="error")
- continue
-
- vgsize = vgreq.getActualSize(self.partitions, self.diskset)
- avail = vgsize
- for req in self.partitions.requests:
- if ((req.type == REQUEST_LV) and
- (req.volumeGroup == vgreq.uniqueID)):
- avail -= req.size
- if lvrequest.size:
- avail += lvrequest.size
-
- if size > avail:
- self.intf.messageWindow(_("Not enough space"),
- _("The current requested size "
- "(%10.2f MB) is larger than "
- "the available size in "
- "the volume group "
- "(%10.2f MB).") %(size, avail),
- custom_icon="error")
- continue
-
- request.size = size
- request.grow = 0
- request.dev = None
- else:
- request.format = format
- request.migrate = migrate
- request.fstype = newfstype
-
- err = request.sanityCheckRequest(self.partitions)
- if err:
- self.intf.messageWindow(_("Error With Request"),
- "%s" % (err))
- continue
-
- if not isNew:
- self.partitions.removeRequest(lvrequest)
-
- self.partitions.addRequest(request)
-
- if self.refresh():
- # how can this fail? well, if it does, do the remove new,
- # add old back in dance
- self.partitions.removeRequest(request)
- if not isNew:
- self.partitions.addRequest(lvrequest)
- if self.refresh():
- raise RuntimeError, "Returning partitions to state prior to RAID edit failed"
- else:
- break
-
- break
-
- # clean up
- self.shutdownUI()
- self.screen.popWindow()
-
- def newCb(self):
- hasvg = 0
- dolv = 0
- for request in self.partitions.requests:
- if request.type == REQUEST_VG:
- hasvg = 1
- break
- if hasvg:
- rc = ListboxChoiceWindow(self.screen,
- _("New Partition or Logical Volume?"),
- _("Would you like to create a new "
- "partition or a new logical volume?"),
- [ _("partition"), _("logical volume") ],
- [ TEXT_OK_BUTTON, TEXT_CANCEL_BUTTON ],
- width = 30, scroll = 0, height = 2)
- (button, choice) = rc
- if button == TEXT_CANCEL_CHECK:
- return
- if choice == 1:
- dolv = 1
-
- if not dolv:
- request = NewPartitionSpec(fileSystemTypeGetDefault(), 1)
- self.editPartitionRequest(request, isNew = 1)
- else:
- request = LogicalVolumeRequestSpec(fileSystemTypeGetDefault(),
- size=1)
- self.editLVRequest(request, isNew = 1)
-
- def makeraidCb(self):
- request = RaidRequestSpec(fileSystemTypeGetDefault())
- self.editRaidRequest(request, isNew = 1)
-
- def editCb(self):
- part = self.lb.current()
- (type, request) = doEditPartitionByRequest(self.intf, self.partitions, part)
- if request:
- if type == "RAID":
- self.editRaidRequest(request)
- elif type == "LVMLV":
- self.editLVRequest(request)
- elif type == "NEW":
- self.editPartitionRequest(request, isNew = 1)
- else:
- self.editPartitionRequest(request)
-
- def deleteCb(self):
- partition = self.lb.current()
-
- req = self.partitions.getRequestByID(partition)
- if req and isinstance(req, RaidRequestSpec):
- del(self.raidminors[req.raidminor])
-
- if doDeletePartitionByRequest(self.intf, self.partitions, partition):
- self.refresh()
-
- def resetCb(self):
- if not confirmResetPartitionState(self.intf):
- return
-
- self.diskset.refreshDevices()
- self.partitions.setFromDisk(self.diskset)
- self.populate()
-
- def shutdownMainUI(self):
- self.lb.clear()
-
- def __call__(self, screen, anaconda):
- self.screen = screen
- self.fsset = anaconda.id.fsset
- self.diskset = anaconda.id.diskset
- self.intf = anaconda.intf
-
- self.diskset.openDevices()
- self.partitions = anaconda.id.partitions
-
- checkForSwapNoMatch(anaconda)
-
- self.g = GridFormHelp(screen, _("Partitioning"), "partition", 1, 5)
-
- self.lb = CListbox(height=10, cols=6,
- col_widths=[17,6,6,7,10,12],
- scroll=1, returnExit = 1,
- width=70, col_pad=2,
- col_labels=[_('Device'), _('Start'), _('End'), _('Size'), _('Type'), _('Mount Point')],
- col_label_align=[CENTER, CENTER,CENTER,CENTER,CENTER,CENTER])
- self.g.add(self.lb, 0, 1)
-
- self.bb = ButtonBar (screen, ((_("New"), "new", "F2"),
- (_("Edit"), "edit", "F3"),
- (_("Delete"), "delete", "F4"),
- (_("RAID"), "raid", "F11"),
- TEXT_OK_BUTTON, TEXT_BACK_BUTTON))
-
- screen.pushHelpLine( _(" F1-Help F2-New F3-Edit F4-Delete F5-Reset F12-OK "))
-
- self.g.add(self.bb, 0, 2, (0, 1, 0, 0))
- self.g.addHotKey("F5")
- self.populate()
-
- while 1:
- rc = self.g.run()
- res = self.bb.buttonPressed(rc)
-
- if res == "new":
- self.newCb()
- elif res == "edit" or rc == self.lb.listbox: # XXX better way?
- self.editCb()
- elif res == "delete":
- self.deleteCb()
- elif res == "raid":
- self.makeraidCb()
- elif res == "reset" or rc == "F5":
- self.resetCb()
- elif res == TEXT_BACK_CHECK:
- # remove refs to parted objects
- self.shutdownMainUI()
-
- self.diskset.refreshDevices()
- self.partitions.setFromDisk(self.diskset)
-
- screen.popHelpLine()
- screen.popWindow()
- return INSTALL_BACK
- else:
- if not self.partitions.getRequestByMountPoint("/"):
- self.intf.messageWindow(_("No Root Partition"),
- _("Installation requires a / partition."))
- continue
-
- (errors, warnings) = self.partitions.sanityCheckAllRequests(self.diskset)
- rc = partitionSanityErrors(self.intf, errors)
- if rc != 1:
- continue
-
- rc = partitionSanityWarnings(self.intf, warnings)
- if rc != 1:
- continue
-
- warnings = getPreExistFormatWarnings(self.partitions,
- self.diskset)
- rc = partitionPreExistFormatWarnings(self.intf, warnings)
- if rc != 1:
- continue
-
- # remove refs to parted objects
- self.shutdownMainUI()
-
- screen.popHelpLine()
- screen.popWindow()
- return INSTALL_OK
-
class PartitionTypeWindow:
def typeboxChange(self, (typebox, drivelist)):
flag = FLAGS_RESET
@@ -1513,16 +68,12 @@ class PartitionTypeWindow:
opts = ((_("Use entire drive"), CLEARPART_TYPE_ALL),
(_("Replace existing Linux system"), CLEARPART_TYPE_LINUX),
- (_("Use free space"), CLEARPART_TYPE_NONE),
- (_("Create custom layout"), -1))
+ (_("Use free space"), CLEARPART_TYPE_NONE))
typebox = Listbox(height = len(opts), scroll = 0)
for (txt, val) in opts:
typebox.append(txt, val)
- if anaconda.dispatch.stepInSkipList("autopartitionexecute"):
- typebox.setCurrent(-1)
- else:
- typebox.setCurrent(anaconda.id.partitions.autoClearPartType)
+ typebox.setCurrent(anaconda.id.partitions.autoClearPartType)
g.add(typebox, 0, 1, (0, 1, 0, 0))
@@ -1539,11 +90,11 @@ class PartitionTypeWindow:
g.add(bb, 0, 5, (0,1,0,0))
- typebox.setCallback(self.typeboxChange, (typebox, drivelist))
+ typebox.setCallback(self.typeboxChange, (typebox, drivelist))
self.drivelist = drivelist
g.addHotKey("F2")
- screen.pushHelpLine (_("<Space>,<+>,<-> selection | <F2> Add drive | <F12> next screen"))
+ screen.pushHelpLine (_("<Space>,<+>,<-> selection | <F2> Add drive | <F12> next screen"))
# restore the drive list each time
disks = anaconda.id.diskset.disks.keys()
@@ -1575,7 +126,7 @@ class PartitionTypeWindow:
sel = []
partmethod_ans = typebox.current()
res = bb.buttonPressed(rc)
-
+
self.clearDrivelist()
screen.popHelpLine()
screen.popWindow()
@@ -1584,7 +135,7 @@ class PartitionTypeWindow:
if self.addDriveDialog(screen) != INSTALL_BACK:
partitions.partitionObjectsInitialize(anaconda)
continue
-
+
if res == TEXT_BACK_CHECK:
return INSTALL_BACK
@@ -1595,28 +146,15 @@ class PartitionTypeWindow:
mustHaveSelectedDrive(anaconda.intf)
continue
- if partmethod_ans == -1:
- anaconda.dispatch.skipStep("autopartitionexecute", skip = 1)
- break
- else:
- anaconda.dispatch.skipStep("autopartitionexecute", skip = 0)
-
- anaconda.id.partitions.autoClearPartType = partmethod_ans
- anaconda.id.partitions.autoClearPartDrives = sel
- break
+ anaconda.dispatch.skipStep("autopartitionexecute", skip = 0)
+ anaconda.id.partitions.autoClearPartType = partmethod_ans
+ anaconda.id.partitions.autoClearPartDrives = sel
+ break
# ask to review autopartition layout - but only if it's not custom partitioning
- anaconda.dispatch.skipStep("partition", skip = 0)
+ anaconda.dispatch.skipStep("partition", skip = 1)
anaconda.dispatch.skipStep("bootloader", skip = 1)
- if partmethod_ans != -1:
- reviewLayout = anaconda.intf.messageWindow(_("Review Partition Layout"),
- _("Review and modify partitioning layout?"),
- type = "yesno")
-
- if reviewLayout != 1:
- anaconda.dispatch.skipStep("partition", skip = 1)
-
return INSTALL_OK
def addDriveDialog(self, screen):