diff --git a/neutron/agent/l2population_rpc.py b/neutron/agent/l2population_rpc.py index 737e2493ef..2798eee5e7 100644 --- a/neutron/agent/l2population_rpc.py +++ b/neutron/agent/l2population_rpc.py @@ -242,12 +242,12 @@ class L2populationRpcCallBackTunnelMixin(L2populationRpcCallBackMixin): if agent_ip == local_ip: continue - after = state.get('after') + after = state.get('after', []) for mac, ip in after: self.setup_entry_for_arp_reply(br, 'add', lvm.vlan, mac, ip) - before = state.get('before') + before = state.get('before', []) for mac, ip in before: self.setup_entry_for_arp_reply(br, 'remove', lvm.vlan, mac, ip) diff --git a/neutron/tests/unit/agent/test_l2population_rpc.py b/neutron/tests/unit/agent/test_l2population_rpc.py index 7b1e053449..563c53b19d 100644 --- a/neutron/tests/unit/agent/test_l2population_rpc.py +++ b/neutron/tests/unit/agent/test_l2population_rpc.py @@ -234,3 +234,17 @@ class TestL2populationRpcCallBackTunnelMixin( upd_fdb_entry_val, self.local_ip, self.local_vlan_map1) self.assertFalse(m_setup_entry_for_arp_reply.call_count) + + def test_fdb_chg_ip_tun_empty_before_after(self): + upd_fdb_entry_val = { + self.lvms[0].net: { + self.local_ip: {}, + }, + } + m_setup_entry_for_arp_reply = mock.Mock() + self.fakeagent.setup_entry_for_arp_reply = m_setup_entry_for_arp_reply + # passing non-local ip + self.fakeagent.fdb_chg_ip_tun('context', self.fakebr, + upd_fdb_entry_val, "8.8.8.8", + self.local_vlan_map1) + self.assertFalse(m_setup_entry_for_arp_reply.call_count)