Bug_Fix-2350 NS Update failed while using Affinity/Anti-Affinity policy 60/14260/5
authorkayal2001 <kayalvizhi.v@tataelxsi.co.in>
Thu, 14 Mar 2024 17:03:28 +0000 (22:33 +0530)
committerelumalai <deepika.e@tataelxsi.co.in>
Thu, 7 Nov 2024 09:05:37 +0000 (10:05 +0100)
Change-Id: I61898e04eecb7f1b792a3fa47203f4bf5288aa09
Signed-off-by: kayal2001 <kayalvizhi.v@tataelxsi.co.in>
NG-RO/osm_ng_ro/ns.py
releasenotes/notes/fix_bug_2350-814291a32eed315f.yaml [new file with mode: 0644]

index ea22381..e5322b2 100644 (file)
@@ -3065,6 +3065,37 @@ class Ns(object):
 
         return changes_list
 
+    def _remove_old_ro_tasks(self, nsr_id: str, changes_list: list, task_param) -> None:
+        """Delete all ro_tasks registered for the targets vdurs (target_record)
+        If task of type CREATE exist then vim will try to get info form deleted VMs.
+        So remove all task related to target record.
+
+        Args:
+            nsr_id (str):           NS record ID
+            changes_list   (list):  list of dictionaries to create tasks later
+        """
+
+        ro_tasks = self.db.get_list("ro_tasks", {"tasks.nsr_id": nsr_id})
+        for change in changes_list:
+            if task_param == "task_id":
+                param_to_check = "{}:{}".format(
+                    change.get("deployment_info", {}).get("action_id"),
+                    change.get("deployment_info", {}).get("task_index"),
+                )
+            elif task_param == "target_record":
+                param_to_check = change["target_record"]
+            for ro_task in ro_tasks:
+                for task in ro_task["tasks"]:
+                    if task[task_param] == param_to_check:
+                        self.db.del_one(
+                            "ro_tasks",
+                            q_filter={
+                                "_id": ro_task["_id"],
+                                "modified_at": ro_task["modified_at"],
+                            },
+                            fail_on_empty=False,
+                        )
+
     def recreate(self, session, indata, version, nsr_id, *args, **kwargs):
         self.logger.debug("ns.recreate nsr_id={} indata={}".format(nsr_id, indata))
         # TODO: validate_input(indata, recreate_schema)
@@ -3113,6 +3144,7 @@ class Ns(object):
                     tasks_by_target_record_id=tasks_by_target_record_id,
                 )
 
+                self._remove_old_ro_tasks(nsr_id, changes_list, "target_record")
                 self.define_all_tasks(
                     changes_list=changes_list,
                     db_new_tasks=db_new_tasks,
@@ -3317,6 +3349,7 @@ class Ns(object):
                         action_id=action_id,
                         tasks_by_target_record_id=tasks_by_target_record_id,
                     )
+                    self._remove_old_ro_tasks(nsr_id, changes_list, "task_id")
                     self.define_all_tasks(
                         changes_list=changes_list,
                         db_new_tasks=db_new_tasks,
diff --git a/releasenotes/notes/fix_bug_2350-814291a32eed315f.yaml b/releasenotes/notes/fix_bug_2350-814291a32eed315f.yaml
new file mode 100644 (file)
index 0000000..20ee4ba
--- /dev/null
@@ -0,0 +1,81 @@
+#######################################################################################
+# Copyright ETSI Contributors and Others.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#######################################################################################
+---
+prelude: >
+    Replace this text with content to appear at the top of the section for this
+    release. All of the prelude content is merged together and then rendered
+    separately from the items listed in other parts of the file, so the text
+    needs to be worded so that both the prelude and the other items make sense
+    when read independently. This may mean repeating some details. Not every
+    release note requires a prelude. Usually only notes describing major
+    features or adding release theme details should have a prelude.
+features:
+  - |
+    List new features here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+issues:
+  - |
+    List known issues here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+upgrade:
+  - |
+    List upgrade notes here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+deprecations:
+  - |
+    List deprecations notes here, or remove this section.  All of the list
+    items in this section are combined when the release notes are rendered, so
+    the text needs to be worded so that it does not depend on any information
+    only available in another section, such as the prelude. This may mean
+    repeating some details.
+critical:
+  - |
+    Add critical notes here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+security:
+  - |
+    Add security notes here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+fixes:
+  - |
+    Add normal bug fixes here, or remove this section.  All of the list items
+    in this section are combined when the release notes are rendered, so the
+    text needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.
+other:
+  - |
+    Add other notes here, or remove this section.  All of the list items in
+    this section are combined when the release notes are rendered, so the text
+    needs to be worded so that it does not depend on any information only
+    available in another section, such as the prelude. This may mean repeating
+    some details.