use payloads for PORT BEFORE_DELETE callbacks

This patch switches BEFORE_DELETE callback events for PORT resources
over to the payload style args use a DBEventPayload object in prep for
the depends on patch.

Change-Id: I8c4b2f3700bbf8ca9aad82c32a54e33c1ad06c3d
This commit is contained in:
Boden R
2018-08-24 12:02:18 -06:00
committed by Adit Sarfaty
parent a13d49b0ab
commit b534afa38e
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)