From 16699a42a92b27b9e42096552b3011608333b91f Mon Sep 17 00:00:00 2001 From: Nate Johnston Date: Thu, 9 Jan 2020 17:18:51 -0500 Subject: [PATCH] Ensure driver error preventing trunk port deletion is logged When trunk port deletion is attempted but fails because the driver does not permit it, the logs do not contain the driver error message that specifies the precise rationale for preventing the trunk port deletion. Log it explicitly. Change-Id: I7ed1a742849dfce9e65b8eb36566112501fb0e39 (cherry picked from commit 3b56299e1fa0b48bd4d674e57be2e289c4c28547) --- neutron/services/trunk/plugin.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/neutron/services/trunk/plugin.py b/neutron/services/trunk/plugin.py index c510b88c903..50b4ccfc03b 100644 --- a/neutron/services/trunk/plugin.py +++ b/neutron/services/trunk/plugin.py @@ -25,6 +25,7 @@ from neutron_lib.db import resource_extend from neutron_lib.plugins import directory from neutron_lib.services import base as service_base from oslo_log import log as logging +from oslo_utils import excutils from oslo_utils import uuidutils from neutron.db import common_db_mixin @@ -269,12 +270,21 @@ class TrunkPlugin(service_base.ServicePluginBase, # object disappears from the datastore, therefore there is no # status transition involved. If PRECOMMIT failures occur, # the trunk remains in the status where it was. - trunk.delete() + try: + trunk.delete() + except Exception as e: + with excutils.save_and_reraise_exception(): + LOG.warning('Trunk driver raised exception when ' + 'deleting trunk port %s: %s', trunk_id, + str(e)) payload = callbacks.TrunkPayload(context, trunk_id, original_trunk=trunk) - registry.notify(constants.TRUNK, events.PRECOMMIT_DELETE, self, - payload=payload) + registry.notify(resources.TRUNK, + events.PRECOMMIT_DELETE, + self, payload=payload) else: + LOG.info('Trunk driver does not consider trunk %s ' + 'untrunkable', trunk_id) raise trunk_exc.TrunkInUse(trunk_id=trunk_id) registry.notify(constants.TRUNK, events.AFTER_DELETE, self, payload=payload)