# bpn is the boot partition number.
- bpn = self.partitionNum(bootDevice.path)
+ bpn = getDiskPart(bootDevice)
lines = 0
# We write entries line using the following format:
@@ -101,8 +93,8 @@ class alphaBootloaderInfo(bootloaderInfo):
# Now we're ready to write the relevant boot information. wbd
# is the whole boot device, bdpn is the boot device partition
# number.
- wbd = self.wholeDevice (bootDevice.path)
- bdpn = self.partitionNum (bootDevice.path)
+ wbd = getDiskPart(bootDevice)[0]
+ bdpn = getDiskPart(bootDevice)[1]
# Calling swriteboot. The first argument is the disk to write
# to and the second argument is a path to the bootstrap loader
diff --git a/booty/bootloaderInfo.py b/booty/bootloaderInfo.py
index edce60d..d019edf 100644
--- a/booty/bootloaderInfo.py
+++ b/booty/bootloaderInfo.py
@@ -346,7 +346,8 @@ class bootloaderInfo(object):
def setDevice(self, device):
self.device = device
if self.password:
diff --git a/booty/util.py b/booty/util.py
index eab6b99..c7a6630 100644
--- a/booty/util.py
+++ b/booty/util.py
@@ -1,6 +1,4 @@
-def getDiskPart(dev, storage):
- dev = storage.devicetree.getDeviceByName(dev)
-
+def getDiskPart(dev):
if dev.type == "partition":
partNum = dev.partedPartition.number
disk = dev.disk
@@ -8,4 +6,4 @@ def getDiskPart(dev, storage):
partNum = None
disk = dev
- return (disk.name, partNum)
+ return (disk, partNum)
diff --git a/booty/x86.py b/booty/x86.py
index 038236d..1668c56 100644
--- a/booty/x86.py
+++ b/booty/x86.py
@@ -107,7 +107,7 @@ class x86BootloaderInfo(efiBootloaderInfo):
matches = []
for stage1Dev in stage1Devs:
for mdBootPart in bootDevs:
- if getDiskPart(stage1Dev.name, self.storage)[0] == getDiskPart(mdBootPart.name, self.storage)[0]:
+ if getDiskPart(stage1Dev)[0] == getDiskPart(mdBootPart)[0]:
matches.append((stage1Dev, mdBootPart))
return matches
@@ -116,10 +116,7 @@ class x86BootloaderInfo(efiBootloaderInfo):
bootDevsHavingStage1Dev = [match[1] for match in matches]
for mdBootPart in bootDevs:
if mdBootPart not in bootDevsHavingStage1Dev:
- updatedMatches.append((
- self.storage.devicetree.getDeviceByName(
- getDiskPart(mdBootPart.name, self.storage)[0]),
- mdBootPart))
+ updatedMatches.append((getDiskPart(mdBootPart)[0], mdBootPart))
return updatedMatches
# 2) and install stage1 on other members' disks/partitions too
# NOTES:
@@ -169,21 +165,19 @@ class x86BootloaderInfo(efiBootloaderInfo):
matches = self.addMemberMbrs(matches, bootDevs)
for stage1Target, mdMemberBootPart in matches[1:]:
# prepare special device mapping corresponding to member removal
- mdMemberBootDisk = getDiskPart(mdMemberBootPart.name, self.storage)[0]
+ mdMemberBootDisk = getDiskPart(mdMemberBootPart)[0]
# It can happen due to ks --driveorder option, but is it ok?
- if not mdMemberBootDisk in self.drivelist:
+ if not mdMemberBootDisk.name in self.drivelist:
continue
mdRaidDeviceRemap = (firstMdMemberDiskGrubbyName,
- mdMemberBootDisk)
+ mdMemberBootDisk.name)
# now replace grub disk name part according to special device
# mapping
- old = self.grubbyDiskName(
- self.storage.devicetree.getDeviceByName(
- mdMemberBootDisk)).strip('() ')
+ old = self.grubbyDiskName(mdMemberBootDisk).strip('() ')
new = firstMdMemberDiskGrubbyName.strip('() ')
rootPartGrubbyName = rootPartGrubbyName.replace(old, new)
stage1TargetGrubbyName = stage1TargetGrubbyName.replace(old, new)
@@ -232,10 +226,11 @@ class x86BootloaderInfo(efiBootloaderInfo):
# keep track of which devices are used for the device.map
usedDevs = set()
- usedDevs.update([d.name for d in self.getPhysicalDevices(
- self.storage.devicetree.getDeviceByName(grubTarget ))])
- usedDevs.update([d.name for d in self.getPhysicalDevices(bootDev)])
- usedDevs.update([dev for (label, longlabel, dev) in chainList if longlabel])
+ usedDevs.update(self.getPhysicalDevices(
+ self.storage.devicetree.getDeviceByName(grubTarget )))
+ usedDevs.update(self.getPhysicalDevices(bootDev))
+ usedDevs.update([self.storage.devicetree.getDeviceByName(dev) for
+ (label, longlabel, dev) in chainList if longlabel])
if not upgrade:
self.writeDeviceMap(instRoot, usedDevs, upgrade)
@@ -415,7 +410,8 @@ class x86BootloaderInfo(efiBootloaderInfo):
(grubdisk, dev) = line.split()[:2]
dev = dev[5:]
if dev in self.drivelist:
- usedDevs.add(dev)
+ usedDevs.add(
+ self.storage.devicetree.getDeviceByName(dev))
f.close()
os.rename(instRoot + "/boot/grub/device.map",
instRoot + "/boot/grub/device.map.rpmsave")
@@ -424,14 +420,13 @@ class x86BootloaderInfo(efiBootloaderInfo):
f.write("# this device map was generated by anaconda
")
usedDiskDevs = set()
for dev in usedDevs:
- drive = getDiskPart(dev, self.storage)[0]
+ drive = getDiskPart(dev)[0]
usedDiskDevs.add(drive)
devs = list(usedDiskDevs)
- devs.sort()
- for drive in devs:
+ devs.sort(key=lambda d: d.name)
+ for dev in devs:
# XXX hack city. If they're not the sort of thing that'll
# be in the device map, they shouldn't still be in the list.
- dev = self.storage.devicetree.getDeviceByName(drive)
if not dev.type == "mdarray":
f.write("(%s) %s
" % (self.grubbyDiskName(dev), dev.path))
f.close()
@@ -460,8 +455,7 @@ class x86BootloaderInfo(efiBootloaderInfo):
return "hd%d" % self.drivelist.index(dev.name)