aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Brown <cbrown2@ocf.co.uk>2016-03-10 15:18:33 +0000
committerChristopher Brown <cbrown2@ocf.co.uk>2016-04-05 16:25:47 +0000
commit8792d74c9115d48f1756c2a77f5ff4ed4a001cdf (patch)
tree9f6220aa4b5f00a9a26adef58598866197db377b
parentc545e46f8fe2362df81e86c187aa6e50be185ad6 (diff)
Use interface operstate to determine nic status
Fixes lp bug 1555669 Currently _is_active_nic performs multiple checks to see if a link is live. However some hardware such as Ethernet over USB devices fulfil this criteria. This causes tripleo deployments to fail if automatic interface naming is used. We can therefore use operstate to determine if the link is actually up. https://www.kernel.org/doc/Documentation/networking/operstates.txt This patch implements this. Implements: better link state detection Closes-Bug: #1555669 Change-Id: I0bdd0c987f4f177935df4f7cdcc70f4d99c988a5 Signed-off-by: Christopher Brown <snecklifter@gmail.com>
-rw-r--r--os_net_config/utils.py8
1 files changed, 4 insertions, 4 deletions
diff --git a/os_net_config/utils.py b/os_net_config/utils.py
index 4109081..da7ab11 100644
--- a/os_net_config/utils.py
+++ b/os_net_config/utils.py
@@ -58,15 +58,15 @@ def _is_active_nic(interface_name):
device_dir = _SYS_CLASS_NET + '/%s/device' % interface_name
has_device_dir = os.path.isdir(device_dir)
- carrier = None
- with open(_SYS_CLASS_NET + '/%s/carrier' % interface_name, 'r') as f:
- carrier = int(f.read().rstrip())
+ operstate = None
+ with open(_SYS_CLASS_NET + '/%s/operstate' % interface_name, 'r') as f:
+ operstate = f.read().rstrip()
address = None
with open(_SYS_CLASS_NET + '/%s/address' % interface_name, 'r') as f:
address = f.read().rstrip()
- if has_device_dir and carrier == 1 and address:
+ if has_device_dir and operstate == 'UP' and address:
return True
else:
return False