From 7cf2c93a9bc3027e3efd7f6f3d40d2415cafb55e Mon Sep 17 00:00:00 2001
From: Anders Blomdell <anders.blomdell@control.lth.se>
Date: Thu, 4 Nov 2021 11:41:55 +0100
Subject: [PATCH] Make device matching work for unknown device kinds

---
 src/hostinfo/networkmanager.py | 23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/src/hostinfo/networkmanager.py b/src/hostinfo/networkmanager.py
index 1754902..aec2f08 100644
--- a/src/hostinfo/networkmanager.py
+++ b/src/hostinfo/networkmanager.py
@@ -28,25 +28,32 @@ class Network(object):
         self._tun = {}
         self._connection = {}
         # Get devices from network manager
+        def is_kind(device, kind):
+            device_class = getattr(NetworkManager, kind, None)
+            if device_class == None:
+                print('%s not defined in this version of NetworkManager' % kind)
+                return False
+            return isinstance(device, device_class)
+             
         for d in NetworkManager.NetworkManager.AllDevices:
-            if isinstance(d, NetworkManager.Generic):
+            if is_kind(d, 'Generic'):
                 pass
-            elif isinstance(d, NetworkManager.Dummy):
+            elif is_kind(d, 'Dummy'):
                 pass
-            elif isinstance(d, NetworkManager.Wireless):
+            elif is_kind(d, 'Wireless'):
                 pass
-            elif isinstance(d, NetworkManager.WireGuard):
+            elif is_kind(d, 'WireGuard'):
                 pass
-            elif isinstance(d, NetworkManager.Wired):
+            elif is_kind(d, 'Wired'):
                 self._wired[d.HwAddress.lower()] = d
                 pass
-            elif isinstance(d, NetworkManager.Bridge):
+            elif is_kind(d, 'Bridge'):
                  self._bridge[d.HwAddress.lower()] = d
                  pass
-            elif isinstance(d, NetworkManager.IPTunnel):
+            elif is_kind(d, 'IPTunnel'):
                 self._ip_tunnel[d.Interface] = d
                 pass
-            elif isinstance(d, NetworkManager.Tun):
+            elif is_kind(d, 'Tun'):
                 self._tun[d.Interface] = d
                 pass
             else:
-- 
GitLab