Properly synchronize status for ports deleted from backend
Ensure that the status for a port is properly synchronized even when the port itself does not exist anymore in the backend, avoiding raising exceptions due to missing results in the NVP query. This patch also adjusts a comment and improves exception handling in _nvp_get_port_id Bug 1229331 Change-Id: Ibaa581006c994a543c1795dd3f1d50086583b953
This commit is contained in:
parent
a384a3ea3c
commit
979b32e2b5
@ -741,16 +741,16 @@ class NvpPluginV2(addr_pair_db.AllowedAddressPairsMixin,
|
|||||||
cluster,
|
cluster,
|
||||||
neutron_port['network_id'],
|
neutron_port['network_id'],
|
||||||
neutron_port['id'])
|
neutron_port['id'])
|
||||||
if nvp_port:
|
except NvpApiClient.NvpApiException:
|
||||||
nicira_db.add_neutron_nvp_port_mapping(
|
|
||||||
context.session,
|
|
||||||
neutron_port['id'],
|
|
||||||
nvp_port['uuid'])
|
|
||||||
return nvp_port['uuid']
|
|
||||||
except Exception:
|
|
||||||
LOG.exception(_("Unable to find NVP uuid for Neutron port %s"),
|
LOG.exception(_("Unable to find NVP uuid for Neutron port %s"),
|
||||||
neutron_port['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']
|
||||||
|
|
||||||
def _extend_fault_map(self):
|
def _extend_fault_map(self):
|
||||||
"""Extends the Neutron Fault Map.
|
"""Extends the Neutron Fault Map.
|
||||||
|
|
||||||
|
@ -381,17 +381,19 @@ class NvpSynchronizer():
|
|||||||
lswitchport = nvplib.get_port(
|
lswitchport = nvplib.get_port(
|
||||||
self._cluster, neutron_port_data['network_id'],
|
self._cluster, neutron_port_data['network_id'],
|
||||||
lp_uuid, relations='LogicalPortStatus')
|
lp_uuid, relations='LogicalPortStatus')
|
||||||
except exceptions.PortNotFoundOnNetwork:
|
except (exceptions.PortNotFoundOnNetwork):
|
||||||
# NOTE(salv-orlando): We should be catching
|
# NOTE(salv-orlando): We should be catching
|
||||||
# NvpApiClient.ResourceNotFound here
|
# NvpApiClient.ResourceNotFound here instead
|
||||||
# The logical switch port was not found
|
# of PortNotFoundOnNetwork when the id exists but
|
||||||
|
# the logical switch port was not found
|
||||||
LOG.warning(_("Logical switch port for neutron port %s "
|
LOG.warning(_("Logical switch port for neutron port %s "
|
||||||
"not found on NVP."), neutron_port_data['id'])
|
"not found on NVP."), neutron_port_data['id'])
|
||||||
lswitchport = None
|
lswitchport = None
|
||||||
else:
|
else:
|
||||||
# Update the cache
|
# If lswitchport is not None, update the cache.
|
||||||
self._nvp_cache.update_lswitchport(lswitchport)
|
# 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
|
# Note(salv-orlando): It might worth adding a check to verify neutron
|
||||||
# resource tag in nvp entity matches Neutron id.
|
# resource tag in nvp entity matches Neutron id.
|
||||||
# By default assume things go wrong
|
# By default assume things go wrong
|
||||||
|
Loading…
Reference in New Issue
Block a user