Feature 10911-Vertical scaling of VM instances from OSM
[osm/RO.git] / NG-RO / osm_ng_ro / tests / test_ns_thread.py
index 63b1066..c1d23a0 100644 (file)
@@ -19,7 +19,11 @@ import logging
 import unittest
 from unittest.mock import MagicMock, patch
 
-from osm_ng_ro.ns_thread import VimInteractionAffinityGroup, VimInteractionNet
+from osm_ng_ro.ns_thread import (
+    VimInteractionAffinityGroup,
+    VimInteractionNet,
+    VimInteractionResize,
+)
 from osm_ro_plugin.vimconn import VimConnConnectionException, VimConnException
 
 
@@ -817,6 +821,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": None,
                     "vim_details": "some-details",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 1637324200.994312,
@@ -871,6 +876,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": "BUILD",
                     "vim_details": "",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 1637324200.994312,
@@ -926,6 +932,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": "BUILD",
                     "vim_details": "",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 1637324200.994312,
@@ -945,7 +952,7 @@ class TestVimInteractionNet(unittest.TestCase):
             task_status = "FAILED"
             ro_vim_item_update = {
                 "vim_status": "ERROR",
-                "vim_details": "some error message",
+                "vim_message": "some error message",
             }
             result = instance.refresh(ro_task)
             self.assertEqual(result[0], task_status)
@@ -981,6 +988,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": "BUILD",
                     "vim_details": "",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 1637324200.994312,
@@ -1025,6 +1033,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": "BUILD",
                     "vim_details": "",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 163724200.994312,
@@ -1043,7 +1052,7 @@ class TestVimInteractionNet(unittest.TestCase):
             task_status = "FAILED"
             ro_vim_item_update = {
                 "vim_status": "DELETED",
-                "vim_details": "Deleted externally",
+                "vim_message": "Deleted externally",
                 "vim_id": None,
             }
             result = instance.refresh(ro_task)
@@ -1081,6 +1090,7 @@ class TestVimInteractionNet(unittest.TestCase):
                     "vim_name": "test-vim",
                     "vim_status": "BUILD",
                     "vim_details": "",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
                 "modified_at": 163724211.994312,
@@ -1240,6 +1250,7 @@ class TestVimInteractionAffinityGroup(unittest.TestCase):
                     "vim_name": "sample_affinity_group_id_3",
                     "vim_status": None,
                     "vim_details": "some-details",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
             }
@@ -1250,7 +1261,7 @@ class TestVimInteractionAffinityGroup(unittest.TestCase):
             )
             result = instance.delete(ro_task, task_index)
             self.assertEqual(result[0], "DONE")
-            self.assertEqual(result[1].get("vim_details"), "DELETED")
+            self.assertEqual(result[1].get("vim_message"), "DELETED")
             self.assertEqual(result[1].get("created"), False)
             self.assertEqual(result[1].get("vim_status"), "DELETED")
 
@@ -1286,6 +1297,7 @@ class TestVimInteractionAffinityGroup(unittest.TestCase):
                     "vim_name": None,
                     "vim_status": None,
                     "vim_details": "some-details",
+                    "vim_message": None,
                     "refresh_at": None,
                 },
             }
@@ -1294,6 +1306,66 @@ class TestVimInteractionAffinityGroup(unittest.TestCase):
             self.target_vim.delete_affinity_group.return_value = ""
             result = instance.delete(ro_task, task_index)
             self.assertEqual(result[0], "DONE")
-            self.assertEqual(result[1].get("vim_details"), "DELETED")
+            self.assertEqual(result[1].get("vim_message"), "DELETED")
             self.assertEqual(result[1].get("created"), False)
             self.assertEqual(result[1].get("vim_status"), "DELETED")
+
+
+class TestVimInteractionResize(unittest.TestCase):
+    def setUp(self):
+        module_name = "osm_ro_plugin"
+        self.target_vim = MagicMock(name=f"{module_name}.vimconn.VimConnector")
+        self.task_depends = None
+
+        patches = [patch(f"{module_name}.vimconn.VimConnector", self.target_vim)]
+
+        # Enabling mocks and add cleanups
+        for mock in patches:
+            mock.start()
+            self.addCleanup(mock.stop)
+
+    def test__exec_resize_done(self):
+        """
+        create verticalscale task
+        """
+        db = "test_db"
+        logger = "test_logger"
+        my_vims = "test-vim"
+        db_vims = {
+            0: {
+                "config": {},
+            },
+        }
+        target_record_id = (
+            "vnfrs:665b4165-ce24-4320-bf19-b9a45bade49f:"
+            "vdur.bb9c43f9-10a2-4569-a8a8-957c3528b6d1"
+        )
+
+        instance = VimInteractionResize(db, logger, my_vims, db_vims)
+        with patch.object(instance, "my_vims", [self.target_vim]), patch.object(
+            instance, "logger", logging
+        ), patch.object(instance, "db_vims", db_vims):
+            ro_task = {
+                "target_id": 0,
+                "tasks": {
+                    "task_index_1": {
+                        "target_id": 0,
+                        "action_id": "bb937f49-3870-4169-b758-9732e1ff40f3",
+                        "nsr_id": "993166fe-723e-4680-ac4b-b1af2541ae31",
+                        "task_id": "bb937f49-3870-4169-b758-9732e1ff40f3:0",
+                        "status": "SCHEDULED",
+                        "action": "EXEC",
+                        "item": "verticalscale",
+                        "target_record": "vnfrs:665b4165-ce24-4320-bf19-b9a45bade49f:vdur.0",
+                        "target_record_id": target_record_id,
+                        "params": {
+                            "vim_vm_id": "f37b18ef-3caa-4dc9-ab91-15c669b16396",
+                            "flavor_dict": "flavor_dict",
+                        },
+                    }
+                },
+            }
+            task_index = "task_index_1"
+            result = instance.exec(ro_task, task_index, self.task_depends)
+            self.assertEqual(result[0], "DONE")
+            self.assertEqual(result[1].get("vim_status"), "DONE")