From eafebec2d3f6d0bd0ecc6e6d7c4f1ae421a44dfe Mon Sep 17 00:00:00 2001 From: Ihar Hrachyshka Date: Thu, 19 Jun 2014 13:58:48 +0200 Subject: [PATCH] VMWare: don't notify on disassociate_floatingips() L3 agent notifications don't make sense for NSX VMWare plugin since there is no L3 agent in such setup, so disabling them here. Updated a unit test to check that notification is indeed not requested. Change-Id: I9c7c32d02d466098d22df8f10448361c3d99174c Related-Bug: 1330955 --- neutron/plugins/vmware/plugins/base.py | 6 ++- neutron/tests/unit/vmware/test_nsx_plugin.py | 39 +++++++++++--------- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/neutron/plugins/vmware/plugins/base.py b/neutron/plugins/vmware/plugins/base.py index 072fd20eb..ce403e697 100644 --- a/neutron/plugins/vmware/plugins/base.py +++ b/neutron/plugins/vmware/plugins/base.py @@ -2039,7 +2039,11 @@ class NsxPluginV2(addr_pair_db.AllowedAddressPairsMixin, except n_exc.NotFound: LOG.warning(_("Nat rules not found in nsx for port: %s"), id) - super(NsxPluginV2, self).disassociate_floatingips(context, port_id) + # NOTE(ihrachys): L3 agent notifications don't make sense for + # NSX VMWare plugin since there is no L3 agent in such setup, so + # disabling them here. + super(NsxPluginV2, self).disassociate_floatingips( + context, port_id, do_notify=False) def create_network_gateway(self, context, network_gateway): """Create a layer-2 network gateway. diff --git a/neutron/tests/unit/vmware/test_nsx_plugin.py b/neutron/tests/unit/vmware/test_nsx_plugin.py index b214add03..6e814b385 100644 --- a/neutron/tests/unit/vmware/test_nsx_plugin.py +++ b/neutron/tests/unit/vmware/test_nsx_plugin.py @@ -958,23 +958,28 @@ class TestL3NatTestCase(L3NatTest, with self.port() as p: private_sub = {'subnet': {'id': p['port']['fixed_ips'][0]['subnet_id']}} - with self.floatingip_no_assoc(private_sub) as fip: - port_id = p['port']['id'] - body = self._update('floatingips', fip['floatingip']['id'], - {'floatingip': {'port_id': port_id}}) - self.assertEqual(body['floatingip']['port_id'], port_id) - # Floating IP status should be active - self.assertEqual(constants.FLOATINGIP_STATUS_ACTIVE, - body['floatingip']['status']) - # Disassociate - body = self._update('floatingips', fip['floatingip']['id'], - {'floatingip': {'port_id': None}}) - body = self._show('floatingips', fip['floatingip']['id']) - self.assertIsNone(body['floatingip']['port_id']) - self.assertIsNone(body['floatingip']['fixed_ip_address']) - # Floating IP status should be down - self.assertEqual(constants.FLOATINGIP_STATUS_DOWN, - body['floatingip']['status']) + plugin = manager.NeutronManager.get_plugin() + with mock.patch.object(plugin, 'notify_routers_updated') as notify: + with self.floatingip_no_assoc(private_sub) as fip: + port_id = p['port']['id'] + body = self._update('floatingips', fip['floatingip']['id'], + {'floatingip': {'port_id': port_id}}) + self.assertEqual(body['floatingip']['port_id'], port_id) + # Floating IP status should be active + self.assertEqual(constants.FLOATINGIP_STATUS_ACTIVE, + body['floatingip']['status']) + # Disassociate + body = self._update('floatingips', fip['floatingip']['id'], + {'floatingip': {'port_id': None}}) + body = self._show('floatingips', fip['floatingip']['id']) + self.assertIsNone(body['floatingip']['port_id']) + self.assertIsNone(body['floatingip']['fixed_ip_address']) + # Floating IP status should be down + self.assertEqual(constants.FLOATINGIP_STATUS_DOWN, + body['floatingip']['status']) + + # check that notification was not requested + self.assertFalse(notify.called) def test_create_router_maintenance_returns_503(self): with self._create_l3_ext_network() as net: