[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