From d01acefc15cebcfc5b7d808d3ed4f41cbaf8d74d Mon Sep 17 00:00:00 2001 From: Dan Sneddon Date: Wed, 2 Sep 2015 17:07:48 -0700 Subject: Add Linux Bridge capability to os-net-config ifcfg This patch adds support for Linux Bridges to os-net-config. This is done completely with ifcfg files, brctl is not used directly. Hierarchy is preserved, so a Linux Bridge may have a Linux Bond as a member, which in turn may have multiple interfaces as members. This changeset has been updated to include a more specific example for Linux bridge configuration (that doesn't combine bridging and bonding). This change depends on the change to add support for Linux Bonds. Change-Id: I1ddacd514b02af30139a868071d82cde19b1f946 --- os_net_config/tests/test_objects.py | 76 +++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) (limited to 'os_net_config/tests/test_objects.py') diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py index 3d95bd6..a2e021b 100644 --- a/os_net_config/tests/test_objects.py +++ b/os_net_config/tests/test_objects.py @@ -267,6 +267,82 @@ class TestBridge(base.TestCase): self.assertEqual("br-foo", interface2.bridge_name) +class TestLinuxBridge(base.TestCase): + + def test_from_json_dhcp(self): + data = """{ +"type": "linux_bridge", +"name": "br-foo", +"use_dhcp": true, +"members": [{ + "type": "interface", + "name": "em1" +}] +} +""" + bridge = objects.object_from_json(json.loads(data)) + self.assertEqual("br-foo", bridge.name) + self.assertEqual(True, bridge.use_dhcp) + interface1 = bridge.members[0] + self.assertEqual("em1", interface1.name) + self.assertEqual(False, interface1.ovs_port) + self.assertEqual("br-foo", interface1.linux_bridge_name) + + def test_from_json_dhcp_with_nic1(self): + def dummy_numbered_nics(nic_mapping=None): + return {"nic1": "em5"} + self.stubs.Set(objects, '_numbered_nics', dummy_numbered_nics) + + data = """{ +"type": "linux_bridge", +"name": "br-foo", +"use_dhcp": true, +"members": [{ + "type": "interface", + "name": "nic1" +}] +} +""" + bridge = objects.object_from_json(json.loads(data)) + self.assertEqual("br-foo", bridge.name) + self.assertEqual(True, bridge.use_dhcp) + interface1 = bridge.members[0] + self.assertEqual("em5", interface1.name) + self.assertEqual(False, interface1.ovs_port) + self.assertEqual("br-foo", interface1.linux_bridge_name) + + def test_from_json_primary_interface(self): + data = """{ +"type": "linux_bridge", +"name": "br-foo", +"use_dhcp": true, +"members": [ + { + "type": "interface", + "name": "em1", + "primary": "true" + }, + { + "type": "interface", + "name": "em2" + }] +} +""" + bridge = objects.object_from_json(json.loads(data)) + self.assertEqual("br-foo", bridge.name) + self.assertEqual(True, bridge.use_dhcp) + self.assertEqual("em1", bridge.primary_interface_name) + interface1 = bridge.members[0] + self.assertEqual("em1", interface1.name) + self.assertEqual(False, interface1.ovs_port) + self.assertEqual(True, interface1.primary) + self.assertEqual("br-foo", interface1.linux_bridge_name) + interface2 = bridge.members[1] + self.assertEqual("em2", interface2.name) + self.assertEqual(False, interface2.ovs_port) + self.assertEqual("br-foo", interface2.linux_bridge_name) + + class TestBond(base.TestCase): def test_from_json_dhcp(self): -- cgit 1.2.3-korg