aboutsummaryrefslogtreecommitdiffstats
path: root/jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java
diff options
context:
space:
mode:
Diffstat (limited to 'jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java')
-rw-r--r--jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java159
1 files changed, 159 insertions, 0 deletions
diff --git a/jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java
new file mode 100644
index 0000000..bae9488
--- /dev/null
+++ b/jtosca/src/main/java/org/openecomp/sdc/toscaparser/elements/PortSpec.java
@@ -0,0 +1,159 @@
+package org.openecomp.sdc.toscaparser.elements;
+
+import java.util.LinkedHashMap;
+
+import org.openecomp.sdc.toscaparser.DataEntity;
+import org.openecomp.sdc.toscaparser.common.ExceptionCollector;
+import org.openecomp.sdc.toscaparser.utils.ValidateUtils;
+
+public class PortSpec {
+ // Parent class for tosca.datatypes.network.PortSpec type
+
+ private static final String SHORTNAME = "PortSpec";
+ private static final String TYPE_URI = "tosca.datatypes.network." + SHORTNAME;
+
+ private static final String PROTOCOL = "protocol";
+ private static final String SOURCE = "source";
+ private static final String SOURCE_RANGE = "source_range";
+ private static final String TARGET = "target";
+ private static final String TARGET_RANGE = "target_range";
+
+ private static final String PROPERTY_NAMES[] = {
+ PROTOCOL, SOURCE, SOURCE_RANGE,
+ TARGET, TARGET_RANGE
+ };
+
+ // todo(TBD) May want to make this a subclass of DataType
+ // and change init method to set PortSpec's properties
+ public PortSpec() {
+
+ }
+
+ // The following additional requirements MUST be tested:
+ // 1) A valid PortSpec MUST have at least one of the following properties:
+ // target, target_range, source or source_range.
+ // 2) A valid PortSpec MUST have a value for the source property that
+ // is within the numeric range specified by the property source_range
+ // when source_range is specified.
+ // 3) A valid PortSpec MUST have a value for the target property that is
+ // within the numeric range specified by the property target_range
+ // when target_range is specified.
+ public static void validateAdditionalReq(Object _properties,
+ String propName,
+ LinkedHashMap<String,Object> custom_def) {
+
+ try {
+ LinkedHashMap<String,Object> properties = (LinkedHashMap<String,Object>)_properties;
+ Object source = properties.get(PortSpec.SOURCE);
+ Object sourceRange = properties.get(PortSpec.SOURCE_RANGE);
+ Object target = properties.get(PortSpec.TARGET);
+ Object targetRange = properties.get(PortSpec.TARGET_RANGE);
+
+ // verify one of the specified values is set
+ if(source == null && sourceRange == null &&
+ target == null && targetRange == null) {
+ ExceptionCollector.appendException(String.format(
+ "InvalidTypeAdditionalRequirementsError: Additional requirements for type \"%s\" not met",
+ TYPE_URI));
+ }
+ // Validate source value is in specified range
+ if(source != null && sourceRange != null) {
+ ValidateUtils.validateValueInRange(source,sourceRange,SOURCE);
+ }
+ else {
+ DataEntity portdef = new DataEntity("PortDef", source, null, SOURCE);
+ portdef.validate();
+ }
+ // Validate target value is in specified range
+ if(target != null && targetRange != null) {
+ ValidateUtils.validateValueInRange(target,targetRange,SOURCE);
+ }
+ else {
+ DataEntity portdef = new DataEntity("PortDef", source, null, TARGET);
+ portdef.validate();
+ }
+ }
+ catch(Exception e) {
+ ExceptionCollector.appendException(String.format(
+ "ValueError: \"%s\" do not meet requirements for type \"%s\"",
+ _properties.toString(),SHORTNAME));
+ }
+ }
+
+}
+
+/*python
+
+from toscaparser.common.exception import ExceptionCollector
+from toscaparser.common.exception import InvalidTypeAdditionalRequirementsError
+from toscaparser.utils.gettextutils import _
+import org.openecomp.sdc.toscaparser.utils.validateutils as validateutils
+
+log = logging.getLogger('tosca')
+
+
+class PortSpec(object):
+ '''Parent class for tosca.datatypes.network.PortSpec type.'''
+
+ SHORTNAME = 'PortSpec'
+ TYPE_URI = 'tosca.datatypes.network.' + SHORTNAME
+
+ PROPERTY_NAMES = (
+ PROTOCOL, SOURCE, SOURCE_RANGE,
+ TARGET, TARGET_RANGE
+ ) = (
+ 'protocol', 'source', 'source_range',
+ 'target', 'target_range'
+ )
+
+ # TODO(TBD) May want to make this a subclass of DataType
+ # and change init method to set PortSpec's properties
+ def __init__(self):
+ pass
+
+ # The following additional requirements MUST be tested:
+ # 1) A valid PortSpec MUST have at least one of the following properties:
+ # target, target_range, source or source_range.
+ # 2) A valid PortSpec MUST have a value for the source property that
+ # is within the numeric range specified by the property source_range
+ # when source_range is specified.
+ # 3) A valid PortSpec MUST have a value for the target property that is
+ # within the numeric range specified by the property target_range
+ # when target_range is specified.
+ @staticmethod
+ def validate_additional_req(properties, prop_name, custom_def=None, ):
+ try:
+ source = properties.get(PortSpec.SOURCE)
+ source_range = properties.get(PortSpec.SOURCE_RANGE)
+ target = properties.get(PortSpec.TARGET)
+ target_range = properties.get(PortSpec.TARGET_RANGE)
+
+ # verify one of the specified values is set
+ if source is None and source_range is None and \
+ target is None and target_range is None:
+ ExceptionCollector.appendException(
+ InvalidTypeAdditionalRequirementsError(
+ type=PortSpec.TYPE_URI))
+ # Validate source value is in specified range
+ if source and source_range:
+ validateutils.validate_value_in_range(source, source_range,
+ PortSpec.SOURCE)
+ else:
+ from toscaparser.dataentity import DataEntity
+ portdef = DataEntity('PortDef', source, None, PortSpec.SOURCE)
+ portdef.validate()
+ # Validate target value is in specified range
+ if target and target_range:
+ validateutils.validate_value_in_range(target, target_range,
+ PortSpec.TARGET)
+ else:
+ from toscaparser.dataentity import DataEntity
+ portdef = DataEntity('PortDef', source, None, PortSpec.TARGET)
+ portdef.validate()
+ except Exception:
+ msg = _('"%(value)s" do not meet requirements '
+ 'for type "%(type)s".') \
+ % {'value': properties, 'type': PortSpec.SHORTNAME}
+ ExceptionCollector.appendException(
+ ValueError(msg))
+*/ \ No newline at end of file