[PATCH 2/5] Keep the dasd list in sync with the devicetree's device list. (#965694)

David Lehman dlehman at redhat.com
Wed Aug 14 23:04:12 UTC 2013


---
 blivet/dasd.py       |  9 +++++++--
 blivet/devices.py    |  4 ----
 blivet/devicetree.py | 10 +++++++++-
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/blivet/dasd.py b/blivet/dasd.py
index 46a23d5..c2ec2e4 100644
--- a/blivet/dasd.py
+++ b/blivet/dasd.py
@@ -179,9 +179,14 @@ class DASD:
 
     def addDASD(self, dasd):
         """ Adds a DASDDevice to the internal list of DASDs. """
-        if dasd:
+        if dasd and dasd not in self._devices:
             self._devices.append(dasd)
 
+    def removeDASD(self, dasd):
+        """ Removes a DASDDevice from the internal list of DASDs. """
+        if dasd and dasd in self._devices:
+            self._devices.remove(dasd)
+
     def clear_device_list(self):
         """ Clear the device list to force re-populate on next access. """
         self._devices = []
@@ -194,7 +199,7 @@ class DASD:
             return
 
         f = open(os.path.realpath(ROOT_PATH + "/etc/dasd.conf"), "w")
-        for dasd in self._devices:
+        for dasd in sorted(self._devices, key=lambda d: d.name):
             fields = [dasd.busid] + dasd.getOpts()
             f.write("%s\n" % (" ".join(fields),))
         f.close()
diff --git a/blivet/devices.py b/blivet/devices.py
index 8b4fd23..b98dcf7 100644
--- a/blivet/devices.py
+++ b/blivet/devices.py
@@ -4120,12 +4120,8 @@ class DASDDevice(DiskDevice):
     def __init__(self, device, **kwargs):
         self.busid = kwargs.pop('busid')
         self.opts = kwargs.pop('opts')
-        self.dasd = kwargs.pop('dasd')
         DiskDevice.__init__(self, device, **kwargs)
 
-        if self.dasd:
-            self.dasd.addDASD(self)
-
     @property
     def description(self):
         return "DASD device %s" % self.busid
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index 763b4b6..7977caf 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -899,7 +899,6 @@ class DeviceTree(object):
             del kwargs["bus"]
         elif udev_device_is_dasd(info):
             diskType = DASDDevice
-            kwargs["dasd"] = self.dasd
             kwargs["busid"] = udev_device_get_dasd_bus_id(info)
             kwargs["opts"] = {}
 
@@ -926,6 +925,9 @@ class DeviceTree(object):
         if devicelibs.mpath.is_multipath_member(device.path):
             info["ID_FS_TYPE"] = "multipath_member"
 
+        if diskType == DASDDevice:
+            self.dasd.addDASD(device)
+
         self._addDevice(device)
         return device
 
@@ -1748,6 +1750,9 @@ class DeviceTree(object):
         for parent in device.parents:
             parent.removeChild()
 
+        if isinstance(device, DASDDevice):
+            self.dasd.removeDASD(device)
+
     def unhide(self, device):
         # the hidden list should be in leaves-first order
         for hidden in reversed(self._hidden):
@@ -1761,6 +1766,9 @@ class DeviceTree(object):
                 for parent in hidden.parents:
                     parent.addChild()
 
+                if isinstance(device, DASDDevice):
+                    self.dasd.addDASD(device)
+
     def setupDiskImages(self):
         """ Set up devices to represent the disk image files. """
         for (name, path) in self.diskImages.items():
-- 
1.8.1.4



More information about the anaconda-patches mailing list