aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPiotr Stanior <piotr.stanior@t-mobile.pl>2022-01-27 15:29:38 +0100
committerPiotr Stanior <piotr.stanior@t-mobile.pl>2022-02-07 09:31:10 +0100
commit1039c4daafe70253d0012e97b3e26e76fe84f3a0 (patch)
tree42176560cf3bd5c9845192d5c7de7a6faf515f64
parente9dbe96626c23204bac7426bba69b4e2aedfbd8f (diff)
Add data dictionary resource creation
Change-Id: Iacabc66da38b7e4b8b04d3041e136343fcf5183c Issue-ID: INT-2055 Signed-off-by: Piotr Stanior <piotr.stanior@t-mobile.pl>
-rw-r--r--docs/source/schemas/version_1_0.rst15
-rw-r--r--docs/source/schemas/version_1_1.rst15
-rw-r--r--onap_data_provider/resources/data_dictionary_resource.py66
-rw-r--r--onap_data_provider/resources/resource_creator.py7
-rw-r--r--onap_data_provider/schemas/infra.schema14
-rw-r--r--onap_data_provider/schemas/infra_1_1.schema14
-rw-r--r--tests/test_data_dictionary_resource.py34
7 files changed, 165 insertions, 0 deletions
diff --git a/docs/source/schemas/version_1_0.rst b/docs/source/schemas/version_1_0.rst
index ffc65ca..15e327d 100644
--- a/docs/source/schemas/version_1_0.rst
+++ b/docs/source/schemas/version_1_0.rst
@@ -399,3 +399,18 @@ VF modules instantiation parameters
- List of key-value parameters
- NO
-
+
+Data dictionary
+---------------
+
+.. list-table::
+ :header-rows: 1
+
+ * - Property
+ - Type
+ - Required
+ - Comment
+ * - file-path
+ - string
+ - YES
+ -
diff --git a/docs/source/schemas/version_1_1.rst b/docs/source/schemas/version_1_1.rst
index cb78222..4546ef1 100644
--- a/docs/source/schemas/version_1_1.rst
+++ b/docs/source/schemas/version_1_1.rst
@@ -413,3 +413,18 @@ VF modules instantiation parameters
- List of key-value parameters
- NO
-
+
+Data dictionary
+---------------
+
+.. list-table::
+ :header-rows: 1
+
+ * - Property
+ - Type
+ - Required
+ - Comment
+ * - file-path
+ - string
+ - YES
+ -
diff --git a/onap_data_provider/resources/data_dictionary_resource.py b/onap_data_provider/resources/data_dictionary_resource.py
new file mode 100644
index 0000000..4c9402e
--- /dev/null
+++ b/onap_data_provider/resources/data_dictionary_resource.py
@@ -0,0 +1,66 @@
+"""Customer resource module."""
+"""
+ Copyright 2022 Deutsche Telekom AG
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+"""
+
+import logging
+from typing import Any, Dict
+from onapsdk.cds import DataDictionarySet # type: ignore
+
+from onapsdk.exceptions import FileError # type: ignore
+from onap_data_provider.resources.resource import Resource
+
+
+class DataDictionarySetResource(Resource):
+ """DataDictionarySet resource class
+
+ creates Data Dictionaries
+ """
+
+ def __init__(self, data: Dict[str, Any]) -> None:
+ """Initialize data dictionary set resource
+
+ Args:
+ data (Dict[str, Any]): Data needed to create resource.
+ """
+ super().__init__(data)
+ self._data_dictionaries: DataDictionarySet = None
+
+ def create(self) -> None:
+ """Create data dictionaries.
+
+ Create data dictionaries from input data.
+ """
+ if self.data_dictionaries:
+ self.data_dictionaries.upload()
+
+ @property
+ def data_dictionaries(self) -> DataDictionarySet:
+ """Get DataDictionarySet.
+
+ Returns:
+ DataDictionarySet: Created DataDictionarySet containing DataDictionary instances.
+ """
+ if not self._data_dictionaries:
+ try:
+ self._data_dictionaries = DataDictionarySet.load_from_file(
+ self.data.get("file-path")
+ )
+ except FileError:
+ logging.error(
+ f"Error when reading from file {self.data.get('file-path')}"
+ )
+ return None
+ return self._data_dictionaries
diff --git a/onap_data_provider/resources/resource_creator.py b/onap_data_provider/resources/resource_creator.py
index 34cbafd..de9ee9b 100644
--- a/onap_data_provider/resources/resource_creator.py
+++ b/onap_data_provider/resources/resource_creator.py
@@ -38,6 +38,7 @@ from .service_instance_resource import (
from .vendor_resource import VendorResource
from .vnf_resource import VnfResource
from .vsp_resource import VspResource
+from .data_dictionary_resource import DataDictionarySetResource
from ..versions import VersionsEnum
if typing.TYPE_CHECKING:
@@ -128,6 +129,11 @@ class ResourceCreator(ABC):
VersionsEnum.V1_0: MsbK8SDefinitionResource,
VersionsEnum.V1_1: MsbK8SDefinitionResource,
},
+ "data-dictionaries": {
+ VersionsEnum.NONE: DataDictionarySetResource,
+ VersionsEnum.V1_0: DataDictionarySetResource,
+ VersionsEnum.V1_1: DataDictionarySetResource,
+ },
}
@classmethod
@@ -157,6 +163,7 @@ class ResourceCreator(ABC):
- platform: PlatformResource
- owning-entity: OwningEntityResource
- msb-k8s-definition: MsbK8SDefinitionResource
+ - data-dictionaries: DataDictionarySetResource
Args:
resource_type (str): Resource type to create
diff --git a/onap_data_provider/schemas/infra.schema b/onap_data_provider/schemas/infra.schema
index 55c5cbf..d683b46 100644
--- a/onap_data_provider/schemas/infra.schema
+++ b/onap_data_provider/schemas/infra.schema
@@ -525,3 +525,17 @@ properties:
- name
- version
- artifact
+ data-dictionaries-sets:
+ type: array
+ items:
+ - type: object
+ properties:
+ data-dictionaries:
+ type: object
+ properities:
+ file-path:
+ type: string
+ required:
+ - file-path
+ required:
+ - data-dictionaries
diff --git a/onap_data_provider/schemas/infra_1_1.schema b/onap_data_provider/schemas/infra_1_1.schema
index 7514acc..fdf6b4f 100644
--- a/onap_data_provider/schemas/infra_1_1.schema
+++ b/onap_data_provider/schemas/infra_1_1.schema
@@ -539,3 +539,17 @@ properties:
- name
- version
- artifact
+ data-dictionaries-sets:
+ type: array
+ items:
+ - type: object
+ properties:
+ data-dictionaries:
+ type: object
+ properities:
+ file-path:
+ type: string
+ required:
+ - file-path
+ required:
+ - data-dictionaries
diff --git a/tests/test_data_dictionary_resource.py b/tests/test_data_dictionary_resource.py
new file mode 100644
index 0000000..31369f7
--- /dev/null
+++ b/tests/test_data_dictionary_resource.py
@@ -0,0 +1,34 @@
+from unittest.mock import patch, PropertyMock
+
+from onapsdk.cds import DataDictionarySet
+from onapsdk.exceptions import FileError
+from onap_data_provider.resources.data_dictionary_resource import (
+ DataDictionarySetResource,
+)
+
+
+@patch(
+ "onap_data_provider.resources.data_dictionary_resource.DataDictionarySet.load_from_file"
+)
+def test_data_dictionary_resource_data_dictionary_set(
+ mock_data_dictionary_set_load_from_file,
+):
+ dds = DataDictionarySetResource({"json-file-path": "test"})
+ mock_data_dictionary_set_load_from_file.return_value = 1
+ assert dds.data_dictionaries is not None
+
+
+@patch("onap_data_provider.resources.data_dictionary_resource.DataDictionarySet.upload")
+@patch(
+ "onap_data_provider.resources.data_dictionary_resource.DataDictionarySet.load_from_file"
+)
+def test_data_dictionary_resource_data_dictionary_set_create(
+ mock_load_from_file, mock_data_dictionary_set_upload
+):
+ ddsr = DataDictionarySetResource({"file-path": "test"})
+ mock_load_from_file.side_effect = FileError
+ mock_data_dictionary_set_upload.assert_not_called()
+ mock_load_from_file.side_effect = None
+ mock_load_from_file.return_value = DataDictionarySet()
+ ddsr.create()
+ mock_data_dictionary_set_upload.assert_called()