Merge "use payloads for PORT BEFORE_DELETE callbacks"

This commit is contained in:
Zuul 2019-02-03 09:55:54 +00:00 committed by Gerrit Code Review
commit e3613af0a1
5 changed files with 23 additions and 24 deletions

View File

@ -496,12 +496,13 @@ def _update_port_in_external_dns_service(resource, event, trigger, **kwargs):
updated_ips) updated_ips)
def _delete_port_in_external_dns_service(resource, event, trigger, **kwargs): def _delete_port_in_external_dns_service(resource, event,
trigger, payload=None):
dns_driver = _get_dns_driver() dns_driver = _get_dns_driver()
if not dns_driver: if not dns_driver:
return return
context = kwargs['context'] context = payload.context
port_id = kwargs['port_id'] port_id = payload.resource_id
dns_data_db = obj_reg.load_class('PortDNS').get_object( dns_data_db = obj_reg.load_class('PortDNS').get_object(
context, port_id=port_id) context, port_id=port_id)
if not dns_data_db: if not dns_data_db:

View File

@ -297,15 +297,16 @@ class NsxTVDPlugin(agentschedulers_db.AZDhcpAgentSchedulerDbMixin,
resources.PORT, events.BEFORE_DELETE) resources.PORT, events.BEFORE_DELETE)
@staticmethod @staticmethod
def _prevent_l3_port_delete_callback(resource, event, trigger, **kwargs): def _prevent_l3_port_delete_callback(resource, event,
trigger, payload=None):
"""Register a callback to replace the default one """Register a callback to replace the default one
This callback will prevent port deleting only if the port plugin This callback will prevent port deleting only if the port plugin
is not NSX-T (in NSX-T plugin it was already handled) is not NSX-T (in NSX-T plugin it was already handled)
""" """
context = kwargs['context'] context = payload.context
port_id = kwargs['port_id'] port_id = payload.resource_id
port_check = kwargs['port_check'] port_check = payload.metadata['port_check']
l3plugin = directory.get_plugin(plugin_constants.L3) l3plugin = directory.get_plugin(plugin_constants.L3)
if l3plugin and port_check: if l3plugin and port_check:
# if not nsx-t - call super code # if not nsx-t - call super code

View File

@ -2562,13 +2562,11 @@ class NsxVPluginV2(addr_pair_db.AllowedAddressPairsMixin,
def delete_port(self, context, id, l3_port_check=True, def delete_port(self, context, id, l3_port_check=True,
nw_gw_port_check=True, force_delete_dhcp=False, nw_gw_port_check=True, force_delete_dhcp=False,
allow_delete_internal=False): allow_delete_internal=False):
kwargs = {
'context': context,
'port_check': l3_port_check,
'port_id': id,
}
# Send delete port notification to any interested service plugin # Send delete port notification to any interested service plugin
registry.notify(resources.PORT, events.BEFORE_DELETE, self, **kwargs) registry.publish(resources.PORT, events.BEFORE_DELETE, self,
payload=events.DBEventPayload(
context, resource_id=id,
metadata={'port_check': l3_port_check}))
neutron_db_port = self.get_port(context, id) neutron_db_port = self.get_port(context, id)
device_id = neutron_db_port['device_id'] device_id = neutron_db_port['device_id']

View File

@ -1667,14 +1667,12 @@ class NsxV3Plugin(nsx_plugin_common.NsxPluginV3Base,
def _pre_delete_port_check(self, context, port_id, l2gw_port_check): def _pre_delete_port_check(self, context, port_id, l2gw_port_check):
"""Perform checks prior to deleting a port.""" """Perform checks prior to deleting a port."""
try: try:
kwargs = {
'context': context,
'port_check': l2gw_port_check,
'port_id': port_id,
}
# Send delete port notification to any interested service plugin # Send delete port notification to any interested service plugin
registry.notify( registry.publish(
resources.PORT, events.BEFORE_DELETE, self, **kwargs) resources.PORT, events.BEFORE_DELETE, self,
payload=events.DBEventPayload(
context, resource_id=port_id,
metadata={'port_check': l2gw_port_check}))
except callback_exc.CallbackFailure as e: except callback_exc.CallbackFailure as e:
if len(e.errors) == 1: if len(e.errors) == 1:
raise e.errors[0].error raise e.errors[0].error

View File

@ -132,10 +132,11 @@ class NsxV3Driver(l2gateway_db.L2GatewayMixin):
def_l2gw_exists = True def_l2gw_exists = True
return l2_gateway return l2_gateway
def _prevent_l2gw_port_delete(self, resource, event, trigger, **kwargs): def _prevent_l2gw_port_delete(self, resource, event,
context = kwargs.get('context') trigger, payload=None):
port_id = kwargs.get('port_id') context = payload.context
port_check = kwargs.get('port_check') port_id = payload.resource_id
port_check = payload.metadata['port_check']
if port_check: if port_check:
self.prevent_l2gw_port_deletion(context, port_id) self.prevent_l2gw_port_deletion(context, port_id)