diff options
author | ankitg@aarnanetworks.com <ankitg@aarnanetworks.com> | 2023-01-16 08:22:04 +0000 |
---|---|---|
committer | Michal Jagiello <michal.jagiello@t-mobile.pl> | 2023-01-16 09:35:34 +0000 |
commit | b7948cee800b2e7b09065148cc326c5a35867550 (patch) | |
tree | 73593b9c5f7e2c640298c9016eb55ed6349e1c62 | |
parent | 1b6a93d93fe6ac41eb221dc59c2171e9bdd578e3 (diff) |
Archive and delete SDC Resources
Issue-ID: INT-2193
Change-Id: I89f7e328dcc514ca632ca2193a80a9994a50cb59
Signed-off-by: Michal Jagiello <michal.jagiello@t-mobile.pl>
-rw-r--r-- | src/onapsdk/sdc/sdc_element.py | 22 | ||||
-rw-r--r-- | src/onapsdk/sdc/sdc_resource.py | 16 | ||||
-rw-r--r-- | tests/test_sdc_element.py | 13 | ||||
-rwxr-xr-x | tests/test_service.py | 4 |
4 files changed, 54 insertions, 1 deletions
diff --git a/src/onapsdk/sdc/sdc_element.py b/src/onapsdk/sdc/sdc_element.py index df513b7..b2d27bd 100644 --- a/src/onapsdk/sdc/sdc_element.py +++ b/src/onapsdk/sdc/sdc_element.py @@ -175,6 +175,16 @@ class SdcElement(SdcOnboardable, ABC): """ return "{}/{}".format(cls._base_url(), cls._sdc_path()) + @property + def delete_url(self) -> str: + """Get an url to delete element. + + Returns: + str: Url which can be used to delete SDC element + + """ + return f"{self._get_all_url}/{self.identifier}" + def _copy_object(self, obj: 'SdcElement') -> None: """ Copy relevant properties from object. @@ -225,3 +235,15 @@ class SdcElement(SdcOnboardable, ABC): """ raise NotImplementedError("SdcElement is an abstract class") + + def delete(self) -> None: + """Delete SDC element. + + Send a request to SDC to delete that element. + + """ + self.send_message( + "DELETE", + "Delete SDC element", + self.delete_url + ) diff --git a/src/onapsdk/sdc/sdc_resource.py b/src/onapsdk/sdc/sdc_resource.py index 7e7dbb9..cae0817 100644 --- a/src/onapsdk/sdc/sdc_resource.py +++ b/src/onapsdk/sdc/sdc_resource.py @@ -958,3 +958,19 @@ class SdcResource(SdcOnboardable, ABC): # pylint: disable=too-many-instance-att return None msg = f"Can't add resource to {self.origin_type} which is not in DRAFT status" raise StatusError(msg) + + def archive(self) -> None: + """Archive resource.""" + self.send_message( + "POST", + f"POST {self.name} component", + f"{self.resource_inputs_url}/archive" + ) + + def delete(self) -> None: + """Delete resource.""" + self.send_message( + "DELETE", + f"Delete {self.name} component", + f"{self.resource_inputs_url}" + ) diff --git a/tests/test_sdc_element.py b/tests/test_sdc_element.py index 88bcd8f..8cfb907 100644 --- a/tests/test_sdc_element.py +++ b/tests/test_sdc_element.py @@ -107,3 +107,16 @@ def test_exists_versions(mock_vsp_created, mock_get_all): sdc_el2._identifier = "123" mock_get_all.return_value = [sdc_el1, sdc_el2] assert sdc_el1.exists() + +@mock.patch.object(SdcElement, "send_message") +def test_delete(mock_send_message): + vsp = Vsp("test_vsp") + vsp.identifier = "test_vsp" + vsp.delete() + mock_send_message.assert_called_once() + + mock_send_message.reset_mock() + vendor = Vendor("test_vendor") + vendor.identifier = "test_vendor" + vendor.delete() + mock_send_message.assert_called_once() diff --git a/tests/test_service.py b/tests/test_service.py index 7606ed2..3e3ec94 100755 --- a/tests/test_service.py +++ b/tests/test_service.py @@ -15,6 +15,7 @@ from os import path from pathlib import Path +from tempfile import TemporaryDirectory from unittest import mock from unittest.mock import MagicMock, PropertyMock import shutil @@ -531,7 +532,8 @@ def test_get_tosca_bad_csart(requests_mock): requests_mock.get( 'https://sdc.api.be.simpledemo.onap.org:30204/sdc/v1/catalog/services/12/toscaModel', content=file_content) - svc.get_tosca('directory') + with TemporaryDirectory() as tempdir: + svc.get_tosca(tempdir) assert not path.exists('/tmp/tosca_files') |