From a7ba6d02aae23c66e9aa0b3853ff07ebe72f38cd Mon Sep 17 00:00:00 2001 From: dharmendra Date: Tue, 10 Jul 2018 08:50:15 +0000 Subject: [PATCH] Correct error handling for PENDING_DELETE VNFs. Partial-Bug: #1775373 Change-Id: I82e3dc0531c1b9e702fe41d0dcf244dc514c53ac --- ...t-handling-for-PENDING_DELETE-VNFs-7f6becfa36cc38d2.yaml | 4 ++++ tacker/db/vnfm/vnfm_db.py | 6 ++++++ tacker/extensions/vnfm.py | 4 ++++ 3 files changed, 14 insertions(+) create mode 100644 releasenotes/notes/Correct-handling-for-PENDING_DELETE-VNFs-7f6becfa36cc38d2.yaml diff --git a/releasenotes/notes/Correct-handling-for-PENDING_DELETE-VNFs-7f6becfa36cc38d2.yaml b/releasenotes/notes/Correct-handling-for-PENDING_DELETE-VNFs-7f6becfa36cc38d2.yaml new file mode 100644 index 000000000..b5895f8cb --- /dev/null +++ b/releasenotes/notes/Correct-handling-for-PENDING_DELETE-VNFs-7f6becfa36cc38d2.yaml @@ -0,0 +1,4 @@ +--- +fixes: + - | + Correct error handling for PENDING_DELETE VNFs. diff --git a/tacker/db/vnfm/vnfm_db.py b/tacker/db/vnfm/vnfm_db.py index 78aba232d..fbe6cb813 100644 --- a/tacker/db/vnfm/vnfm_db.py +++ b/tacker/db/vnfm/vnfm_db.py @@ -482,8 +482,14 @@ class VNFMPluginDb(vnfm.VNFMPluginBase, db_base.CommonDbMixin): with_lockmode('update').one()) except orm_exc.NoResultFound: raise vnfm.VNFNotFound(vnf_id=vnf_id) + if vnf_db.status == constants.PENDING_DELETE: + error_reason = _("Operation on PENDING_DELETE VNF " + "is not permited. Please contact your " + "Administrator.") + raise vnfm.VNFDeleteFailed(reason=error_reason) if vnf_db.status == constants.PENDING_UPDATE: raise vnfm.VNFInUse(vnf_id=vnf_id) + # TODO(dkushwaha): status check/update will be moved out from here. vnf_db.update({'status': new_status}) return vnf_db diff --git a/tacker/extensions/vnfm.py b/tacker/extensions/vnfm.py index 6c63b80b9..b5a3d558a 100644 --- a/tacker/extensions/vnfm.py +++ b/tacker/extensions/vnfm.py @@ -75,6 +75,10 @@ class VNFDeleteWaitFailed(exceptions.TackerException): message = _('%(reason)s') +class VNFDeleteFailed(exceptions.TackerException): + message = _('%(reason)s') + + class VNFDNotFound(exceptions.NotFound): message = _('VNFD %(vnfd_id)s could not be found')