From d38ed5051b7b44ee05e47795a4e6c758e7541efe Mon Sep 17 00:00:00 2001 From: Eugene Nikanorov Date: Fri, 12 Sep 2014 09:05:39 +0400 Subject: [PATCH] Properly handle empty before/after notifications in l2pop code Change-Id: I8644bb7cc2afb3b181397a478f96927990c0a4ca Closes-Bug: #1367881 --- neutron/agent/l2population_rpc.py | 4 ++-- neutron/tests/unit/agent/test_l2population_rpc.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/neutron/agent/l2population_rpc.py b/neutron/agent/l2population_rpc.py index 93f6395dd9..4a485c4ce1 100644 --- a/neutron/agent/l2population_rpc.py +++ b/neutron/agent/l2population_rpc.py @@ -246,12 +246,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)