From: mathieu-rohon Date: Wed, 9 Oct 2013 09:13:04 +0000 (+0200) Subject: use proxy mode on vxlan interface only when l2-population is activated X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=c471fdc7b3bda60a3419a122357fba2a4facdff2;p=openstack-build%2Fneutron-build.git use proxy mode on vxlan interface only when l2-population is activated the proxy mode was set by default on every vxlan interfaces which leads to inaccessibility between VM that are not hosted on the same host in a vxlan network Closes-Bug: #1237082 Change-Id: I34028ee0bdfdccda61c6a29f58759259da060b68 (cherry picked from commit 345f8e1fdc65e0cf23369488d4318c0755d6b65d) --- diff --git a/neutron/agent/linux/ip_lib.py b/neutron/agent/linux/ip_lib.py index c8a0e672a..b4c9bd072 100644 --- a/neutron/agent/linux/ip_lib.py +++ b/neutron/agent/linux/ip_lib.py @@ -147,8 +147,8 @@ class IPWrapper(SubProcessBase): device.link.set_netns(self.namespace) def add_vxlan(self, name, vni, group=None, dev=None, ttl=None, tos=None, - local=None, port=None): - cmd = ['add', name, 'type', 'vxlan', 'id', vni, 'proxy'] + local=None, port=None, proxy=False): + cmd = ['add', name, 'type', 'vxlan', 'id', vni] if group: cmd.extend(['group', group]) if dev: @@ -159,6 +159,8 @@ class IPWrapper(SubProcessBase): cmd.extend(['tos', tos]) if local: cmd.extend(['local', local]) + if proxy: + cmd.append('proxy') # tuple: min,max if port and len(port) == 2: cmd.extend(['port', port[0], port[1]]) diff --git a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py index d7159a37b..30f127405 100755 --- a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py +++ b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py @@ -256,6 +256,8 @@ class LinuxBridgeManager: args['ttl'] = cfg.CONF.VXLAN.ttl if cfg.CONF.VXLAN.tos: args['tos'] = cfg.CONF.VXLAN.tos + if cfg.CONF.VXLAN.l2_population: + args['proxy'] = True int_vxlan = self.ip.add_vxlan(interface, segmentation_id, **args) int_vxlan.link.set_up() LOG.debug(_("Done creating vxlan interface %s"), interface) diff --git a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py index f11573369..535900dd9 100644 --- a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py +++ b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py @@ -361,6 +361,13 @@ class TestLinuxBridgeManager(base.BaseTestCase): add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id, group="224.0.0.1", dev=self.lbm.local_int) + cfg.CONF.set_override('l2_population', 'True', 'VXLAN') + self.assertEqual(self.lbm.ensure_vxlan(seg_id), + "vxlan-" + seg_id) + add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id, + group="224.0.0.1", + dev=self.lbm.local_int, + proxy=True) def test_update_interface_ip_details(self): gwdict = dict(gateway='1.1.1.1',