Merge "Add verigraph code base"
[parser.git] / tosca2heat / tosca-parser / toscaparser / entity_template.py
index f416c99..cc3d620 100644 (file)
@@ -21,6 +21,7 @@ from toscaparser.elements.nodetype import NodeType
 from toscaparser.elements.policytype import PolicyType
 from toscaparser.elements.relationshiptype import RelationshipType
 from toscaparser.properties import Property
+from toscaparser.unsupportedtype import UnsupportedType
 from toscaparser.utils.gettextutils import _
 
 
@@ -44,8 +45,9 @@ class EntityTemplate(object):
         self.entity_tpl = template
         self.custom_def = custom_def
         self._validate_field(self.entity_tpl)
+        type = self.entity_tpl.get('type')
+        UnsupportedType.validate_type(type)
         if entity_name == 'node_type':
-            type = self.entity_tpl.get('type')
             self.type_definition = NodeType(type, custom_def) \
                 if type is not None else None
         if entity_name == 'relationship_type':
@@ -57,19 +59,17 @@ class EntityTemplate(object):
                 type = self.entity_tpl['relationship']
             else:
                 type = self.entity_tpl['type']
+            UnsupportedType.validate_type(type)
             self.type_definition = RelationshipType(type,
                                                     None, custom_def)
         if entity_name == 'policy_type':
-            type = self.entity_tpl.get('type')
             if not type:
                 msg = (_('Policy definition of "%(pname)s" must have'
                        ' a "type" ''attribute.') % dict(pname=name))
                 ExceptionCollector.appendException(
                     ValidationError(msg))
-
             self.type_definition = PolicyType(type, custom_def)
         if entity_name == 'group_type':
-            type = self.entity_tpl.get('type')
             self.type_definition = GroupType(type, custom_def) \
                 if type is not None else None
         self._properties = None
@@ -81,15 +81,11 @@ class EntityTemplate(object):
     def type(self):
         if self.type_definition:
             return self.type_definition.type
-        else:
-            return None
 
     @property
     def parent_type(self):
         if self.type_definition:
             return self.type_definition.parent_type
-        else:
-            return None
 
     @property
     def requirements(self):
@@ -189,7 +185,10 @@ class EntityTemplate(object):
 
     def _validate_capabilities_properties(self, capabilities):
         for cap, props in capabilities.items():
-            capabilitydef = self.get_capability(cap).definition
+            capability = self.get_capability(cap)
+            if not capability:
+                continue
+            capabilitydef = capability.definition
             self._common_validate_properties(capabilitydef,
                                              props[self.PROPERTIES])