From: maopengzhang Date: Mon, 12 Nov 2018 12:32:06 +0000 (+0800) Subject: fix terminate pnf error X-Git-Tag: 3.0.0-ONAP~1^2~1 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=848a884bbd9a537ee2d1e707bed62e4129657eb5;p=vfc%2Fnfvo%2Flcm.git fix terminate pnf error fix terminate pnf error, etc Change-Id: I675abc9324d5b0ec7f18d62293446d8ed85b9219 Issue-ID: VFC-1158 Signed-off-by: maopengzhang --- diff --git a/lcm/ns/biz/ns_terminate.py b/lcm/ns/biz/ns_terminate.py index 5b93f58d..4dc8d841 100644 --- a/lcm/ns/biz/ns_terminate.py +++ b/lcm/ns/biz/ns_terminate.py @@ -24,6 +24,7 @@ from lcm.pub.utils.jobutil import JobUtil from lcm.pub.utils.values import ignore_case_get from lcm.pub.utils import restcall from lcm.ns.const import OWNER_TYPE +from lcm.pub.database.models import PNFInstModel JOB_ERROR = 255 @@ -48,6 +49,7 @@ class TerminateNsService(threading.Thread): self.cancel_sfc_list() self.cancel_vnf_list() self.cancel_vl_list() + self.cancel_pnf_list() NSInstModel.objects.filter(id=self.ns_inst_id).update(status='null') JobUtil.add_job_status(self.job_id, 100, "ns terminate ends.", '') @@ -165,3 +167,21 @@ class TerminateNsService(threading.Thread): if job_timeout: logger.error("Job(%s) timeout", vnf_job_id) return job_end_normal + + def cancel_pnf_list(self): + pnfinst_list = PNFInstModel.objects.filter(nsInstances__contains=self.ns_inst_id) + if len(pnfinst_list) > 0: + cur_progress = 90 + step_progress = 5 / len(pnfinst_list) + for pnfinst in pnfinst_list: + delete_result = "fail" + try: + ret = call_from_ns_cancel_resource('pnf', pnfinst.pnfId) + if ret[0] == 0: + delete_result = "success" + except Exception as e: + logger.error("[cancel_pnf_list] error[%s]!" % e.message) + logger.error(traceback.format_exc()) + job_msg = "Delete pnfinst:[%s] %s" % (pnfinst.pnfId, delete_result) + cur_progress += step_progress + JobUtil.add_job_status(self.job_id, cur_progress, job_msg) diff --git a/lcm/ns/tests/tests_ns_terminate.py b/lcm/ns/tests/tests_ns_terminate.py index 774fd609..7de09589 100644 --- a/lcm/ns/tests/tests_ns_terminate.py +++ b/lcm/ns/tests/tests_ns_terminate.py @@ -101,13 +101,10 @@ class TestTerminateNsViews(TestCase): @mock.patch.object(TerminateNsService, 'run') def test_terminate_non_existing_ns_inst_id(self, mock_run): mock_run.re.return_value = "1" - ns_inst_id = '100' - req_data = { "terminationType": "forceful", "gracefulTerminationTimeout": "600"} response = self.client.post("/api/nslcm/v1/ns/%s/terminate" % ns_inst_id, data=req_data) self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code, response.data) - self.assertRaises(NSInstModel.DoesNotExist, NSInstModel.objects.get, id=ns_inst_id)