diff options
author | xinwu <xin.wu@bigswitch.com> | 2016-02-12 18:34:01 -0800 |
---|---|---|
committer | xinwu <xin.wu@bigswitch.com> | 2016-02-12 18:51:44 -0800 |
commit | cb4f56f72cd9a194661762c343c48392d70ba6ce (patch) | |
tree | 4cad8625debfeab761ac1ab4d65ce99218e85cd9 | |
parent | f00d545041b75b5d3e215bf435689e933dbb4f62 (diff) |
launchpad bug 1537330, fix _is_active_nic
The detailed bug description is at
https://bugs.launchpad.net/os-net-config/+bug/1537330
Since kilo, os-net-config starts to support linux bond.
However, the addr_assign_type value of an active member
interface of a linux bond is 3, but not 0. The consequence
of this problem is that the linux bond member links are
never considered as active, this further messes up the
nicX to interface name mapping.
This change checks if device directory exists, instead
of checking the addr_assign_type value. This directory
exists only when the interface is an actual physical
interface.
Change-Id: I8e4c95a2efa809fd236b07cbce1b81a2e774f858
-rw-r--r-- | os_net_config/utils.py | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/os_net_config/utils.py b/os_net_config/utils.py index ab7f3b3..4109081 100644 --- a/os_net_config/utils.py +++ b/os_net_config/utils.py @@ -55,10 +55,8 @@ def _is_active_nic(interface_name): if interface_name == 'lo': return False - addr_assign_type = None - with open(_SYS_CLASS_NET + '/%s/addr_assign_type' % interface_name, - 'r') as f: - addr_assign_type = int(f.read().rstrip()) + 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: @@ -68,7 +66,7 @@ def _is_active_nic(interface_name): with open(_SYS_CLASS_NET + '/%s/address' % interface_name, 'r') as f: address = f.read().rstrip() - if addr_assign_type == 0 and carrier == 1 and address: + if has_device_dir and carrier == 1 and address: return True else: return False |