diff --git a/neutron/db/db_base_plugin_v2.py b/neutron/db/db_base_plugin_v2.py index 41f9b83e203..76867cb7af7 100644 --- a/neutron/db/db_base_plugin_v2.py +++ b/neutron/db/db_base_plugin_v2.py @@ -1056,7 +1056,8 @@ class NeutronDbPluginV2(db_base_plugin_common.DbBasePluginCommon, with db_api.exc_to_retry(sql_exc.IntegrityError), \ db_api.CONTEXT_WRITER.using(context): registry.notify(resources.SUBNET, events.PRECOMMIT_DELETE, - self, context=context, subnet_id=subnet.id) + self, context=context, subnet_id=subnet.id, + subnet_obj=subnet) subnet.delete() # Delete related ipam subnet manually, # since there is no FK relationship diff --git a/neutron/plugins/ml2/plugin.py b/neutron/plugins/ml2/plugin.py index 76e29072269..817d32f9687 100644 --- a/neutron/plugins/ml2/plugin.py +++ b/neutron/plugins/ml2/plugin.py @@ -1349,11 +1349,11 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2, @registry.receives(resources.SUBNET, [events.PRECOMMIT_DELETE], priority=0) def _subnet_delete_precommit_handler(self, rtype, event, trigger, context, subnet_id, **kwargs): - subnet_obj = self._get_subnet_object(context, subnet_id) + subnet_obj = (kwargs.get('subnet_obj') or + self._get_subnet_object(context, subnet_id)) subnet = self._make_subnet_dict(subnet_obj, context=context) - network = self.get_network(context, subnet['network_id']) mech_context = driver_context.SubnetContext(self, context, - subnet, network) + subnet, network=None) # TODO(kevinbenton): move this mech context into something like # a 'delete context' so it's not polluting the real context object setattr(context, '_mech_context', mech_context)