[PATCH rhel7-branch] Ignore loopback device which is now returned by NM's GetDevices() (#999514)

Radek Vykydal rvykydal at redhat.com
Fri Aug 23 12:20:34 UTC 2013


NM's org.freedesktop.NetworkManager.GetDevices() now returns also
devices not controlled by NM, eg. loopback device.
---
 pyanaconda/nm.py                            | 23 +++++++++++++++++++----
 pyanaconda/ui/gui/spokes/advstorage/fcoe.py |  7 +------
 2 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/pyanaconda/nm.py b/pyanaconda/nm.py
index 18a29e7..81ef78e 100644
--- a/pyanaconda/nm.py
+++ b/pyanaconda/nm.py
@@ -36,9 +36,20 @@ device_type_interfaces = {
     NetworkManager.DeviceType.INFINIBAND: "org.freedesktop.NetworkManager.Device.Infiniband",
     NetworkManager.DeviceType.BOND: "org.freedesktop.NetworkManager.Device.Bond",
     NetworkManager.DeviceType.VLAN: "org.freedesktop.NetworkManager.Device.Vlan",
-    NetworkManager.DeviceType.ADSL: "org.freedesktop.NetworkManager.Device.Adsl"
+    NetworkManager.DeviceType.ADSL: "org.freedesktop.NetworkManager.Device.Adsl",
+    NetworkManager.DeviceType.BRIDGE: "org.freedesktop.NetworkManager.Device.Bridge",
+    NetworkManager.DeviceType.GENERIC: "org.freedesktop.NetworkManager.Device.Generic",
 }
 
+supported_device_types = [
+    NetworkManager.DeviceType.ETHERNET,
+    NetworkManager.DeviceType.WIFI,
+    NetworkManager.DeviceType.INFINIBAND,
+    NetworkManager.DeviceType.BOND,
+    NetworkManager.DeviceType.VLAN,
+    NetworkManager.DeviceType.BRIDGE,
+]
+
 class UnknownDeviceError(ValueError):
     """Device of specified name was not found by NM"""
     def __str__(self):
@@ -96,7 +107,7 @@ def nm_is_connecting():
     return nm_state() == NetworkManager.State.CONNECTING
 
 def nm_devices():
-    """Return list of network device names"""
+    """Return list of network device names supported in installer"""
 
     interfaces = []
 
@@ -110,6 +121,9 @@ def nm_devices():
 
     devices = devices.unpack()[0]
     for device in devices:
+        device_type = proxy.get_cached_property("DeviceType").unpack()
+        if device_type not in supported_device_types:
+            continue
         proxy = _get_proxy(object_path=device, interface_name="org.freedesktop.NetworkManager.Device")
         interfaces.append(proxy.get_cached_property("Interface").unpack())
 
@@ -305,9 +319,10 @@ def _device_settings(name):
     else:
         try:
             hwaddr_str = nm_device_hwaddress(name)
-            settings = _settings_for_hwaddr(hwaddr_str)
-        except ValueError:
+        except PropertyNotFoundError:
             settings = None
+        else:
+            settings = _settings_for_hwaddr(hwaddr_str)
 
     return settings
 
diff --git a/pyanaconda/ui/gui/spokes/advstorage/fcoe.py b/pyanaconda/ui/gui/spokes/advstorage/fcoe.py
index 0a232d3..fa1330c 100644
--- a/pyanaconda/ui/gui/spokes/advstorage/fcoe.py
+++ b/pyanaconda/ui/gui/spokes/advstorage/fcoe.py
@@ -57,13 +57,8 @@ class FCoEDialog(GUIObject):
         self._autoCheckbox = self.builder.get_object("autoCheckbox")
 
         for devname in nm.nm_devices():
-            if not nm.nm_device_type_is_ethernet(devname):
-                continue
-
-            try:
+            if nm.nm_device_type_is_ethernet(devname):
                 self._nicCombo.append_text("%s - %s" % (devname, nm.nm_device_hwaddress(devname)))
-            except ValueError:
-                continue
 
         self._nicCombo.set_active(0)
 
-- 
1.7.11.7



More information about the anaconda-patches mailing list