diff options
author | Jenkins <jenkins@review.openstack.org> | 2016-03-17 18:32:17 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2016-03-17 18:32:17 +0000 |
commit | 4471875a6153eff1807233ef4ad23af7962bce41 (patch) | |
tree | adeab6473c13012b960fb5ca74ceb0c8f4831e57 | |
parent | 3b4a27a3ccb861cf2899ea1fae6c1cc160b38fd7 (diff) | |
parent | b0b09a65b68fa0297538bfbcc40c15655617721e (diff) |
Merge "Fix hierarchy for Linux Bonds and Linux Bridges"
-rw-r--r-- | os_net_config/impl_ifcfg.py | 6 | ||||
-rw-r--r-- | os_net_config/objects.py | 2 | ||||
-rw-r--r-- | os_net_config/tests/test_impl_ifcfg.py | 14 |
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') |