FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Development

 
 
LinkBack Thread Tools
 
Old 04-01-2011, 07:57 PM
David Lehman
 
Default Update storage module for new platform and bootloader modules.

---
pyanaconda/storage/__init__.py | 33 +++++++++++++++++----------------
pyanaconda/storage/partitioning.py | 30 ++++++++++++------------------
2 files changed, 29 insertions(+), 34 deletions(-)

diff --git a/pyanaconda/storage/__init__.py b/pyanaconda/storage/__init__.py
index 11f2acf..f7947f3 100644
--- a/pyanaconda/storage/__init__.py
+++ b/pyanaconda/storage/__init__.py
@@ -35,6 +35,7 @@ from pyanaconda import iutil
from pyanaconda.constants import *
from pykickstart.constants import *
from pyanaconda.flags import flags
+from pyanaconda import platform

from errors import *
from devices import *
@@ -187,19 +188,16 @@ def storageComplete(anaconda):

# Warn the user if they are trying to boot a GPT disk on a non-EFI system
# This may or may not work -- we have no way to tell, so just warn them
- bootdisk = anaconda.bootloader.drivelist[0]
- bootdisk = anaconda.storage.devicetree.getDeviceByName(bootdi sk)
-
- if not iutil.isEfi() and bootdisk and bootdisk.format
- and bootdisk.format.type == 'disklabel'
- and bootdisk.format.labelType == 'gpt':
- warning = _("

<b>WARNING:</b>
"
- "You are using a GPT bootdisk on a non-EFI "
- "system. This may not work, depending on your BIOS's "
- "support for booting from GPT disks.")
- log.warning("Using a GPT bootdisk on non-EFI system")
- else:
- warning = ""
+ warning = ""
+ if not isinstance(anaconda.platform, platform.EFI):
+ disks = (anaconda.bootloader.stage1_device.disks
+ + anaconda.bootloader.stage2_device.disks)
+ if [d for d in disks if getattr(d.format, "labelType", None) == "gpt"]:
+ warning = _("

<b>WARNING:</b>
"
+ "You are using a GPT bootdisk on a non-EFI "
+ "system. This may not work, depending on your "
+ "BIOS's support for booting from GPT disks.")
+ log.warning("Using a GPT bootdisk on non-EFI system")

rc = anaconda.intf.messageWindow(_("Confirm"),
_("The partitioning options you have selected "
@@ -375,7 +373,7 @@ class Storage(object):

# now set the boot partition's flag
try:
- boot = self.platform.bootDevice()
+ boot = self.platform.bootDevice
if boot.type == "mdarray":
bootDevs = boot.parents
else:
@@ -460,6 +458,8 @@ class Storage(object):
hasattr(self.anaconda, "upgradeRoot"):
self.anaconda.rootParts = None
self.anaconda.upgradeRoot = None
+ if self.platform:
+ self.platform.bootloader.clear_drive_list()
self.dumpState("initial")
if w:
w.pop()
@@ -1055,7 +1055,7 @@ class Storage(object):
root = self.fsset.rootDevice
swaps = self.fsset.swapDevices
try:
- boot = self.platform.bootDevice()
+ boot = self.platform.bootDevice
except (DeviceError, AttributeError):
# AttributeError means we have no anaconda or platform. it's ok.
boot = None
@@ -1144,7 +1144,8 @@ class Storage(object):
"or may not produce a working system."))

if self.platform:
- errors.extend(self.platform.checkBootRequest(boot) )
+ errors.extend(self.platform.checkBootRequest())
+ errors.extend(self.platform.checkBootLoaderRequest ())

if not swaps:
from pyanaconda.storage.size import Size
diff --git a/pyanaconda/storage/partitioning.py b/pyanaconda/storage/partitioning.py
index a699125..d83ed1b 100644
--- a/pyanaconda/storage/partitioning.py
+++ b/pyanaconda/storage/partitioning.py
@@ -94,7 +94,7 @@ def _schedulePartitions(storage, disks):
if request.fstype is None:
request.fstype = storage.defaultFSType
elif request.fstype in ("prepboot", "efi") and
- storage.platform.bootDevice():
+ storage.platform.bootDevice:
# there should never be a need for more than one of these
# partitions, so skip them.
continue
@@ -186,11 +186,11 @@ def doAutoPartition(anaconda):
devs = []

if anaconda.storage.doAutoPart:
- clearPartitions(anaconda.storage)
+ clearPartitions(anaconda.storage, bootloader=anaconda.bootloader)
# update the bootloader's drive list to add disks which have their
# whole disk format replaced by a disklabel. Make sure to keep any
# previous boot order selection from clearpart_gui or kickstart
- anaconda.bootloader.updateDriveList(anaconda.bootl oader.drivelist)
+ anaconda.bootloader.clear_drive_list()

if anaconda.storage.doAutoPart:
(disks, devs) = _createFreeSpacePartitions(anaconda.storage)
@@ -219,7 +219,7 @@ def doAutoPartition(anaconda):

# run the autopart function to allocate and grow partitions
try:
- doPartitioning(anaconda.storage)
+ doPartitioning(anaconda.storage, bootloader=anaconda.bootloader)

if anaconda.storage.doAutoPart:
_scheduleLVs(anaconda.storage, devs)
@@ -332,8 +332,6 @@ def shouldClear(device, clearPartType, clearPartDisks=None):
if device.immutable:
return False

- # TODO: do platform-specific checks on ia64, pSeries, iSeries, mac
-
return True

def clearPartitions(storage, bootloader=None):
@@ -345,7 +343,7 @@ def clearPartitions(storage, bootloader=None):

Keyword arguments:

- bootloader -- a bootloaderInfo instance
+ bootloader -- a BootLoader instance

NOTES:

@@ -412,10 +410,10 @@ def clearPartitions(storage, bootloader=None):
# make sure that the the boot device has the correct disklabel type if
# we're going to completely clear it.
for disk in storage.partitioned:
- if not bootloader or not bootloader.drivelist:
+ if not bootloader or not bootloader.stage1_device:
break

- if disk.name != bootloader.drivelist[0]:
+ if disk in bootloader.stage1_device.disks:
continue

if storage.config.clearPartType != CLEARPART_TYPE_ALL or
@@ -821,7 +819,7 @@ def doPartitioning(storage, bootloader=None):

Keyword/Optional Arguments:

- bootloader - bootloaderInfo instance
+ bootloader - BootLoader instance

"""
if not hasattr(storage.platform, "diskLabelType"):
@@ -849,13 +847,11 @@ def doPartitioning(storage, bootloader=None):
# start over with flexible-size requests
part.req_size = part.req_base_size

- # FIXME: isn't there a better place for this to happen?
try:
- bootDev = storage.platform.bootDevice()
+ bootDev = storage.platform.bootDevice
except DeviceError:
- bootDev = None
-
- if bootDev:
+ pass
+ else:
bootDev.req_bootable = True

removeNewPartitions(disks, partitions)
@@ -966,9 +962,7 @@ def allocatePartitions(storage, disks, partitions, freespace, bootloader=None):
req_disks.sort(key=lambda d: d.name, cmp=storage.compareDisks)
boot_index = None
for disk in req_disks:
- if bootloader and
- disk.name in bootloader.drivelist and
- disk.name == bootloader.drivelist[0]:
+ if bootloader and disk == bootloader.stage1_device.disks[0]:
boot_index = req_disks.index(disk)

if boot_index is not None and len(req_disks) > 1:
--
1.7.3.4

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

Thread Tools




All times are GMT. The time now is 09:59 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org