+ def test_update_vm_refresh_disabled_task_with_status_done_vim_openstack_no_refresh(
+ self,
+ ):
+ """1 disabled task with status DONE in DB, refresh_active parameter is equal to -1."""
+ # As refresh_active parameter is equal to -1, task is not be enabled to process again
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = -1
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = -1
+ db.create("ro_tasks", self.ro_task)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ instance.update_vm_refresh(self.ro_task)
+ self.assertEqual(len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count)
+
+ def test_update_vm_refresh_disabled_task_with_status_done_vim_aws_with_refresh(
+ self,
+ ):
+ """2 disabled task with status DONE in DB, refresh_active parameter is not equal to -1."""
+ # Disabled tasks should be enabled to process again as vim type aws
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = 66
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = -1
+ db.create("ro_tasks", self.ro_task)
+ self.ro_task2 = self.ro_task
+ self.ro_task2["_id"] = "122437:1"
+ db.create("ro_tasks", self.ro_task2)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with patch.object(instance, "db_vims", db_vims_aws):
+ instance.update_vm_refresh(self.ro_task)
+ self.assertEqual(
+ len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count - 2
+ )
+
+ def test_update_vm_refresh_no_disabled_task_with_status_done_vim_openstack_with_refresh(
+ self,
+ ):
+ """No disabled task with status DONE in DB, refresh_active parameter is not equal to -1."""
+ # There is not any disabled task, method does not change anything
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = 66
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = 16373242400.994312
+ db.create("ro_tasks", self.ro_task)
+ self.ro_task2 = self.ro_task
+ self.ro_task2["_id"] = "122437:1"
+ db.create("ro_tasks", self.ro_task2)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ instance.update_vm_refresh(self.ro_task)
+ self.assertEqual(len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count)
+
+ def test_update_vm_refresh_disabled_task_with_status_done_vim_openstack_with_refresh(
+ self,
+ ):
+ """1 disabled task with status DONE in DB, refresh_active parameter is equal to -1, vim type is Openstack."""
+ # Disabled task with status done is not enabled again as vim type is openstack
+ db = DbMemory()
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = -1
+ db.create("ro_tasks", self.ro_task)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ instance.update_vm_refresh(self.ro_task)
+ self.assertEqual(len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count)
+
+ def test_process_pending_tasks_status_done_vim_aws_no_refresh(self):
+ """Refresh_active parameter is equal to -1, task status is DONE."""
+ # Task should be disabled to process again
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = -1
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = 16373242400.994312
+ db.create("ro_tasks", self.ro_task)
+ # Number of disabled tasks in DB
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with patch.object(instance, "db_vims", db_vims_aws):
+ instance._process_pending_tasks(self.ro_task)
+ self.assertEqual(
+ len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count + 1
+ )
+
+ def test_process_pending_tasks_status_failed_vim_aws_no_refresh(self):
+ """Refresh_active parameter is equal to -1, task status is FAILED."""
+ # Task is not disabled to process as task status is not DONE
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = -1
+ self.ro_task["tasks"][0]["status"] = "FAILED"
+ self.ro_task["to_check_at"] = 16373242400.994312
+ db.create("ro_tasks", self.ro_task)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "FAILED"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with patch.object(instance, "db_vims", db_vims_aws):
+ instance._process_pending_tasks(self.ro_task)
+ self.assertEqual(
+ len(self.get_disabled_tasks(db, "FAILED")), disabled_tasks_count
+ )
+
+ def test_process_pending_tasks_status_done_vim_aws_with_refresh(self):
+ """Refresh_active parameter is not equal to -1, task status is DONE."""
+ # Task is not disabled to process as refresh_active parameter is not -1
+ db = DbMemory()
+ self.config["period"]["refresh_active"] = 70
+ self.ro_task["tasks"][0]["status"] = "DONE"
+ self.ro_task["to_check_at"] = 16373242400.994312
+ db.create("ro_tasks", self.ro_task)
+ disabled_tasks_count = len(self.get_disabled_tasks(db, "DONE"))
+ instance = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with patch.object(instance, "db_vims", db_vims_aws):
+ instance._process_pending_tasks(self.ro_task)
+ self.assertEqual(
+ len(self.get_disabled_tasks(db, "DONE")), disabled_tasks_count
+ )
+
+ @patch("osm_ng_ro.ns_thread.makedirs", return_value="")
+ def test_create_file_cert(self, mock_makedirs):
+ vim_config = {"config": {"ca_cert_content": "test"}}
+ target_id = "1234"
+ db = Mock()
+
+ with patch("builtins.open", mock_open()) as mocked_file:
+ nsw = NsWorker(self.worker_index, self.config, self.plugins, db)
+ nsw._process_vim_config(target_id, vim_config)
+ mocked_file.assert_called_once_with(
+ f"/app/osm_ro/certs/{target_id}:{self.worker_index}/ca_cert", "w"
+ )
+ assert (
+ vim_config["config"]["ca_cert"]
+ == f"/app/osm_ro/certs/{target_id}:{self.worker_index}/ca_cert"
+ )
+
+ @patch("osm_ng_ro.ns_thread.makedirs")
+ @patch("osm_ng_ro.ns_thread.path")
+ def test_create_file_cert_exists(self, mock_path, mock_makedirs):
+ vim_config = {"config": {"ca_cert_content": "test"}}
+ target_id = "1234"
+ db = Mock()
+ mock_path.isdir.return_value = True
+
+ with patch("builtins.open", mock_open()) as mocked_file:
+ nsw = NsWorker(self.worker_index, self.config, self.plugins, db)
+ nsw._process_vim_config(target_id, vim_config)
+ mock_makedirs.assert_not_called()
+ mocked_file.assert_called_once_with(
+ f"/app/osm_ro/certs/{target_id}:{self.worker_index}/ca_cert", "w"
+ )
+ assert (
+ vim_config["config"]["ca_cert"]
+ == f"/app/osm_ro/certs/{target_id}:{self.worker_index}/ca_cert"
+ )
+
+ @patch("osm_ng_ro.ns_thread.path")
+ @patch("osm_ng_ro.ns_thread.makedirs", side_effect=Exception)
+ def test_create_file_cert_makedirs_except(self, mock_makedirs, mock_path):
+ vim_config = {"config": {"ca_cert_content": "test"}}
+ target_id = "1234"
+ db = Mock()
+ mock_path.isdir.return_value = False
+
+ with patch("builtins.open", mock_open()) as mocked_file:
+ nsw = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with self.assertRaises(NsWorkerException):
+ nsw._process_vim_config(target_id, vim_config)
+ mocked_file.assert_not_called()
+ assert vim_config["config"]["ca_cert_content"] == "test"
+
+ @patch("osm_ng_ro.ns_thread.makedirs", return_value="")
+ def test_create_file_cert_open_excepts(self, mock_makedirs):
+ vim_config = {"config": {"ca_cert_content": "test"}}
+ target_id = "1234"
+ db = Mock()
+
+ with patch("builtins.open", mock_open()) as mocked_file:
+ mocked_file.side_effect = Exception
+ nsw = NsWorker(self.worker_index, self.config, self.plugins, db)
+ with self.assertRaises(NsWorkerException):
+ nsw._process_vim_config(target_id, vim_config)
+ mocked_file.assert_called_once_with(
+ f"/app/osm_ro/certs/{target_id}:{self.worker_index}/ca_cert", "w"
+ )
+ assert vim_config["config"]["ca_cert_content"] == "test"
+
+ def test_get_next_refresh_vim_type_openstack(self):
+ next_refresh = 163535353434.3434
+ result = self.instance._get_next_refresh(self.ro_task, next_refresh)
+ self.assertEqual(result, -1)
+
+ def test_get_next_refresh_vim_type_openstack_refresh_disabled(self):
+ next_refresh = 163535353434.3434
+ self.instance.refresh_config.active = -1
+ result = self.instance._get_next_refresh(self.ro_task, next_refresh)
+ self.assertEqual(result, -1)
+
+ def test_get_next_refresh_vim_type_aws_refresh_disabled(self):
+ self.db_vims = db_vims_aws
+ next_refresh = 163535353434.3434
+ self.instance.refresh_config.active = -1
+ result = self.instance._get_next_refresh(self.ro_task, next_refresh)
+ self.assertEqual(result, -1)
+
+ def test_get_next_refresh_vim_type_aws(self):
+ self.instance.db_vims = db_vims_aws
+ next_refresh = 163535353434.3434
+ self.instance.refresh_config.active = 140
+ result = self.instance._get_next_refresh(self.ro_task, next_refresh)
+ self.assertEqual(result, next_refresh + 140)
+
+
+class TestVimInteractionNet(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)