Big Switch: Send notification after port update

The Big Switch plugin was not sending port update
notifications for security group changes after the
port was updated. This patch corrects that behavior
by calling the port_update method on the RPC notifier
when necessary after a port update.

Closes-Bug: #1376527
Change-Id: Ic2fd872725c1da8e2dc394473b7feb407d21268f
This commit is contained in:
Angus Lees 2014-08-28 14:42:18 +10:00
parent a0bc00dc9c
commit b1b3ac4aa8
2 changed files with 19 additions and 2 deletions

View File

@ -785,11 +785,14 @@ class NeutronRestProxyV2(NeutronRestProxyV2Base,
self.servers.rest_update_port(net_tenant_id,
new_port["network_id"],
mapped_port)
agent_update_required = self.update_security_group_on_port(
need_port_update_notify = self.update_security_group_on_port(
context, port_id, port, orig_port, new_port)
agent_update_required |= self.is_security_group_member_updated(
need_port_update_notify |= self.is_security_group_member_updated(
context, orig_port, new_port)
if need_port_update_notify:
self.notifier.port_update(context, new_port)
# return new_port
return new_port

View File

@ -294,6 +294,20 @@ class TestBigSwitchProxyNetworksV2(test_plugin.TestNetworksV2,
self._get_networks(n['network']['tenant_id']
)[0]['id'])
def test_notify_on_security_group_change(self):
plugin = manager.NeutronManager.get_plugin()
with self.port() as p:
with contextlib.nested(
mock.patch.object(plugin, 'notifier'),
mock.patch.object(plugin, 'is_security_group_member_updated',
return_value=True)
) as (n_mock, s_mock):
# any port update should trigger a notification due to s_mock
data = {'port': {'name': 'aNewName'}}
self.new_update_request(
'ports', data, p['port']['id']).get_response(self.api)
self.assertTrue(n_mock.port_update.called)
class TestBigSwitchProxySubnetsV2(test_plugin.TestSubnetsV2,
BigSwitchProxyPluginV2TestCase):