Update vnf instaniation code of gvnfm vnflcm
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / vnfs / vnf_create / inst_vnf.py
index cedc4a4..c950e15 100644 (file)
@@ -38,6 +38,7 @@ class InstVnf(Thread):
         self.data = data
         self.nf_inst_id = nf_inst_id
         self.job_id = job_id
+        self.vnfd_id = ''
         self.nfvo_inst_id = ''
         self.vnfm_inst_id = ''
         self.csar_id = ''
@@ -73,20 +74,24 @@ class InstVnf(Thread):
 
         JobUtil.add_job_status(self.job_id, 5, 'Get packageinfo by vnfd_id')
         # get csar_id from nslcm by vnfd_id
-        self.package_info = get_packageinfo_by_vnfdid(vnf_insts[0].vnfdid)
-        self.package_id = ignore_case_get(self.package_info, "package_id")
-        self.csar_id = ignore_case_get(self.package_info, "csar_id")
+        self.vnfd_id = vnf_insts[0].vnfdid
+        self.package_info = get_packageinfo_by_vnfdid(self.vnfd_id)
+        for val in self.package_info:
+            if self.vnfd_id == ignore_case_get(val, "vnfd_id"):
+                self.package_id = ignore_case_get(val, "csar_id")
+                break
 
         JobUtil.add_job_status(self.job_id, 10, 'Get rawdata from catalog by csar_id')
         # get rawdata from catalog by csar_id
         input_parameters = []
         for key, val in self.data['additionalParams'].items():
             input_parameters.append({"key": key, "value": val})
-        raw_data = query_rawdata_from_catalog(self.csar_id, input_parameters)
+        raw_data = query_rawdata_from_catalog(self.package_id, input_parameters)
         self.vnfd_info = toscautil.convert_vnfd_model(raw_data["rawData"])  # convert to inner json
         self.vnfd_info = json.JSONDecoder().decode(self.vnfd_info)
 
         self.vnfd_info = vnfd_model_dict  # just for test
+        self.update_cps()
 
         self.checkParameterExist()
         # update NfInstModel
@@ -205,7 +210,7 @@ class InstVnf(Thread):
             }
         logger.info('content_args=%s' % content_args)
         # call rest api
-        resp = notify_lcm_to_nfvo(content_args, self.nf_inst_id)
+        resp = notify_lcm_to_nfvo(content_args)
         logger.info('[NF instantiation] get lcm response %s' % resp)
         logger.info('[NF instantiation] send notify request to nfvo end')
 
@@ -388,6 +393,16 @@ class InstVnf(Thread):
     # def do_notify_delete(self, ret):
     #     logger.error('Deleting [%s] resource' % ret)
 
+    def update_cps(self):
+        for extlink in ignore_case_get(self.data, "extVirtualLinks"):
+            for cp in self.vnfd_info["cps"]:
+                cpdid = ignore_case_get(extlink, "cpdId")
+                if cpdid == ignore_case_get(cp, "cp_id"):
+                    cp["networkId"] = ignore_case_get(extlink, "resourceId")
+                    cp["subnetId"] = ignore_case_get(extlink, "resourceSubnetId")
+                    break
+        pass
+
     def checkParameterExist(self):
         # if ignore_case_get(self.data, "flavourId") not in self.vnfd_info:
         #     raise NFLCMException('Input parameter is not defined in vnfd_info.')