Fix minor issue
[osm/LCM.git] / osm_lcm / ns.py
index 8cde03a..5131f9f 100644 (file)
@@ -1687,7 +1687,7 @@ class NsLcm(LcmBase):
                     vnfd = self.db.get_one("vnfds", {"_id": vnfd_id})
 
                     # store vnfd
-                    db_vnfds.append(vnfd)          # vnfd's indexed by id
+                    db_vnfds.append(vnfd)
 
             # Get or generates the _admin.deployed.VCA list
             vca_deployed_list = None
@@ -1844,7 +1844,7 @@ class NsLcm(LcmBase):
                             )
                 for kdud in get_kdu_list(vnfd):
                     kdu_name = kdud["name"]
-                    descriptor_config = get_kdu_configuration(vnfd, kdu_name)
+                    descriptor_config = kdud.get('kdu-configuration')
                     if descriptor_config:
                         vdu_id = None
                         vdu_index = 0
@@ -1886,7 +1886,7 @@ class NsLcm(LcmBase):
                 vdu_name = None
 
                 # Get additional parameters
-                deploy_params = {"OSM": get_osm_params(db_vnfr)}
+                deploy_params = {"OSM": {"vim_account_id": ns_params["vimAccountId"]}}
                 if db_nsr.get("additionalParamsForNs"):
                     deploy_params.update(parse_yaml_strings(db_nsr["additionalParamsForNs"].copy()))
                 base_folder = nsd["_admin"]["storage"]
@@ -2309,7 +2309,8 @@ class NsLcm(LcmBase):
                     # Step 0: Prepare and set parameters
                     desc_params = parse_yaml_strings(kdur.get("additionalParams"))
                     vnfd_id = vnfr_data.get('vnfd-id')
-                    kdud = next(kdud for kdud in db_vnfds[vnfd_id]["kdu"] if kdud["name"] == kdur["kdu-name"])
+                    vnfd_with_id = find_in_list(db_vnfds, lambda vnfd: vnfd["_id"] == vnfd_id)
+                    kdud = next(kdud for kdud in vnfd_with_id["kdu"] if kdud["name"] == kdur["kdu-name"])
                     namespace = kdur.get("k8s-namespace")
                     if kdur.get("helm-chart"):
                         kdumodel = kdur["helm-chart"]
@@ -2327,7 +2328,8 @@ class NsLcm(LcmBase):
                                            format(vnfr_data["member-vnf-index-ref"], kdur["kdu-name"]))
                     # check if kdumodel is a file and exists
                     try:
-                        storage = deep_get(db_vnfds.get(vnfd_id), ('_admin', 'storage'))
+                        vnfd_with_id = find_in_list(db_vnfds, lambda vnfd: vnfd["_id"] == vnfd_id)
+                        storage = deep_get(vnfd_with_id, ('_admin', 'storage'))
                         if storage and storage.get('pkg-dir'):  # may be not present if vnfd has not artifacts
                             # path format: /vnfdid/pkkdir/helm-charts|juju-bundles/kdumodel
                             filename = '{}/{}/{}s/{}'.format(storage["folder"], storage["pkg-dir"], k8sclustertype,
@@ -2377,9 +2379,9 @@ class NsLcm(LcmBase):
                     db_path = "_admin.deployed.K8s.{}".format(index)
                     db_nsr_update[db_path] = k8s_instance_info
                     self.update_db_2("nsrs", nsr_id, db_nsr_update)
-
+                    vnfd_with_id = find_in_list(db_vnfds, lambda vnf: vnf["_id"] == vnfd_id)
                     task = asyncio.ensure_future(
-                        self._install_kdu(nsr_id, db_path, vnfr_data, kdu_index, kdud, db_vnfds[vnfd_id],
+                        self._install_kdu(nsr_id, db_path, vnfr_data, kdu_index, kdud, vnfd_with_id,
                                           k8s_instance_info, k8params=desc_params, timeout=600))
                     self.lcm_tasks.register("ns", nsr_id, nslcmop_id, "instantiate_KDU-{}".format(index), task)
                     task_instantiation_info[task] = "Deploying KDU {}".format(kdur["kdu-name"])
@@ -3442,9 +3444,14 @@ class NsLcm(LcmBase):
                     desc_params = parse_yaml_strings(db_vnfr.get("additionalParamsForVnf"))
             else:
                 desc_params = parse_yaml_strings(db_nsr.get("additionalParamsForNs"))
-
-            if kdu_name and get_kdu_configuration(db_vnfd):
-                kdu_action = True if not get_kdu_configuration(db_vnfd)["juju"] else False
+            if kdu_name and get_kdu_configuration(db_vnfd, kdu_name):
+                kdu_configuration = get_kdu_configuration(db_vnfd, kdu_name)
+                actions = set()
+                for primitive in kdu_configuration.get("initial-config-primitive", []):
+                    actions.add(primitive["name"])
+                for primitive in kdu_configuration.get("config-primitive", []):
+                    actions.add(primitive["name"])
+                kdu_action = True if primitive_name in actions else False
 
             # TODO check if ns is in a proper status
             if kdu_name and (primitive_name in ("upgrade", "rollback", "status") or kdu_action):