[PATCH 2/5] Gather lv list where we use it to save from having to stash it.
David Lehman
dlehman at redhat.com
Fri Mar 28 20:32:51 UTC 2014
---
blivet/devices.py | 13 ++----------
blivet/devicetree.py | 58 +++++++++++++++++++---------------------------------
2 files changed, 23 insertions(+), 48 deletions(-)
diff --git a/blivet/devices.py b/blivet/devices.py
index d568d8e..1a39920 100644
--- a/blivet/devices.py
+++ b/blivet/devices.py
@@ -2302,11 +2302,6 @@ class LVMVolumeGroupDevice(ContainerDevice):
self.peSize = util.numeric_type(peSize)
self.peCount = util.numeric_type(peCount)
self.peFree = util.numeric_type(peFree)
- self.lv_names = []
- self.lv_uuids = []
- self.lv_sizes = []
- self.lv_attr = []
- self.lv_types = []
self.reserved_percent = 0
self.reserved_space = Size(bytes=0)
@@ -2331,7 +2326,7 @@ class LVMVolumeGroupDevice(ContainerDevice):
s = super(LVMVolumeGroupDevice, self).__repr__()
s += (" free = %(free)s PE Size = %(peSize)s PE Count = %(peCount)s\n"
" PE Free = %(peFree)s PV Count = %(pvCount)s\n"
- " LV Names = %(lv_names)s modified = %(modified)s\n"
+ " modified = %(modified)s"
" extents = %(extents)s free space = %(freeSpace)s\n"
" free extents = %(freeExtents)s"
" reserved percent = %(rpct)s reserved space = %(res)s\n"
@@ -2339,7 +2334,7 @@ class LVMVolumeGroupDevice(ContainerDevice):
" LVs = %(lvs)s" %
{"free": self.free, "peSize": self.peSize, "peCount": self.peCount,
"peFree": self.peFree, "pvCount": self.pvCount,
- "lv_names": self.lv_names, "modified": self.isModified,
+ "modified": self.isModified,
"extents": self.extents, "freeSpace": self.freeSpace,
"freeExtents": self.freeExtents,
"rpct": self.reserved_percent, "res": self.reserved_space,
@@ -2355,10 +2350,6 @@ class LVMVolumeGroupDevice(ContainerDevice):
"pvCount": self.pvCount, "extents": self.extents,
"freeSpace": self.freeSpace,
"freeExtents": self.freeExtents,
- "lv_names": self.lv_names,
- "lv_uuids": self.lv_uuids,
- "lv_sizes": self.lv_sizes,
- "lv_attr": self.lv_attr,
"reserved_percent": self.reserved_percent,
"reserved_space": self.reserved_space,
"lvNames": [lv.name for lv in self.lvs]})
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index 55ecc33..e7ade8b 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -1293,11 +1293,25 @@ class DeviceTree(object):
""" Handle setup of the LV's in the vg_device. """
vg_name = vg_device.name
- lv_names = vg_device.lv_names
- lv_uuids = vg_device.lv_uuids
- lv_sizes = vg_device.lv_sizes
- lv_attrs = vg_device.lv_attr
- lv_types = vg_device.lv_types
+ info = devicelibs.lvm.lvs(vg_name)
+
+ # Now we add any lv info found in this pv to the vg_device, we
+ # do this for all pvs as pvs only contain lv info for lvs which they
+ # contain themselves
+ try:
+ lv_names = udev_device_get_lv_names(info)
+ lv_uuids = udev_device_get_lv_uuids(info)
+ lv_sizes = udev_device_get_lv_sizes(info)
+ lv_attr = udev_device_get_lv_attr(info)
+ lv_types = udev_device_get_lv_types(info)
+ except KeyError as e:
+ log.warning("invalid data for %s: %s", device.name, e)
+ return
+
+ for i in range(len(lv_names)):
+ name = "%s-%s" % (vg_name, lv_names[i])
+ if name not in self.names:
+ self.names.append(name)
if not vg_device.complete:
log.warning("Skipping LVs for incomplete VG %s", vg_name)
@@ -1438,13 +1452,13 @@ class DeviceTree(object):
# make a list of indices with mirror volumes up front and snapshots at
# the end
indices = range(len(lv_names))
- indices.sort(key=lambda i: lv_attrs[i], cmp=lv_attr_cmp)
+ indices.sort(key=lambda i: lv_attr[i], cmp=lv_attr_cmp)
lv_real_names = [n.replace("[", "").replace("]", "") for n in lv_names]
raid = dict([("%s-%s" % (vg_device.name,
n.replace("[", "").replace("]", "")),
{"copies": 0, "log": Size(bytes=0), "meta": Size(bytes=0)})
for n in lv_names])
- lv_data = zip(lv_names, lv_uuids, lv_attrs, lv_sizes, lv_types)
+ lv_data = zip(lv_names, lv_uuids, lv_attr, lv_sizes, lv_types)
for i in range(len(lv_data)):
addLV(*lv_data[i])
@@ -1503,36 +1517,6 @@ class DeviceTree(object):
exists=True)
self._addDevice(vg_device)
- info.update(lvm.lvs(vg_name))
-
- # Now we add any lv info found in this pv to the vg_device, we
- # do this for all pvs as pvs only contain lv info for lvs which they
- # contain themselves
- try:
- lv_names = udev_device_get_lv_names(info)
- lv_uuids = udev_device_get_lv_uuids(info)
- lv_sizes = udev_device_get_lv_sizes(info)
- lv_attr = udev_device_get_lv_attr(info)
- lv_types = udev_device_get_lv_types(info)
- except KeyError as e:
- log.warning("invalid data for %s: %s", device.name, e)
- return
-
- for i in range(len(lv_names)):
- # Skip empty and already added lvs
- if not lv_names[i] or lv_names[i] in vg_device.lv_names:
- continue
-
- vg_device.lv_names.append(lv_names[i])
- vg_device.lv_uuids.append(lv_uuids[i])
- vg_device.lv_sizes.append(lv_sizes[i])
- vg_device.lv_attr.append(lv_attr[i])
- vg_device.lv_types.append(lv_types[i])
-
- name = "%s-%s" % (vg_name, lv_names[i])
- if name not in self.names:
- self.names.append(name)
-
self.handleVgLvs(vg_device)
def handleUdevMDMemberFormat(self, info, device):
--
1.9.0
More information about the anaconda-patches
mailing list