BigSwitch: correct net to backend on floating IP disassociation

The corrects the network that is updated on the backendw when a
floating IP is disassociated. It was incorrectly sending the
tenant's network when the update is to the external network the
floating address belongs to.

Closes-Bug: #1237209
Change-Id: I55211ba3b0062e167843830bb318eb8e46249160
This commit is contained in:
Kevin Benton 2013-10-08 23:02:20 -07:00
parent 2f2d58d6d1
commit 4fd2880f3f

View File

@ -1075,11 +1075,19 @@ class NeutronRestProxyV2(db_base_plugin_v2.NeutronDbPluginV2,
LOG.debug(_("NeutronRestProxyV2: diassociate_floatingips() called"))
super(NeutronRestProxyV2, self).disassociate_floatingips(context,
port_id)
port = super(NeutronRestProxyV2, self).get_port(context, port_id)
net_id = port['network_id']
orig_net = super(NeutronRestProxyV2, self).get_network(context,
net_id)
self._send_update_network(orig_net, context)
try:
ext_net_id = self.get_external_network_id(context)
if ext_net_id:
# Use the elevated state of the context for the ext_net query
admin_context = context.elevated()
ext_net = super(NeutronRestProxyV2,
self).get_network(admin_context, ext_net_id)
# update external network on network controller
self._send_update_network(ext_net, admin_context)
except exceptions.TooManyExternalNetworks:
# get_external_network can raise errors when multiple external
# networks are detected, which isn't supported by the Plugin
LOG.error(_("NeutronRestProxyV2: too many external networks"))
def _send_all_data(self):
"""Pushes all data to network ctrl (networks/ports, ports/attachments).