diff options
Diffstat (limited to 'tosca2heat/tosca-parser-0.3.0/toscaparser/elements/property_definition.py')
-rw-r--r-- | tosca2heat/tosca-parser-0.3.0/toscaparser/elements/property_definition.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/tosca2heat/tosca-parser-0.3.0/toscaparser/elements/property_definition.py b/tosca2heat/tosca-parser-0.3.0/toscaparser/elements/property_definition.py new file mode 100644 index 0000000..4ffcade --- /dev/null +++ b/tosca2heat/tosca-parser-0.3.0/toscaparser/elements/property_definition.py @@ -0,0 +1,48 @@ +# 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 toscaparser.common.exception import ExceptionCollector +from toscaparser.common.exception import InvalidSchemaError +from toscaparser.utils.gettextutils import _ + + +class PropertyDef(object): + '''TOSCA built-in Property type.''' + + def __init__(self, name, value=None, schema=None): + self.name = name + self.value = value + self.schema = schema + + try: + self.schema['type'] + except KeyError: + msg = (_('Schema definition of "%(pname)s" must have a "type" ' + 'attribute.') % dict(pname=self.name)) + ExceptionCollector.appendException( + InvalidSchemaError(message=msg)) + + @property + def required(self): + if self.schema: + for prop_key, prop_value in self.schema.items(): + if prop_key == 'required' and prop_value: + return True + return False + + @property + def default(self): + if self.schema: + for prop_key, prop_value in self.schema.items(): + if prop_key == 'default': + return prop_value + return None |