aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config/utils.py
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 /os_net_config/utils.py
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>
Diffstat (limited to 'os_net_config/utils.py')
-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