Fix vfc-vnflcm create resource issue
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnf_create / inst_vnf.py
index 59ec993..09cf506 100644 (file)
@@ -76,7 +76,8 @@ class InstVnf(Thread):
                 inputs = json.loads(inputs)
             for key, val in inputs.items():
                 input_parameters.append({"key": key, "value": val})
-        self.vnfd_info = query_vnfpackage_by_id(self.vnfd_id)
+        vnf_package_info = query_vnfpackage_by_id(self.vnfd_id)
+        self.vnfd_info = json.loads(ignore_case_get(ignore_case_get(vnf_package_info, "packageInfo"), "vnfdModel"))
         # self.vnfd_info = vnfd_model_dict  # just for test
 
         self.update_cps()
@@ -101,10 +102,12 @@ class InstVnf(Thread):
                    lastuptime=now_time())
 
         logger.info("self.vim_id = %s" % self.vim_id)
-        NfvoRegInfoModel.objects.create(
-            nfvoid=self.nf_inst_id,
-            vnfminstid=ignore_case_get(self.data, "vnfmId"),
-            apiurl=self.vim_id)
+        is_exist = NfvoRegInfoModel.objects.filter(nfvoid=self.nf_inst_id).exists()
+        if not is_exist:
+            NfvoRegInfoModel.objects.create(
+                nfvoid=self.nf_inst_id,
+                vnfminstid=ignore_case_get(self.data, "vnfmId"),
+                apiurl=self.vim_id)
         JobUtil.add_job_status(self.job_id, 15, 'Nf instancing pre-check finish')
         logger.info("Nf instancing pre-check finish")
 
@@ -170,8 +173,8 @@ class InstVnf(Thread):
 
     def create_res(self):
         logger.info("[NF instantiation] create resource start")
+        logger.debug("self.vnfdModel = %s", self.vnfd_info)
         adaptor.create_vim_res(self.vnfd_info, self.do_notify)
-
         JobUtil.add_job_status(self.job_id, 70, '[NF instantiation] create resource finish')
         logger.info("[NF instantiation] create resource finish")
 
@@ -241,7 +244,7 @@ class InstVnf(Thread):
 
     def vnf_inst_failed_handle(self, error_msg):
         logger.error('VNF instantiation failed, detail message: %s' % error_msg)
-        NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='failed', lastuptime=now_time())
+        NfInstModel.objects.filter(nfinstid=self.nf_inst_id).update(status='FAILED', lastuptime=now_time())
         JobUtil.add_job_status(self.job_id, 255, error_msg)
 
     def do_notify(self, res_type, ret):