X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=NG-RO%2Fosm_ng_ro%2Ftests%2Ftest_ns_thread.py;h=86ba996eebedc807fdf5beb478c07d0a12f583f0;hb=refs%2Fchanges%2F52%2F12152%2F4;hp=9aa7c18e3a81364a84b19a85603861d786b2e0d4;hpb=0b1e734d5b51b23442aa903b4096bcf7bc48ec8d;p=osm%2FRO.git diff --git a/NG-RO/osm_ng_ro/tests/test_ns_thread.py b/NG-RO/osm_ng_ro/tests/test_ns_thread.py index 9aa7c18e..86ba996e 100644 --- a/NG-RO/osm_ng_ro/tests/test_ns_thread.py +++ b/NG-RO/osm_ng_ro/tests/test_ns_thread.py @@ -19,7 +19,12 @@ import logging import unittest from unittest.mock import MagicMock, patch -from osm_ng_ro.ns_thread import VimInteractionNet +from osm_ng_ro.ns_thread import ( + VimInteractionAffinityGroup, + VimInteractionMigration, + VimInteractionNet, + VimInteractionResize, +) from osm_ro_plugin.vimconn import VimConnConnectionException, VimConnException @@ -38,14 +43,15 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_id_in_find_params_mgmt_several_vim_nets(self): """ - management_network_id in find_params.get('mgmt') + mgmt network is set in find_params + management_network_id in vim config More than one network found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_2": { + 0: { "config": { "management_network_id": "test_mgmt_id", }, @@ -55,12 +61,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_2": { - "target_id": "vim_openstack_2", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -99,14 +105,15 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_id_in_find_params_mgmt_no_vim_nets(self): """ - management_network_id in find_params.get('mgmt') + mgmt network is set in find_params + management_network_id in vim config The network could not be found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_3": { + 0: { "config": { "management_network_id": "test_mgmt_id", }, @@ -115,13 +122,13 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object(instance, "my_vims", [self.target_vim]), patch.object( - instance, "logger", logging - ): + instance, "db_vims", db_vims + ), patch.object(instance, "logger", logging): ro_task = { "target_id": 0, "tasks": { "task_index_3": { - "target_id": "vim_openstack_3", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -155,16 +162,74 @@ class TestVimInteractionNet(unittest.TestCase): self.assertEqual(result[1].get("created"), False) self.assertEqual(result[1].get("vim_status"), "VIM_ERROR") + def test__mgmt_net_in_find_params_no_vim_config_no_vim_nets(self): + """ + mgmt network is set in find_params + vim config does not have management_network_id or management_network_id + The network could not be found in the VIM + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + + instance = VimInteractionNet(db, logger, my_vims, db_vims) + with patch.object(instance, "my_vims", [self.target_vim]), patch.object( + instance, "db_vims", db_vims + ), patch.object(instance, "logger", logging): + ro_task = { + "target_id": 0, + "tasks": { + "task_index_3": { + "target_id": 0, + "action_id": "123456", + "nsr_id": "654321", + "task_id": "123456:1", + "status": "SCHEDULED", + "action": "CREATE", + "item": "test_item", + "target_record": "test_target_record", + "target_record_id": "test_target_record_id", + "params": {}, + # values coming from extra_dict + "find_params": { + "mgmt": True, + "name": "some_mgmt_name", + }, + "depends_on": "test_depends_on", + }, + }, + } + + task_index = "task_index_3" + self.target_vim.get_network_list.return_value = [] + self.target_vim.new_network.return_value = "sample_net_id", { + "item1": "sample_created_item" + } + result = instance.new(ro_task, task_index, self.task_depends) + self.assertEqual(result[0], "BUILD") + self.assertEqual(result[1].get("vim_id"), "sample_net_id") + self.assertEqual(result[1].get("created"), True) + self.assertDictEqual( + result[1].get("created_items"), {"item1": "sample_created_item"} + ) + self.assertEqual(result[1].get("vim_status"), "BUILD") + def test__mgmt_net_name_in_find_params_mgmt_several_vim_nets(self): """ - management_network_name in find_params.get('mgmt') + mgmt network is set in find_params + management_network_name in vim config More than one network found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_4": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -174,12 +239,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_4": { - "target_id": "vim_openstack_4", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -218,14 +283,15 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_name_in_find_params_mgmt_no_vim_nets(self): """ - management_network_name in find_params.get('mgmt') + mgmt network is set in find_params + management_network_name in vim config The network could not be found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_5": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -235,12 +301,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_5": { - "target_id": "vim_openstack_5", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -276,14 +342,16 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_name_in_find_params_filterdict_several_vim_nets(self): """ - management_network_name in find_params.get('filterdict') + mgmt network is set in find_params + management_network_name in vim config + network_name is set in find_params.get('filterdict') More than one network found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_6": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -292,12 +360,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_6": { - "target_id": "vim_openstack_6", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -347,7 +415,7 @@ class TestVimInteractionNet(unittest.TestCase): logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_7": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -356,12 +424,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_4": { - "target_id": "vim_openstack_7", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -371,7 +439,7 @@ class TestVimInteractionNet(unittest.TestCase): "target_record": "test_target_record", "target_record_id": "test_target_record_id", # values coming from extra_dict - "params": "", + "params": {}, "find_params": {"wrong_param": "wrong_value"}, "depends_on": "test_depends_on", }, @@ -401,7 +469,7 @@ class TestVimInteractionNet(unittest.TestCase): logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_8": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -410,12 +478,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_8": { - "target_id": "vim_openstack_8", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -451,14 +519,16 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_name_in_find_params_filterdict_no_vim_nets(self): """ - management_network_name in find_params.get('filterdict') + mgmt network is set in find_params + management_network_name in vim config + network_name is set in find_params.get('filterdict') Any network could not be found in the VIM """ db = "test_db" logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_9": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -467,12 +537,72 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_9": { - "target_id": "vim_openstack_9", + "target_id": 0, + "action_id": "123456", + "nsr_id": "654321", + "task_id": "123456:1", + "status": "SCHEDULED", + "action": "CREATE", + "item": "test_item", + "target_record": "test_target_record", + "target_record_id": "test_target_record_id", + # values coming from extra_dict + "params": "", + "find_params": { + "filter_dict": { + "name": "some-network-name", + }, + "mgmt": True, + "name": "some_mgmt_name", + }, + "depends_on": "test_depends_on", + }, + }, + } + + task_index = "task_index_9" + self.target_vim.get_network_list.return_value = [] + with self.assertLogs() as captured: + result = instance.new(ro_task, task_index, self.task_depends) + self.assertEqual(len(captured.records), 1) + self.assertTrue( + "Network not found with this criteria" + in captured.records[0].getMessage() + ) + self.assertEqual(captured.records[0].levelname, "ERROR") + self.assertEqual(result[0], "FAILED") + self.assertEqual(result[1].get("created"), False) + self.assertEqual(result[1].get("vim_status"), "VIM_ERROR") + + def test__mgmt_net_in_find_params_filterdict_no_config_no_vim_nets(self): + """ + mgmt network is set in find_params + vim config is empty + network_name is set in find_params.get('filterdict') + Any network could not be found in the VIM + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + instance = VimInteractionNet(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_9": { + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -511,7 +641,7 @@ class TestVimInteractionNet(unittest.TestCase): def test__mgmt_net_name_in_find_params_mgmt_no_config_one_vim_net(self): """ - name in find_params + mgmt network is set in find_params management_network_name is not in db_vims.get('config') One network found in the VIM """ @@ -519,19 +649,19 @@ class TestVimInteractionNet(unittest.TestCase): logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_10": { + 0: { "config": {}, }, } instance = VimInteractionNet(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_2": { - "target_id": "vim_openstack_10", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -569,7 +699,7 @@ class TestVimInteractionNet(unittest.TestCase): logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_11": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -578,12 +708,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_11": { - "target_id": "vim_openstack_11", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -624,7 +754,7 @@ class TestVimInteractionNet(unittest.TestCase): logger = "test_logger" my_vims = "test-vim" db_vims = { - "vim_openstack_13": { + 0: { "config": { "management_network_name": "test_mgmt_name", }, @@ -633,12 +763,12 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(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_12": { - "target_id": "vim_openstack_13", + "target_id": 0, "action_id": "123456", "nsr_id": "654321", "task_id": "123456:1", @@ -677,7 +807,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_1": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "122436:1", "locked_by": None, @@ -690,6 +822,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, @@ -729,7 +862,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_1": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "122436:1", "locked_by": None, @@ -742,6 +877,7 @@ class TestVimInteractionNet(unittest.TestCase): "vim_name": "test-vim", "vim_status": "BUILD", "vim_details": "", + "vim_message": None, "refresh_at": None, }, "modified_at": 1637324200.994312, @@ -782,7 +918,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_1": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "122436:1", "locked_by": None, @@ -795,6 +933,7 @@ class TestVimInteractionNet(unittest.TestCase): "vim_name": "test-vim", "vim_status": "BUILD", "vim_details": "", + "vim_message": None, "refresh_at": None, }, "modified_at": 1637324200.994312, @@ -814,7 +953,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) @@ -835,7 +974,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_1": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "122436:1", "locked_by": None, @@ -848,6 +989,7 @@ class TestVimInteractionNet(unittest.TestCase): "vim_name": "test-vim", "vim_status": "BUILD", "vim_details": "", + "vim_message": None, "refresh_at": None, }, "modified_at": 1637324200.994312, @@ -877,7 +1019,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_1": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "122436:1", "locked_by": None, @@ -890,6 +1034,7 @@ class TestVimInteractionNet(unittest.TestCase): "vim_name": "test-vim", "vim_status": "BUILD", "vim_details": "", + "vim_message": None, "refresh_at": None, }, "modified_at": 163724200.994312, @@ -908,7 +1053,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) @@ -931,7 +1076,9 @@ class TestVimInteractionNet(unittest.TestCase): instance = VimInteractionNet(db, logger, my_vims, db_vims) with patch.object( instance, "my_vims", {"vim_openstack_2": self.target_vim} - ), patch.object(instance, "logger", logging): + ), patch.object(instance, "logger", logging), patch.object( + instance, "db_vims", db_vims + ): ro_task = { "_id": "128436:1", "locked_by": None, @@ -944,6 +1091,7 @@ class TestVimInteractionNet(unittest.TestCase): "vim_name": "test-vim", "vim_status": "BUILD", "vim_details": "", + "vim_message": None, "refresh_at": None, }, "modified_at": 163724211.994312, @@ -954,3 +1102,334 @@ class TestVimInteractionNet(unittest.TestCase): self.target_vim.refresh_nets_status.return_value = {} with self.assertRaises(KeyError): instance.refresh(ro_task) + + +class TestVimInteractionAffinityGroup(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__new_affinity_group_ok(self): + """ + create affinity group with attributes set in params + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + + instance = VimInteractionAffinityGroup(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": "123456", + "nsr_id": "654321", + "task_id": "123456:1", + "status": "SCHEDULED", + "action": "CREATE", + "item": "test_item", + "target_record": "test_target_record", + "target_record_id": "test_target_record_id", + # values coming from extra_dict + "params": { + "affinity_group_data": { + "name": "affinity_group_1", + "type": "affinity", + "scope": "nfvi-node", + } + }, + "find_params": {}, + "depends_on": "test_depends_on", + }, + }, + } + + task_index = "task_index_1" + self.target_vim.new_affinity_group.return_value = ( + "sample_affinity_group_id_1" + ) + result = instance.new(ro_task, task_index, self.task_depends) + self.assertEqual(result[0], "DONE") + self.assertEqual(result[1].get("vim_id"), "sample_affinity_group_id_1") + self.assertEqual(result[1].get("created"), True) + self.assertEqual(result[1].get("vim_status"), "DONE") + + def test__new_affinity_group_failed(self): + """ + create affinity group with no attributes set in params + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + + instance = VimInteractionAffinityGroup(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_2": { + "target_id": 0, + "action_id": "123456", + "nsr_id": "654321", + "task_id": "123456:1", + "status": "SCHEDULED", + "action": "CREATE", + "item": "test_item", + "target_record": "test_target_record", + "target_record_id": "test_target_record_id", + # values coming from extra_dict + "params": {}, + "find_params": {}, + "depends_on": "test_depends_on", + }, + }, + } + + task_index = "task_index_2" + self.target_vim.new_affinity_group.return_value = ( + "sample_affinity_group_id_1" + ) + result = instance.new(ro_task, task_index, self.task_depends) + self.assertEqual(result[0], "DONE") + self.assertEqual(result[1].get("vim_id"), None) + self.assertEqual(result[1].get("created"), False) + self.assertEqual(result[1].get("vim_status"), "DONE") + + def test__delete_affinity_group_ok(self): + """ + delete affinity group with a proper vim_id + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + + instance = VimInteractionAffinityGroup(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_3": { + "target_id": 0, + "task_id": "123456:1", + }, + }, + "vim_info": { + "created": False, + "created_items": None, + "vim_id": "sample_affinity_group_id_3", + "vim_name": "sample_affinity_group_id_3", + "vim_status": None, + "vim_details": "some-details", + "vim_message": None, + "refresh_at": None, + }, + } + + task_index = "task_index_3" + self.target_vim.delete_affinity_group.return_value = ( + "sample_affinity_group_id_3" + ) + result = instance.delete(ro_task, task_index) + self.assertEqual(result[0], "DONE") + self.assertEqual(result[1].get("vim_message"), "DELETED") + self.assertEqual(result[1].get("created"), False) + self.assertEqual(result[1].get("vim_status"), "DELETED") + + def test__delete_affinity_group_failed(self): + """ + delete affinity group with missing vim_id + """ + db = "test_db" + logger = "test_logger" + my_vims = "test-vim" + db_vims = { + 0: { + "config": {}, + }, + } + + instance = VimInteractionAffinityGroup(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_4": { + "target_id": 0, + "task_id": "123456:1", + }, + }, + "vim_info": { + "created": False, + "created_items": None, + "vim_id": None, + "vim_name": None, + "vim_status": None, + "vim_details": "some-details", + "vim_message": None, + "refresh_at": None, + }, + } + + task_index = "task_index_4" + 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_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") + + +class TestVimInteractionMigration(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_migration_done(self): + """ + create migrate 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 = VimInteractionMigration(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": "migrate", + "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", + "migrate_host": "osm-test2", + "vdu_vim_info": {0: {"interfaces": []}}, + }, + } + }, + } + self.target_vim.migrate_instance.return_value = "ACTIVE", "test" + + 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"), "ACTIVE")