add terminate ns package state 91/97091/6
authorhewei-cmss <hewei@cmss.chinamobile.com>
Tue, 15 Oct 2019 01:31:44 +0000 (09:31 +0800)
committerhewei-cmss <hewei@cmss.chinamobile.com>
Tue, 15 Oct 2019 02:33:48 +0000 (10:33 +0800)
Issue-ID: VFC-1504

Signed-off-by: hewei-cmss <hewei@cmss.chinamobile.com>
Change-Id: I10a77a659cfff434b9908c80c5792156da58603f

lcm/ns/biz/ns_terminate.py
lcm/ns/tests/tests_ns_terminate.py
lcm/pub/msapi/sdc_run_catalog.py

index 06e84b7..32845dd 100644 (file)
@@ -21,6 +21,7 @@ from lcm.jobs.const import JOB_INSTANCE_RESPONSE_ID_URI
 from lcm.pub.database.models import NSInstModel, VLInstModel, FPInstModel, NfInstModel
 from lcm.pub.exceptions import NSLCMException
 from lcm.pub.msapi.nslcm import call_from_ns_cancel_resource
+from lcm.pub.msapi import sdc_run_catalog
 from lcm.pub.utils.jobutil import JobUtil
 from lcm.pub.utils.values import ignore_case_get
 from lcm.pub.utils import restcall
@@ -57,6 +58,7 @@ class TerminateNsService(threading.Thread):
             self.cancel_vl_list()
             self.cancel_pnf_list()
 
+            self.modify_package_state()
             NSInstModel.objects.filter(id=self.ns_inst_id).update(status='NOT_INSTANTIATED')
             JobUtil.add_job_status(self.job_id, JOB_PROGRESS.FINISHED, "ns terminate ends.", '')
             NsLcmOpOcc.update(self.occ_id, "COMPLETED")
@@ -71,6 +73,12 @@ class TerminateNsService(threading.Thread):
             NsLcmOpOcc.update(self.occ_id, operationState="FAILED", error=e.args[0])
             build_in.post_deal(self.ns_inst_id, "false")
 
+    def modify_package_state(self):
+        ns_inst = NSInstModel.objects.filter(id=self.ns_inst_id)
+        ns_insts = NSInstModel.objects.filter(nspackage_id=ns_inst[0].nspackage_id)
+        if len(ns_insts) == 1:
+            sdc_run_catalog.modify_nsd_state(ns_inst[0].nspackage_id, 0)
+
     def cancel_vl_list(self):
         array_vlinst = VLInstModel.objects.filter(ownertype=OWNER_TYPE.NS, ownerid=self.ns_inst_id)
         if not array_vlinst:
index d7ce54a..25d8d87 100644 (file)
@@ -84,7 +84,10 @@ class TestTerminateNsViews(TestCase):
                                                                            "status": JOB_MODEL_STATUS.PROCESSING,
                                                                            "responseid": "2",
                                                                            "statusdescription": "creating",
-                                                                           "errorcode": "0"}]}}), '200']}
+                                                                           "errorcode": "0"}]}}), '200'],
+            "/api/catalog/v1/ns_descriptors/None":
+                [0, json.JSONEncoder().encode({}), '202'],
+        }
 
         def side_effect(*args):
             return mock_vals[args[4]]
index d1b2607..0013d2c 100644 (file)
@@ -69,8 +69,8 @@ def query_pnf_descriptor(filter=None):
     return json.JSONDecoder().decode(ret[1])
 
 
-def modify_nsd_state(csar_id):
-    req_param = json.JSONEncoder().encode({"usageState": 1})
+def modify_nsd_state(csar_id, usage_state=1):
+    req_param = json.JSONEncoder().encode({"usageState": usage_state})
     ret = req_by_msb("/api/catalog/v1/ns_descriptors/%s" % csar_id, "PUT", req_param)
     if ret[0] != 0:
         logger.error("Status code is %s, detail is %s.", ret[2], ret[1])