NSX|V: ensure that DHCP bindings are deleted

There are cases where a DHCP binding may not be deleted. This is
when for example a nova boot does not succeed. The plugin would
only delete the binding if the device owner was 'compute'. But
nova may reset that data and the binding on the backend may never
get deleted.

The code also validates that a binding entry exists. If it does
then it will send a message to the NSX.

Change-Id: Icb0fec03e67dad97329b9d57c67d7398bd52a86b
This commit is contained in:
Gary Kotton 2016-01-25 15:35:04 -08:00
parent 37b7a487e1
commit d9d5e226c9

View File

@ -276,11 +276,9 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
def _delete_dhcp_static_binding(self, context, neutron_port_db): def _delete_dhcp_static_binding(self, context, neutron_port_db):
network_id = neutron_port_db['network_id'] network_id = neutron_port_db['network_id']
device_owner = neutron_port_db['device_owner'] self.edge_manager.delete_dhcp_binding(
if device_owner.startswith("compute"): context, neutron_port_db['id'], network_id,
self.edge_manager.delete_dhcp_binding( neutron_port_db['mac_address'])
context, neutron_port_db['id'], network_id,
neutron_port_db['mac_address'])
def _validate_provider_create(self, context, network): def _validate_provider_create(self, context, network):
if not attr.is_attr_set(network.get(mpnet.SEGMENTS)): if not attr.is_attr_set(network.get(mpnet.SEGMENTS)):