summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-03-17 18:32:17 +0000
committerGerrit Code Review <review@openstack.org>2016-03-17 18:32:17 +0000
commit4471875a6153eff1807233ef4ad23af7962bce41 (patch)
treeadeab6473c13012b960fb5ca74ceb0c8f4831e57
parent3b4a27a3ccb861cf2899ea1fae6c1cc160b38fd7 (diff)
parentb0b09a65b68fa0297538bfbcc40c15655617721e (diff)
Merge "Fix hierarchy for Linux Bonds and Linux Bridges"
-rw-r--r--os_net_config/impl_ifcfg.py6
-rw-r--r--os_net_config/objects.py2
-rw-r--r--os_net_config/tests/test_impl_ifcfg.py14
3 files changed, 21 insertions, 1 deletions
diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py
index 27b8579..0fe6ae1 100644
--- a/os_net_config/impl_ifcfg.py
+++ b/os_net_config/impl_ifcfg.py
@@ -94,6 +94,9 @@ class IfcfgNetConfig(os_net_config.NetConfig):
data += "VLAN=yes\n"
if base_opt.device:
data += "PHYSDEV=%s\n" % base_opt.device
+ else:
+ if base_opt.linux_bond_name:
+ data += "PHYSDEV=%s\n" % base_opt.linux_bond_name
elif isinstance(base_opt, objects.IvsInterface):
data += "TYPE=IVSIntPort\n"
elif re.match('\w+\.\d+$', base_opt.name):
@@ -168,7 +171,8 @@ class IfcfgNetConfig(os_net_config.NetConfig):
members = [member.name for member in base_opt.members]
self.member_names[base_opt.name] = members
for member in members:
- self.bond_slaves[member] = base_opt.name
+ if isinstance(member, objects.Interface):
+ self.bond_slaves[member] = base_opt.name
if base_opt.bonding_options:
data += "BONDING_OPTS=\"%s\"\n" % base_opt.bonding_options
else:
diff --git a/os_net_config/objects.py b/os_net_config/objects.py
index 2b6d4bf..4f3e0d5 100644
--- a/os_net_config/objects.py
+++ b/os_net_config/objects.py
@@ -171,6 +171,7 @@ class _BaseOpts(object):
self.bridge_name = None # internal
self.linux_bridge_name = None # internal
self.ivs_bridge_name = None # internal
+ self.linux_bond_name = None # internal
self.ovs_port = False # internal
self.primary_interface_name = None # internal
@@ -515,6 +516,7 @@ class LinuxBond(_BaseOpts):
self.members = members
self.bonding_options = bonding_options
for member in self.members:
+ member.linux_bond_name = name
if member.primary:
if self.primary_interface_name:
msg = 'Only one primary interface allowed per bond.'
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py
index f92b0a6..3500e4c 100644
--- a/os_net_config/tests/test_impl_ifcfg.py
+++ b/os_net_config/tests/test_impl_ifcfg.py
@@ -178,6 +178,11 @@ OVS_OPTIONS="tag=5"
BOOTPROTO=none
"""
+_VLAN_LINUX_BRIDGE = _BASE_VLAN_OVS + """VLAN=yes
+BRIDGE=br-ctlplane
+BOOTPROTO=none
+"""
+
_OVS_BOND_DHCP = """# This file is autogenerated by os-net-config
DEVICE=bond0
@@ -447,6 +452,15 @@ class TestIfcfgNetConfig(base.TestCase):
self.provider.add_bridge(bridge)
self.assertEqual(_VLAN_OVS_BRIDGE, self.get_interface_config('vlan5'))
+ def test_add_linux_bridge_with_vlan(self):
+ vlan = objects.Vlan(None, 5)
+ bridge = objects.LinuxBridge('br-ctlplane', use_dhcp=True,
+ members=[vlan])
+ self.provider.add_vlan(vlan)
+ self.provider.add_bridge(bridge)
+ self.assertEqual(_VLAN_LINUX_BRIDGE,
+ self.get_interface_config('vlan5'))
+
def test_ovs_bond(self):
interface1 = objects.Interface('em1')
interface2 = objects.Interface('em2')