Bug 2365 fixed: Modified time in vnfrs collection of mongo database is not updated...
[osm/LCM.git] / osm_lcm / ns.py
index 57298bd..43e699f 100644 (file)
@@ -4522,16 +4522,8 @@ class NsLcm(LcmBase):
             if nsr_deployed.get("VCA"):
                 stage[1] = "Deleting all execution environments."
                 self.logger.debug(logging_text + stage[1])
-                if nsr_deployed.get("VCA").get("type") != "helm-v3":
-                    vca_id = self.get_vca_id({}, db_nsr)
-                    task_delete_ee = asyncio.ensure_future(
-                        asyncio.wait_for(
-                            self._delete_all_N2VC(db_nsr=db_nsr, vca_id=vca_id),
-                            timeout=self.timeout.charm_delete,
-                        )
-                    )
-                    tasks_dict_info[task_delete_ee] = "Terminating all VCA"
-                else:
+                helm_vca_list = get_deployed_vca(db_nsr, {"type": "helm-v3"})
+                if helm_vca_list:
                     # Delete Namespace and Certificates
                     await self.vca_map["helm-v3"].delete_tls_certificate(
                         namespace=db_nslcmop["nsInstanceId"],
@@ -4540,6 +4532,15 @@ class NsLcm(LcmBase):
                     await self.vca_map["helm-v3"].delete_namespace(
                         namespace=db_nslcmop["nsInstanceId"],
                     )
+                else:
+                    vca_id = self.get_vca_id({}, db_nsr)
+                    task_delete_ee = asyncio.ensure_future(
+                        asyncio.wait_for(
+                            self._delete_all_N2VC(db_nsr=db_nsr, vca_id=vca_id),
+                            timeout=self.timeout.charm_delete,
+                        )
+                    )
+                    tasks_dict_info[task_delete_ee] = "Terminating all VCA"
 
             # Delete from k8scluster
             stage[1] = "Deleting KDUs."
@@ -6332,7 +6333,11 @@ class NsLcm(LcmBase):
                     nsr_id,
                     {
                         "_admin.scaling-group": [
-                            {"name": scaling_group, "nb-scale-op": 0}
+                            {
+                                "name": scaling_group,
+                                "vnf_index": vnf_index,
+                                "nb-scale-op": 0,
+                            }
                         ]
                     },
                 )
@@ -6341,7 +6346,10 @@ class NsLcm(LcmBase):
                 for admin_scale_index, admin_scale_info in enumerate(
                     db_nsr["_admin"]["scaling-group"]
                 ):
-                    if admin_scale_info["name"] == scaling_group:
+                    if (
+                        admin_scale_info["name"] == scaling_group
+                        and admin_scale_info["vnf_index"] == vnf_index
+                    ):
                         nb_scale_op = admin_scale_info.get("nb-scale-op", 0)
                         break
                 else:  # not found, set index one plus last element and add new entry with the name
@@ -6349,6 +6357,9 @@ class NsLcm(LcmBase):
                     db_nsr_update[
                         "_admin.scaling-group.{}.name".format(admin_scale_index)
                     ] = scaling_group
+                    db_nsr_update[
+                        "_admin.scaling-group.{}.vnf_index".format(admin_scale_index)
+                    ] = vnf_index
 
             vca_scaling_info = []
             scaling_info = {"scaling_group_name": scaling_group, "vdu": [], "kdu": []}
@@ -7901,6 +7912,7 @@ class NsLcm(LcmBase):
             old_config_status = db_nsr["config-status"]
 
             db_nsr_update = {
+                "operational-status": "healing",
                 "_admin.deployed.RO.operational-status": "healing",
             }
             self.update_db_2("nsrs", nsr_id, db_nsr_update)
@@ -8046,7 +8058,6 @@ class NsLcm(LcmBase):
                                 task_instantiation_info=tasks_dict_info,
                                 stage=stage,
                             )
-
         except (
             ROclient.ROClientException,
             DbException,
@@ -8068,6 +8079,15 @@ class NsLcm(LcmBase):
             )
         finally:
             error_list = list()
+            if db_vnfrs_list and target_list:
+                for vnfrs in db_vnfrs_list:
+                    for vnf_instance in target_list:
+                        if vnfrs["_id"] == vnf_instance.get("vnfInstanceId"):
+                            self.db.set_list(
+                                "vnfrs",
+                                {"_id": vnfrs["_id"]},
+                                {"_admin.modified": time()},
+                            )
             if exc:
                 error_list.append(str(exc))
             try: