diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py
index 4cfe367..5d366b9 100755
--- a/cloudinit/net/__init__.py
+++ b/cloudinit/net/__init__.py
@@ -123,40 +123,37 @@ def generate_fallback_config():
# and ignore interfaces that are definitely disconnected
connected = []
possibly_connected = []
+
+ def sys_net_int(iface, field):
+ val = read_sys_net(iface, field, enoent=False)
+ try:
+ return int(val)
+ except TypeError:
+ return None
+
for interface in potential_interfaces:
if interface.startswith("veth"):
continue
if os.path.exists(sys_dev_path(interface, "bridge")):
# skip any bridges
continue
- try:
- carrier = read_sys_net(interface, 'carrier', enoent=False)
- if carrier:
- carrier = int(carrier)
- if carrier:
- connected.append(interface)
- continue
- except (IOError, OSError, TypeError):
- pass
+
+ carrier = sys_net_int(interface, 'carrier')
+ if carrier:
+ connected.append(interface)
+ continue
# check if nic is dormant or down, as this may make a nick appear to
# not have a carrier even though it could acquire one when brought
# online by dhclient
- try:
- dormant = read_sys_net(interface, 'dormant', enoent=False)
- if dormant:
- dormant = int(dormant)
- if dormant:
- possibly_connected.append(interface)
- continue
- except (IOError, OSError, TypeError):
- pass
- try:
- operstate = read_sys_net(interface, 'operstate', enoent=False)
- if operstate in ['dormant', 'down', 'lowerlayerdown', 'unknown']:
- possibly_connected.append(interface)
- continue
- except (IOError, OSError):
- pass
+ dormant = read_sys_net(interface, 'dormant')
+ if dormant:
+ possibly_connected.append(interface)
+ continue
+
+ operstate = read_sys_net(interface, 'operstate', enoent=False)
+ if operstate in ['dormant', 'down', 'lowerlayerdown', 'unknown']:
+ possibly_connected.append(interface)
+ continue
# don't bother with interfaces that might not be connected if there are
# some that definitely are
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
index bb4ad98..f5de5a2 100755
--- a/tests/unittests/test_net.py
+++ b/tests/unittests/test_net.py
@@ -475,7 +475,7 @@ def _setup_test(tmp_dir, mock_get_devicelist, mock_read_sys_net,
}
def fake_read(devname, path, translate=None, enoent=None, keyerror=None):
- return dev_characteristics[name][field]
+ return dev_characteristics[devname][path]
mock_read_sys_net.side_effect = fake_read