blob: 0c346ee583d401fbf8839e8e4147165b4e035b58 [file] [log] [blame]
Dario Faccin39301762023-04-17 16:56:37 +02001#######################################################################################
2# Copyright ETSI Contributors and Others.
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
13# implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
Dario Faccin39301762023-04-17 16:56:37 +020017import asynctest
Gulsum Atici36365402023-04-07 00:07:07 +030018from copy import deepcopy
Gulsum Atici50d12e02023-04-27 16:41:43 +030019from unittest import TestCase
20from unittest.mock import Mock, patch
21
Gulsum Atici36365402023-04-07 00:07:07 +030022from osm_common.dataclasses.temporal_dataclasses import (
Patricia Reinoso38fb5da2023-04-27 13:48:50 +000023 ChangeVnfInstantiationStateInput,
24 ChangeVnfStateInput,
25 GetTaskQueueInput,
Gulsum Aticia1898b42023-04-25 15:48:10 +030026 GetVimCloudInput,
Gulsum Atici50d12e02023-04-27 16:41:43 +030027 GetVnfDescriptorInput,
28 GetVnfRecordInput,
29 SetVnfModelInput,
Patricia Reinoso38fb5da2023-04-27 13:48:50 +000030 VnfInstantiationState,
31 VnfState,
Gulsum Atici50d12e02023-04-27 16:41:43 +030032 VduComputeConstraints,
Gulsum Atici36365402023-04-07 00:07:07 +030033)
Dario Faccin39301762023-04-17 16:56:37 +020034from osm_common.dbbase import DbException
Patricia Reinoso38fb5da2023-04-27 13:48:50 +000035from osm_common.temporal_constants import (
36 LCM_TASK_QUEUE,
37)
Gulsum Atici36365402023-04-07 00:07:07 +030038from osm_lcm.temporal.vnf_activities import VnfDbActivity, VnfOperations
Dario Faccin39301762023-04-17 16:56:37 +020039from temporalio.testing import ActivityEnvironment
Dario Faccin39301762023-04-17 16:56:37 +020040
Gulsum Atici50d12e02023-04-27 16:41:43 +030041
42vnfr_uuid = "9f472177-95c0-4335-b357-5cdc17a79965"
43vnfd_uuid = "97784f19-d254-4252-946c-cf92d85443ca"
44vim_uuid = "a64f7c6c-bc27-4ec8-b664-5500a3324eca"
45model_name = "my-model-name"
46set_vnf_model_input = SetVnfModelInput(vnfr_uuid=vnfr_uuid, model_name=model_name)
Gulsum Aticia1898b42023-04-25 15:48:10 +030047cloud = "microk8s"
Gulsum Atici50d12e02023-04-27 16:41:43 +030048nsr_uuid = "583726d4-957d-47f5-8df5-199456f7afd0"
Gulsum Aticia1898b42023-04-25 15:48:10 +030049sample_vim_record = {
Gulsum Atici50d12e02023-04-27 16:41:43 +030050 "_id": vim_uuid,
Gulsum Aticia1898b42023-04-25 15:48:10 +030051 "name": "juju",
52 "vim_type": "paas",
53 "vim_url": "192.168.1.100:17070",
54 "vim_user": "admin",
55 "vim_password": "c16gylWEepEREN6vWw==",
56 "config": {
57 "paas_provider": "juju",
58 "cloud": cloud,
59 "cloud_credentials": "microk8s",
60 "authorized_keys": "$HOME/.local/share/juju/ssh/juju_id_rsa.pub",
61 "ca_cert_content": "-----BEGIN-----",
62 },
63}
Gulsum Atici50d12e02023-04-27 16:41:43 +030064vim_account_id = "9b0bedc3-ea8e-42fd-acc9-dd03f4dee73c"
65vdu_id = "hackfest_basic-VM"
66vnf_index = "vnf-profile-id"
67sample_vnfr = {
68 "_id": vnfr_uuid,
69 "id": vnfr_uuid,
70 "nsr-id-ref": "dcf4c922-5a73-41bf-a6ca-870c22d6336c",
71 "vnfd-ref": "jar_vnfd_scalable",
72 "vnfd-id": "f1b38eac-190c-485d-9a74-c6e169c929d8",
73 "vim-account-id": vim_account_id,
74 "namespace": model_name,
75 "member-vnf-index-ref": vnf_index,
76}
77vnf_config = {
78 "member-vnf-index": vnf_index,
79 "vdu": [
80 {
81 "id": vdu_id,
82 "configurable-properties": {
83 "config::redirect-map": "https://osm.instantiation.params"
84 },
85 }
86 ],
87}
88app_config = {"domain_name1": "osm.org", "domain_name2": "osm.com"}
89config = [
90 {"key": "config::domain_name1", "value": "osm.org"},
91 {"key": "config::domain_name2", "value": "osm.com"},
92 {"key": "track", "value": "latest"},
93 {"key": "channel", "value": "stable"},
94]
95vdu = {
96 "id": vdu_id,
97 "name": "hackfest_basic-VM",
98 "sw-image-desc": "ubuntu18.04",
99 "virtual-compute-desc": "hackfest_basic-VM-compute",
100 "virtual-storage-desc": ["hackfest_basic-VM-storage"],
101 "configurable-properties": config,
102}
103vnfd_id = "97784f19-d254-4252-946c-cf92d85443ca"
104flavor_1 = {
105 "id": "compute-id-1",
106 "virtual-memory": {"size": "4"},
107 "virtual-cpu": {"cpu-architecture": "x86", "num-virtual-cpu": 2},
108}
109flavor_2 = {
110 "id": "compute-id-2",
111 "virtual-cpu": {"cpu-architecture": "x86", "num-virtual-cpu": 2},
112}
113flavor_3 = {
114 "id": "compute-id-2",
115 "virtual-memory": {"size": "4"},
116}
117sample_vnfd = {
118 "_id": vnfd_id,
119 "id": "sol006-vnf",
120 "provider": "Canonical",
121 "product-name": "test-vnf",
122 "software-version": "1.0",
123 "vdu": [vdu],
124 "virtual-compute-desc": [flavor_1, flavor_2],
125}
126
127
128class TestException(Exception):
129 pass
Dario Faccin39301762023-04-17 16:56:37 +0200130
131
132class TestVnfDbActivity(asynctest.TestCase):
133 def setUp(self):
134 self.db = Mock()
135 self.env = ActivityEnvironment()
136 self.vnf_db_activity = VnfDbActivity(self.db)
137
Gulsum Atici50d12e02023-04-27 16:41:43 +0300138 async def test_change_vnf_state__successful__db_updated_as_expected(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000139 vnf_state = VnfState.STOPPED
140 change_vnf_state_input = ChangeVnfStateInput(vnfr_uuid, vnf_state)
141 await self.env.run(
142 self.vnf_db_activity.change_vnf_state, change_vnf_state_input
143 )
144 self.db.set_one.assert_called_with(
145 "vnfrs", {"_id": vnfr_uuid}, {"vnfState": vnf_state.name}
146 )
147
Gulsum Atici50d12e02023-04-27 16:41:43 +0300148 async def test_change_vnf_state__failed__raises_db_exception(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000149 change_vnf_state_input = ChangeVnfStateInput(vnfr_uuid, VnfState.STARTED)
150 self.db.set_one.side_effect = DbException("not found")
151 with self.assertRaises(DbException):
152 await self.env.run(
153 self.vnf_db_activity.change_vnf_state, change_vnf_state_input
154 )
155
Gulsum Atici50d12e02023-04-27 16:41:43 +0300156 async def test_change_vnf_instantiation_state__successful__db_updated_as_expected(
157 self,
158 ):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000159 instantiation_state = VnfInstantiationState.NOT_INSTANTIATED
160 change_instantiation_input = ChangeVnfInstantiationStateInput(
161 vnfr_uuid, instantiation_state
162 )
163 await self.env.run(
164 self.vnf_db_activity.change_vnf_instantiation_state,
165 change_instantiation_input,
166 )
167 self.db.set_one.assert_called_with(
168 "vnfrs",
169 {"_id": vnfr_uuid},
170 {"instantiationState": instantiation_state.name},
171 )
172
Gulsum Atici50d12e02023-04-27 16:41:43 +0300173 async def test_change_vnf_instantiation_state__failed__raises_db_exception(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000174 change_instantiation_input = ChangeVnfInstantiationStateInput(
175 vnfr_uuid, VnfInstantiationState.INSTANTIATED
176 )
177 self.db.set_one.side_effect = DbException("not found")
178 with self.assertRaises(DbException):
179 await self.env.run(
Gulsum Atici50d12e02023-04-27 16:41:43 +0300180 self.vnf_db_activity.change_vnf_instantiation_state,
181 change_instantiation_input,
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000182 )
183
Gulsum Atici50d12e02023-04-27 16:41:43 +0300184 async def test_set_vnf_model__successful__db_updated_as_expected(self):
185 await self.env.run(self.vnf_db_activity.set_vnf_model, set_vnf_model_input)
Dario Faccin39301762023-04-17 16:56:37 +0200186 self.db.set_one.assert_called_with(
187 "vnfrs", {"_id": vnfr_uuid}, {"namespace": model_name}
188 )
189
Gulsum Atici50d12e02023-04-27 16:41:43 +0300190 async def test_set_vnf_model__failed__raises_db_exception(self):
Dario Faccin39301762023-04-17 16:56:37 +0200191 self.db.set_one.side_effect = DbException("not found")
192 with self.assertRaises(DbException):
Gulsum Atici50d12e02023-04-27 16:41:43 +0300193 await self.env.run(self.vnf_db_activity.set_vnf_model, set_vnf_model_input)
Gulsum Atici36365402023-04-07 00:07:07 +0300194
195
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000196class TestGetTaskQueue(asynctest.TestCase):
197 async def setUp(self):
198 self.db = Mock()
199 self.vnf_operations_instance = VnfOperations(self.db)
200 self.env = ActivityEnvironment()
201 self.get_task_queue_input = GetTaskQueueInput(vnfr_uuid=sample_vnfr["id"])
202
Gulsum Atici50d12e02023-04-27 16:41:43 +0300203 async def test_activity__succeeded__get_expected_task_queue(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000204 self.db.get_one.side_effect = [sample_vnfr, sample_vim_record]
205 activity_result = await self.env.run(
206 self.vnf_operations_instance.get_task_queue,
207 self.get_task_queue_input,
208 )
209 self.assertEqual(activity_result.task_queue, LCM_TASK_QUEUE)
210
Gulsum Atici50d12e02023-04-27 16:41:43 +0300211 async def test_activity__failed__raises_db_exception(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000212 self.db.get_one.side_effect = DbException("not found")
213 with self.assertRaises(DbException):
214 await self.env.run(
215 self.vnf_operations_instance.get_task_queue,
216 self.get_task_queue_input,
217 )
218
Gulsum Atici50d12e02023-04-27 16:41:43 +0300219 async def test_activity__invalid_task_queue__raises_key_error(self):
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000220 vim_record = deepcopy(sample_vim_record)
221 vim_record["vim_type"] = "some-vim-type"
222 self.db.get_one.side_effect = [sample_vnfr, vim_record]
223 with self.assertRaises(KeyError):
224 await self.env.run(
225 self.vnf_operations_instance.get_task_queue,
226 self.get_task_queue_input,
227 )
228
Patricia Reinoso38fb5da2023-04-27 13:48:50 +0000229
Gulsum Atici50d12e02023-04-27 16:41:43 +0300230class TestGetVnfDescriptor(asynctest.TestCase):
Gulsum Atici36365402023-04-07 00:07:07 +0300231 async def setUp(self):
232 self.db = Mock()
233 self.vnf_operations_instance = VnfOperations(self.db)
234 self.env = ActivityEnvironment()
235
Gulsum Atici50d12e02023-04-27 16:41:43 +0300236 async def test_activity__succeeded__get_expected_vnfd(self):
237 self.db.get_one.return_value = sample_vnfd
Gulsum Atici36365402023-04-07 00:07:07 +0300238 activity_result = await self.env.run(
Gulsum Atici50d12e02023-04-27 16:41:43 +0300239 self.vnf_operations_instance.get_vnf_descriptor,
240 GetVnfDescriptorInput(vnfd_uuid=vnfd_uuid),
Gulsum Atici36365402023-04-07 00:07:07 +0300241 )
242 self.assertEqual(activity_result.vnfd, sample_vnfd)
Gulsum Atici50d12e02023-04-27 16:41:43 +0300243
244 async def test_activity__failed__raises_db_exception(self):
245 self.db.get_one.side_effect = DbException("Can not connect to Database.")
246 with self.assertRaises(DbException):
247 await self.env.run(
248 self.vnf_operations_instance.get_vnf_descriptor,
249 GetVnfDescriptorInput(vnfd_uuid=vnfd_uuid),
250 )
251
252
253class TestGetVnfRecord(asynctest.TestCase):
254 async def setUp(self):
255 self.db = Mock()
256 self.vnf_operations_instance = VnfOperations(self.db)
257 self.env = ActivityEnvironment()
258
259 async def test_activity__succeeded__get_expected_vnfr(self):
260 self.db.get_one.return_value = sample_vnfr
261 activity_result = await self.env.run(
262 self.vnf_operations_instance.get_vnf_record,
263 GetVnfRecordInput(vnfr_uuid=vnfr_uuid),
264 )
Gulsum Atici36365402023-04-07 00:07:07 +0300265 self.assertEqual(activity_result.vnfr, sample_vnfr)
266
Gulsum Atici50d12e02023-04-27 16:41:43 +0300267 async def test_activity__failed__raise_db_exception(self):
Gulsum Atici36365402023-04-07 00:07:07 +0300268 self.db.get_one.side_effect = DbException("Can not connect to Database.")
Gulsum Atici50d12e02023-04-27 16:41:43 +0300269 with self.assertRaises(DbException):
270 await self.env.run(
271 self.vnf_operations_instance.get_vnf_record,
272 GetVnfRecordInput(vnfr_uuid=vnfr_uuid),
Gulsum Atici36365402023-04-07 00:07:07 +0300273 )
Gulsum Atici36365402023-04-07 00:07:07 +0300274
275
Gulsum Aticia1898b42023-04-25 15:48:10 +0300276class TestGetVimCloud(asynctest.TestCase):
277 async def setUp(self):
278 self.db = Mock()
279 self.vnf_operations_instance = VnfOperations(self.db)
280 self.env = ActivityEnvironment()
281
Gulsum Atici50d12e02023-04-27 16:41:43 +0300282 async def test_activity__succeeded__get_vim_cloud(self):
Gulsum Aticia1898b42023-04-25 15:48:10 +0300283 self.db.get_one.side_effect = [sample_vnfr, sample_vim_record]
284 activity_result = await self.env.run(
285 self.vnf_operations_instance.get_vim_cloud,
286 GetVimCloudInput(vnfr_uuid=sample_vnfr["id"]),
287 )
288 self.assertEqual(activity_result.cloud, cloud)
289
Gulsum Atici50d12e02023-04-27 16:41:43 +0300290 async def test_activity__vim_record_without_cloud__no_cloud_info(self):
Gulsum Aticia1898b42023-04-25 15:48:10 +0300291 vim_record = deepcopy(sample_vim_record)
292 vim_record["config"].pop("cloud")
293 self.db.get_one.side_effect = [sample_vnfr, vim_record]
294 activity_result = await self.env.run(
295 self.vnf_operations_instance.get_vim_cloud,
296 GetVimCloudInput(vnfr_uuid=sample_vnfr["id"]),
297 )
298 self.assertEqual(activity_result.cloud, "")
299
Gulsum Atici50d12e02023-04-27 16:41:43 +0300300 async def test_activity__failed__raise_db_exception(self):
Gulsum Aticia1898b42023-04-25 15:48:10 +0300301 self.db.get_one.side_effect = DbException("Can not connect to Database.")
Gulsum Atici50d12e02023-04-27 16:41:43 +0300302 with self.assertRaises(DbException):
303 await self.env.run(
Gulsum Aticia1898b42023-04-25 15:48:10 +0300304 self.vnf_operations_instance.get_vim_cloud,
305 GetVimCloudInput(vnfr_uuid=sample_vnfr["id"]),
306 )
Gulsum Aticia1898b42023-04-25 15:48:10 +0300307
Gulsum Atici50d12e02023-04-27 16:41:43 +0300308 async def test_activity__wrong_vim_record__raise_key_error(self):
Gulsum Aticia1898b42023-04-25 15:48:10 +0300309 vim_record = deepcopy(sample_vim_record)
310 vim_record.pop("config")
311 self.db.get_one.side_effect = [sample_vnfr, vim_record]
Gulsum Atici50d12e02023-04-27 16:41:43 +0300312 with self.assertRaises(KeyError):
313 await self.env.run(
Gulsum Aticia1898b42023-04-25 15:48:10 +0300314 self.vnf_operations_instance.get_vim_cloud,
315 GetVimCloudInput(vnfr_uuid=sample_vnfr["id"]),
316 )
Gulsum Aticia1898b42023-04-25 15:48:10 +0300317
Gulsum Atici50d12e02023-04-27 16:41:43 +0300318
319class TestGetVduInstantiateInfoMethods(TestCase):
320 def test_get_flavor_details__successful__get_flavor(self):
321 compute_desc_id = "compute-id-1"
322 result = VnfOperations._get_flavor_details(compute_desc_id, sample_vnfd)
323 self.assertEqual(result, flavor_1)
324
325 def test_get_flavor_details__empty_compute_desc__flavor_is_none(self):
326 compute_desc_id = ""
327 result = VnfOperations._get_flavor_details(compute_desc_id, sample_vnfd)
328 self.assertEqual(result, None)
329
330 def test_get_flavor_details__compute_desc_not_found__flavor_is_none(self):
331 compute_desc_id = "compute-id-5"
332 result = VnfOperations._get_flavor_details(compute_desc_id, sample_vnfd)
333 self.assertEqual(result, None)
334
335 def test_get_flavor_details__empty_vnfd__flavor_is_none(self):
336 compute_desc_id = "compute-id-5"
337 result = VnfOperations._get_flavor_details(compute_desc_id, {})
338 self.assertEqual(result, None)
339
340 def test_get_flavor_details__wrong_vnfd_format__flavor_is_none(self):
341 compute_desc_id = "compute-id-2"
342 sample_vnfd = {
343 "_id": vnfd_id,
344 "vdu": [vdu],
345 "virtual-compute-desc": [
346 {
347 "virtual-memory": {"size": "4"},
348 }
349 ],
350 }
351 result = VnfOperations._get_flavor_details(compute_desc_id, sample_vnfd)
352 self.assertEqual(result, None)
353
354 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_flavor_details")
355 def test_get_compute_constraints__succeeded__get_constraints(
356 self, mock_get_flavor_details
357 ):
358 mock_get_flavor_details.return_value = flavor_1
359 result = VnfOperations.get_compute_constraints(vdu, sample_vnfd)
360 self.assertEqual(VduComputeConstraints(cores=2, mem=4), result)
361
362 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_flavor_details")
363 def test_get_compute_constraints__empty_flavor_details__no_constraints(
364 self, mock_get_flavor_details
365 ):
366 mock_get_flavor_details.return_value = {}
367 result = VnfOperations.get_compute_constraints(vdu, sample_vnfd)
368 self.assertEqual(VduComputeConstraints(cores=0, mem=0), result)
369
370 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_flavor_details")
371 def test_get_compute_constraints__flavor_details_is_none__no_constraints(
372 self, mock_get_flavor_details
373 ):
374 mock_get_flavor_details.return_value = None
375 result = VnfOperations.get_compute_constraints(vdu, sample_vnfd)
376 self.assertEqual(VduComputeConstraints(cores=0, mem=0), result)
377
378 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_flavor_details")
379 def test_get_compute_constraints__flavor_has_only_cpu__get_cpu_constraint(
380 self, mock_get_flavor_details
381 ):
382 mock_get_flavor_details.return_value = flavor_2
383 result = VnfOperations.get_compute_constraints(vdu, sample_vnfd)
384 self.assertEqual(VduComputeConstraints(cores=2, mem=0), result)
385
386 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_flavor_details")
387 def test_get_compute_constraints__flavor_has_only_memory__get_memory_constraint(
388 self, mock_get_flavor_details
389 ):
390 mock_get_flavor_details.return_value = flavor_3
391 result = VnfOperations.get_compute_constraints(vdu, sample_vnfd)
392 self.assertEqual(VduComputeConstraints(cores=0, mem=4), result)
393
394 def test_list_to_dict__config_has_several_items__get_expected_dict(self):
395 config = [
396 {"key": "config::domain_name1", "value": "osm.org"},
397 {"key": "domain_name2", "value": "osm.com"},
398 ]
399 result = VnfOperations._list_to_dict(config)
400 self.assertEqual(
401 result, {"config::domain_name1": "osm.org", "domain_name2": "osm.com"}
402 )
403
404 def test_list_to_dict__empty_input__get_empty_dict(self):
405 config = []
406 result = VnfOperations._list_to_dict(config)
407 self.assertEqual(result, {})
408
409 def test_get_only_config_items__with_identifier__get_expected_config(self):
410 config = {"config::redirect-map": "https://osm.instantiation.params"}
411 result = VnfOperations._get_only_config_items(config)
412 self.assertEqual(result, {"redirect-map": "https://osm.instantiation.params"})
413
414 def test_get_only_config_items__without_identifier__no_config(self):
415 config = {"key": "domain_name1", "value": "osm.org"}
416 result = VnfOperations._get_only_config_items(config)
417 self.assertEqual(result, {})
418
419 def test_get_only_config_items__empty_input__no_config(self):
420 config = {}
421 result = VnfOperations._get_only_config_items(config)
422 self.assertEqual(result, {})
423
424 def test_get_vdu_instantiation_params__empty_vnf_config__get_params(self):
425 result = VnfOperations.get_vdu_instantiation_params(vdu_id, vnf_config)
426 self.assertEqual(
427 result, {"config::redirect-map": "https://osm.instantiation.params"}
428 )
429
430 def test_get_vdu_instantiation_params__empty_vnf_config__no_params(self):
431 result = VnfOperations.get_vdu_instantiation_params(vdu_id, {})
432 self.assertEqual(result, {})
433
434 def test_get_vdu_instantiation_params__vdu_id_mismatch__no_params(self):
435 config = deepcopy(vnf_config)
436 config["vdu"][0]["id"] = "other-vdu-id"
437 result = VnfOperations.get_vdu_instantiation_params(vdu_id, config)
438 self.assertEqual(result, {})
439
440 def test_get_vdu_instantiation_params__empty_configurable_properties__no_params(
441 self,
442 ):
443 config = deepcopy(vnf_config)
444 config["vdu"][0]["configurable-properties"] = {}
445 result = VnfOperations.get_vdu_instantiation_params(vdu_id, config)
446 self.assertEqual(result, {})
447
448 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_only_config_items")
449 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._list_to_dict")
450 def test_get_application_config__instantiate_config_overrides_vdu_config__get_expected_application_config(
451 self,
452 mock_list_to_dict,
453 mock_get_only_config_items,
454 ):
455 vdu_instantiate_config = {"config::domain_name1": "osm.public"}
456 mock_get_only_config_items.side_effect = [
457 {
458 "domain_name1": "osm.org",
459 "domain_name2": "osm.com",
460 },
461 {"domain_name1": "osm.public"},
462 ]
463 result = VnfOperations.get_application_config(vdu, vdu_instantiate_config)
464 self.assertEqual(
465 result, {"domain_name1": "osm.public", "domain_name2": "osm.com"}
466 )
467
468 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_only_config_items")
469 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._list_to_dict")
470 def test_get_application_config__empty_instantiate_config__get_descriptor_config(
471 self,
472 mock_list_to_dict,
473 mock_get_only_config_items,
474 ):
475 vdu_instantiate_config = {}
476 mock_get_only_config_items.side_effect = [
477 {
478 "domain_name1": "osm.org",
479 "domain_name2": "osm.com",
480 },
481 {},
482 ]
483 result = VnfOperations.get_application_config(vdu, vdu_instantiate_config)
484 self.assertEqual(result, app_config)
485
486 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._get_only_config_items")
487 @patch("osm_lcm.temporal.vnf_activities.VnfOperations._list_to_dict")
488 def test_get_application_config__no_config__empty_application_config(
489 self,
490 mock_list_to_dict,
491 mock_get_only_config_items,
492 ):
493 vdu_instantiate_config = {}
494 vdu_copy = deepcopy(vdu)
495 vdu_copy["configurable-properties"] = []
496 mock_get_only_config_items.side_effect = [{}, {}]
497 result = VnfOperations.get_application_config(vdu_copy, vdu_instantiate_config)
498 self.assertEqual(result, {})
Gulsum Aticia1898b42023-04-25 15:48:10 +0300499
500
Gulsum Atici36365402023-04-07 00:07:07 +0300501if __name__ == "__main__":
502 asynctest.main()