2126 BugFix: use both count-index & vdu_id for finding target vdu
[osm/LCM.git] / osm_lcm / ns.py
index 6aed304..ae151db 100644 (file)
@@ -225,6 +225,8 @@ class NsLcm(LcmBase):
             "termination": self.RO.status,
             "migrate": self.RO.status,
             "healing": self.RO.recreate_status,
+            "verticalscale": self.RO.status,
+            "start_stop_rebuild": self.RO.status,
         }
 
     @staticmethod
@@ -291,7 +293,6 @@ class NsLcm(LcmBase):
             # vcaStatus
             db_dict = dict()
             db_dict["vcaStatus"] = status_dict
-            await self.n2vc.update_vca_status(db_dict["vcaStatus"], vca_id=vca_id)
 
             # update configurationStatus for this VCA
             try:
@@ -399,15 +400,6 @@ class NsLcm(LcmBase):
             db_dict = dict()
             db_dict["vcaStatus"] = {nsr_id: vca_status}
 
-            if cluster_type in ("juju-bundle", "juju"):
-                # TODO -> this should be done in a more uniform way, I think in N2VC, in order to update the K8s VCA
-                #  status in a similar way between Juju Bundles and Helm Charts on this side
-                await self.k8sclusterjuju.update_vca_status(
-                    db_dict["vcaStatus"],
-                    kdu_instance,
-                    vca_id=vca_id,
-                )
-
             self.logger.debug(
                 f"Obtained VCA status for cluster type '{cluster_type}': {vca_status}"
             )
@@ -422,7 +414,7 @@ class NsLcm(LcmBase):
     @staticmethod
     def _parse_cloud_init(cloud_init_text, additional_params, vnfd_id, vdu_id):
         try:
-            env = Environment(undefined=StrictUndefined)
+            env = Environment(undefined=StrictUndefined, autoescape=True)
             template = env.from_string(cloud_init_text)
             return template.render(additional_params or {})
         except UndefinedError as e:
@@ -7274,13 +7266,17 @@ class NsLcm(LcmBase):
             db_vnfr = self.db.get_one("vnfrs", {"_id": vnf_id})
             vim_account_id = db_vnfr.get("vim-account-id")
             vim_info_key = "vim:" + vim_account_id
+            vdu_id = additional_param["vdu_id"]
+            vdurs = [item for item in db_vnfr["vdur"] if item["vdu-id-ref"] == vdu_id]
             vdur = find_in_list(
-                db_vnfr["vdur"], lambda vdu: vdu["count-index"] == additional_param["count-index"]
+                vdurs, lambda vdu: vdu["count-index"] == additional_param["count-index"]
                 )
             if vdur:
                 vdu_vim_name = vdur["name"]
                 vim_vm_id = vdur["vim_info"][vim_info_key]["vim_id"]
                 target_vim, _ = next(k_v for k_v in vdur["vim_info"].items())
+            else:
+                raise LcmException("Target vdu is not found")
             self.logger.info("vdu_vim_name >> {} ".format(vdu_vim_name))
             # wait for any previous tasks in process
             stage[1] = "Waiting for previous operations to terminate"
@@ -7319,7 +7315,8 @@ class NsLcm(LcmBase):
             self.logger.info("response from RO: {}".format(result_dict))
             action_id = result_dict["action_id"]
             await self._wait_ng_ro(
-                nsr_id, action_id, nslcmop_id, start_deploy, self.timeout_operate
+                nsr_id, action_id, nslcmop_id, start_deploy,
+                self.timeout_operate, None, "start_stop_rebuild",
             )
             return "COMPLETED", "Done"
         except (ROclient.ROClientException, DbException, LcmException) as e:
@@ -8421,7 +8418,8 @@ class NsLcm(LcmBase):
             self.logger.debug("RO return > {}".format(desc))
             action_id = desc["action_id"]
             await self._wait_ng_ro(
-                nsr_id, action_id, nslcmop_id, start_deploy, self.timeout_verticalscale
+                nsr_id, action_id, nslcmop_id, start_deploy, self.timeout_verticalscale,
+                operation="verticalscale"
             )
         except (ROclient.ROClientException, DbException, LcmException) as e:
             self.logger.error("Exit Exception {}".format(e))