From 1476ee63ad9251d8956f6c3c9aece18c351a3ba9 Mon Sep 17 00:00:00 2001 From: Darragh O'Reilly Date: Tue, 17 Mar 2015 16:03:51 +0000 Subject: [PATCH] lb-agent: use 'replace' instead of 'add' with 'bridge fdb' l2pop on the linuxbridge agent can fail to add permanent entries because the 'bridge fdb add' command fails if a temporary entry exists. This patch uses 'replace' which always works. Closes-Bug: 1367999 Change-Id: I4371f508ad23d96de950634b4a90218ea474f3f0 --- neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py | 3 ++- neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py index 50cab5dc1..c4eee0884 100644 --- a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py +++ b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py @@ -613,7 +613,8 @@ class LinuxBridgeManager(object): for mac, ip in ports: if mac != constants.FLOODING_ENTRY[0]: self.add_fdb_ip_entry(mac, ip, interface) - self.add_fdb_bridge_entry(mac, agent_ip, interface) + self.add_fdb_bridge_entry(mac, agent_ip, interface, + operation="replace") elif self.vxlan_mode == lconst.VXLAN_UCAST: if self.fdb_bridge_entry_exists(mac, interface): self.add_fdb_bridge_entry(mac, agent_ip, interface, diff --git a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py index c80ee67e9..0f7f85e07 100644 --- a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py +++ b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py @@ -972,7 +972,7 @@ class TestLinuxBridgeRpcCallbacks(base.BaseTestCase): 'port_mac', 'dev', 'vxlan-1', 'nud', 'permanent'], run_as_root=True, check_exit_code=False), - mock.call(['bridge', 'fdb', 'add', 'port_mac', 'dev', + mock.call(['bridge', 'fdb', 'replace', 'port_mac', 'dev', 'vxlan-1', 'dst', 'agent_ip'], run_as_root=True, check_exit_code=False), -- 2.45.2