diff options
-rw-r--r-- | os_net_config/objects.py | 14 | ||||
-rw-r--r-- | os_net_config/tests/test_impl_eni.py | 5 | ||||
-rw-r--r-- | os_net_config/tests/test_impl_ifcfg.py | 5 | ||||
-rw-r--r-- | os_net_config/tests/test_objects.py | 20 |
4 files changed, 28 insertions, 16 deletions
diff --git a/os_net_config/objects.py b/os_net_config/objects.py index a6d0c03..417f34a 100644 --- a/os_net_config/objects.py +++ b/os_net_config/objects.py @@ -30,7 +30,8 @@ logger = logging.getLogger(__name__) _MAPPED_NICS = None -DEFAULT_OVS_BRIDGE_FAIL_MODE = 'standalone' +STANDALONE_FAIL_MODE = 'standalone' +DEFAULT_OVS_BRIDGE_FAIL_MODE = STANDALONE_FAIL_MODE class InvalidConfigException(ValueError): @@ -184,6 +185,13 @@ def format_ovs_extra(obj, templates): return [t.format(name=obj.name) for t in templates or []] +def _add_fail_mode(fail_mode): + ovs_extra = ['set bridge {name} fail_mode=%s' % fail_mode] + if fail_mode == STANDALONE_FAIL_MODE: + ovs_extra.append('del-controller {name}') + return ovs_extra + + class Route(object): """Base class for network routes.""" @@ -469,7 +477,7 @@ class OvsBridge(_BaseOpts): self.ovs_options = ovs_options ovs_extra = ovs_extra or [] if fail_mode: - ovs_extra.append('set bridge {name} fail_mode=%s' % fail_mode) + ovs_extra.extend(_add_fail_mode(fail_mode)) self.ovs_extra = format_ovs_extra(self, ovs_extra) for member in self.members: member.bridge_name = name @@ -526,7 +534,7 @@ class OvsUserBridge(_BaseOpts): self.ovs_options = ovs_options ovs_extra = ovs_extra or [] if fail_mode: - ovs_extra.append('set bridge {name} fail_mode=%s' % fail_mode) + ovs_extra.extend(_add_fail_mode(fail_mode)) self.ovs_extra = format_ovs_extra(self, ovs_extra) for member in self.members: member.bridge_name = name diff --git a/os_net_config/tests/test_impl_eni.py b/os_net_config/tests/test_impl_eni.py index 51354f8..902cc02 100644 --- a/os_net_config/tests/test_impl_eni.py +++ b/os_net_config/tests/test_impl_eni.py @@ -73,8 +73,9 @@ iface br0 inet dhcp pre-up ip addr flush dev eth0 """ -_OVS_BRIDGE_DHCP_STANDALONE = _OVS_BRIDGE_DHCP + \ - " ovs_extra set bridge br0 fail_mode=standalone\n" +_OVS_BRIDGE_DHCP_STANDALONE = _OVS_BRIDGE_DHCP + ( + " ovs_extra set bridge br0 fail_mode=standalone " + "-- del-controller br0\n") _OVS_BRIDGE_DHCP_SECURE = _OVS_BRIDGE_DHCP + \ " ovs_extra set bridge br0 fail_mode=secure\n" diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py index d41cf60..337eeb3 100644 --- a/os_net_config/tests/test_impl_ifcfg.py +++ b/os_net_config/tests/test_impl_ifcfg.py @@ -175,8 +175,9 @@ NM_CONTROLLED=yes PEERDNS=no """ -_OVS_BRIDGE_DHCP_STANDALONE = _OVS_BRIDGE_DHCP + \ - "OVS_EXTRA=\"set bridge br-ctlplane fail_mode=standalone\"\n" +_OVS_BRIDGE_DHCP_STANDALONE = _OVS_BRIDGE_DHCP + ( + "OVS_EXTRA=\"set bridge br-ctlplane fail_mode=standalone " + "-- del-controller br-ctlplane\"\n") _OVS_BRIDGE_DHCP_SECURE = _OVS_BRIDGE_DHCP + \ "OVS_EXTRA=\"set bridge br-ctlplane fail_mode=secure\"\n" diff --git a/os_net_config/tests/test_objects.py b/os_net_config/tests/test_objects.py index eb5adaf..1c07eee 100644 --- a/os_net_config/tests/test_objects.py +++ b/os_net_config/tests/test_objects.py @@ -344,10 +344,11 @@ class TestBridge(base.TestCase): } """ bridge = objects.object_from_json(json.loads(data)) - self.assertTrue(2 == len(bridge.ovs_extra)) - self.assertEqual("bar", bridge.ovs_extra[0]) - self.assertEqual("set bridge br-foo fail_mode=standalone", - bridge.ovs_extra[1]) + self.assertTrue(3 == len(bridge.ovs_extra)) + self.assertItemsEqual(["bar", + "set bridge br-foo fail_mode=standalone", + "del-controller br-foo"], + bridge.ovs_extra) def test_from_json_ovs_extra_string(self): data = """{ @@ -358,10 +359,10 @@ class TestBridge(base.TestCase): } """ bridge = objects.object_from_json(json.loads(data)) - self.assertTrue(2 == len(bridge.ovs_extra)) - self.assertEqual("bar", bridge.ovs_extra[0]) - self.assertEqual("set bridge br-foo fail_mode=standalone", - bridge.ovs_extra[1]) + self.assertItemsEqual(["bar", + "set bridge br-foo fail_mode=standalone", + "del-controller br-foo"], + bridge.ovs_extra) class TestLinuxBridge(base.TestCase): @@ -770,7 +771,8 @@ class TestOvsTunnel(base.TestCase): bridge = objects.object_from_json(json.loads(data)) self.assertEqual("br-foo", bridge.name) self.assertEqual(["set bridge br-foo something", - "set bridge br-foo fail_mode=standalone"], + "set bridge br-foo fail_mode=standalone", + "del-controller br-foo"], bridge.ovs_extra) tun0 = bridge.members[0] self.assertEqual("tun0", tun0.name) |