diff --git a/neutron/plugins/nicira/NeutronPlugin.py b/neutron/plugins/nicira/NeutronPlugin.py index ae052a66db..3abe5d4b75 100644 --- a/neutron/plugins/nicira/NeutronPlugin.py +++ b/neutron/plugins/nicira/NeutronPlugin.py @@ -741,16 +741,16 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin, cluster, neutron_port['network_id'], neutron_port['id']) - if nvp_port: - nicira_db.add_neutron_nvp_port_mapping( - context.session, - neutron_port['id'], - nvp_port['uuid']) - return nvp_port['uuid'] - except Exception: + except NvpApiClient.NvpApiException: LOG.exception(_("Unable to find NVP uuid for Neutron port %s"), neutron_port['id']) + if nvp_port: + nicira_db.add_neutron_nvp_port_mapping( + context.session, neutron_port['id'], + nvp_port['uuid']) + return nvp_port['uuid'] + def _extend_fault_map(self): """Extends the Neutron Fault Map. diff --git a/neutron/plugins/nicira/common/sync.py b/neutron/plugins/nicira/common/sync.py index 687702e7cc..dfbc79afa9 100644 --- a/neutron/plugins/nicira/common/sync.py +++ b/neutron/plugins/nicira/common/sync.py @@ -381,17 +381,19 @@ class NvpSynchronizer(): lswitchport = nvplib.get_port( self._cluster, neutron_port_data['network_id'], lp_uuid, relations='LogicalPortStatus') - except exceptions.PortNotFoundOnNetwork: + except (exceptions.PortNotFoundOnNetwork): # NOTE(salv-orlando): We should be catching - # NvpApiClient.ResourceNotFound here - # The logical switch port was not found + # NvpApiClient.ResourceNotFound here instead + # of PortNotFoundOnNetwork when the id exists but + # the logical switch port was not found LOG.warning(_("Logical switch port for neutron port %s " "not found on NVP."), neutron_port_data['id']) lswitchport = None else: - # Update the cache - self._nvp_cache.update_lswitchport(lswitchport) - + # If lswitchport is not None, update the cache. + # It could be none if the port was deleted from the backend + if lswitchport: + self._nvp_cache.update_lswitchport(lswitchport) # Note(salv-orlando): It might worth adding a check to verify neutron # resource tag in nvp entity matches Neutron id. # By default assume things go wrong