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
This commit is contained in:
mathieu-rohon 2013-10-09 11:13:04 +02:00
parent a668ae4e97
commit 901ecff6bc
3 changed files with 13 additions and 2 deletions

View File

@ -147,8 +147,8 @@ class IPWrapper(SubProcessBase):
device.link.set_netns(self.namespace) device.link.set_netns(self.namespace)
def add_vxlan(self, name, vni, group=None, dev=None, ttl=None, tos=None, def add_vxlan(self, name, vni, group=None, dev=None, ttl=None, tos=None,
local=None, port=None): local=None, port=None, proxy=False):
cmd = ['add', name, 'type', 'vxlan', 'id', vni, 'proxy'] cmd = ['add', name, 'type', 'vxlan', 'id', vni]
if group: if group:
cmd.extend(['group', group]) cmd.extend(['group', group])
if dev: if dev:
@ -159,6 +159,8 @@ class IPWrapper(SubProcessBase):
cmd.extend(['tos', tos]) cmd.extend(['tos', tos])
if local: if local:
cmd.extend(['local', local]) cmd.extend(['local', local])
if proxy:
cmd.append('proxy')
# tuple: min,max # tuple: min,max
if port and len(port) == 2: if port and len(port) == 2:
cmd.extend(['port', port[0], port[1]]) cmd.extend(['port', port[0], port[1]])

View File

@ -256,6 +256,8 @@ class LinuxBridgeManager:
args['ttl'] = cfg.CONF.VXLAN.ttl args['ttl'] = cfg.CONF.VXLAN.ttl
if cfg.CONF.VXLAN.tos: if cfg.CONF.VXLAN.tos:
args['tos'] = 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 = self.ip.add_vxlan(interface, segmentation_id, **args)
int_vxlan.link.set_up() int_vxlan.link.set_up()
LOG.debug(_("Done creating vxlan interface %s"), interface) LOG.debug(_("Done creating vxlan interface %s"), interface)

View File

@ -361,6 +361,13 @@ class TestLinuxBridgeManager(base.BaseTestCase):
add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id, add_vxlan_fn.assert_called_with("vxlan-" + seg_id, seg_id,
group="224.0.0.1", group="224.0.0.1",
dev=self.lbm.local_int) 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): def test_update_interface_ip_details(self):
gwdict = dict(gateway='1.1.1.1', gwdict = dict(gateway='1.1.1.1',