summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWesley Wiedenmeier <wesley.wiedenmeier@gmail.com>2016-03-22 00:33:35 -0500
committerWesley Wiedenmeier <wesley.wiedenmeier@gmail.com>2016-03-22 00:33:35 -0500
commit2aacb06be37e7e8aa84d11ae8c566a26f9df27e4 (patch)
treea22c7b38f8cb9132cdd40ed86c6c2d45f140810e
parent4c3468985d93929df4e9486b2e68938806fbfa1b (diff)
downloadvyos-cloud-init-2aacb06be37e7e8aa84d11ae8c566a26f9df27e4.tar.gz
vyos-cloud-init-2aacb06be37e7e8aa84d11ae8c566a26f9df27e4.zip
Wrap read calls to /sys/class/net/DEV/{carrier, dormant, operstate} in
try/except blocks because there are sometimes read errors on the files and this should not cause a stacktrace
-rw-r--r--cloudinit/net/__init__.py40
1 files changed, 25 insertions, 15 deletions
diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py
index 800ffe61..e5b45926 100644
--- a/cloudinit/net/__init__.py
+++ b/cloudinit/net/__init__.py
@@ -306,24 +306,34 @@ def find_fallback_network_device():
connected = []
possibly_connected = []
for interface in potential_interfaces:
- sysfs_carrier = os.path.join(SYS_CLASS_NET, interface, 'carrier')
- carrier = int(util.load_file(sysfs_carrier).strip())
- if carrier:
- connected.append(interface)
- continue
+ try:
+ sysfs_carrier = os.path.join(SYS_CLASS_NET, interface, 'carrier')
+ carrier = int(util.load_file(sysfs_carrier).strip())
+ if carrier:
+ connected.append(interface)
+ continue
+ except OSError:
+ pass
# 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
- sysfs_dormant = os.path.join(SYS_CLASS_NET, interface, 'dormant')
- dormant = int(util.load_file(sysfs_dormant).strip())
- if dormant:
- possibly_connected.append(interface)
- continue
- sysfs_operstate = os.path.join(SYS_CLASS_NET, interface, 'operstate')
- operstate = util.load_file(sysfs_operstate).strip()
- if operstate in ['dormant', 'down', 'lowerlayerdown', 'unknown']:
- possibly_connected.append(interface)
- continue
+ try:
+ sysfs_dormant = os.path.join(SYS_CLASS_NET, interface, 'dormant')
+ dormant = int(util.load_file(sysfs_dormant).strip())
+ if dormant:
+ possibly_connected.append(interface)
+ continue
+ except OSError:
+ pass
+ try:
+ sysfs_operstate = os.path.join(SYS_CLASS_NET, interface,
+ 'operstate')
+ operstate = util.load_file(sysfs_operstate).strip()
+ if operstate in ['dormant', 'down', 'lowerlayerdown', 'unknown']:
+ possibly_connected.append(interface)
+ continue
+ except OSError:
+ pass
# don't bother with interfaces that might not be connected if there are
# some that definitely are