1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
"""SDC properties mixins module."""
"""
Copyright 2021 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.
"""
from typing import Any, List, Union
from onapsdk.exceptions import SDKException, ValidationError, ParameterError # type: ignore
from onapsdk.sdc.component import Component # type: ignore
from onapsdk.sdc.properties import Property # type: ignore
from onapsdk.sdc.sdc_resource import SdcResource # type: ignore
class SdcPropertiesMixins:
"""Mixins class for properties handling.
Mixin class for propoerties preparation for SdcResources and Components.
"""
def set_properties(
self, propresource: Union[SdcResource, Component], data: List[Any]
) -> None:
"""Set properties an SdcResource.
Args:
sdcresource (SdcResource): the SdcResource the properties should belong to
data (Dict[List, Any]): Data needed to create resource.
Raises ValidationError
"""
for property_data in data:
if any(
(prop.name == property_data["name"] for prop in propresource.properties)
):
prop = propresource.get_property(property_data["name"])
prop.value = property_data.get("value")
else:
proptype = property_data.get("type")
if proptype is None:
raise ValidationError(
f"New Property '{str(property_data['name'])}' is missing a type!"
)
property = Property(
name=property_data["name"],
property_type=proptype,
value=property_data.get("value"),
)
try:
propresource.add_property(property)
except SDKException:
raise ParameterError(
f"Creation of new property '{str(property_data['name'])}' "
f"for resourceclass '{str(propresource.__class__.__name__)}' is not provided yet!"
)
def set_inputs(
self, propresource: Union[SdcResource, Component], data: List[Any]
) -> None:
"""Set inputs of an SdcResource.
Args:
sdcresource (SdcResource): the SdcResource the inputs should belong to
data (Dict[str, Any]): Data needed to create resource.
Raises ValidationError
"""
for property_data in data:
if any(
(prop.name == property_data["name"] for prop in propresource.inputs)
):
propresource.set_input_default_value(
propresource.get_input(property_data["name"]),
property_data.get("value"),
)
else:
proptype = property_data.get("type")
if proptype is None:
raise ValidationError(
"New input '{0}' is missing a type!".format(
str(property_data["name"])
)
)
property = Property(
name=property_data["name"],
property_type=proptype,
value=property_data.get("value"),
)
try:
propresource.add_property(property)
propresource.declare_input(property)
except SDKException:
raise ParameterError(
f"Creation of new input '{str(property_data['name'])}' is not provided yet!"
)
|