netsted template validate type error 93/16093/1
authorshangxdy <shang.xiaodong@zte.com.cn>
Wed, 29 Jun 2016 08:10:49 +0000 (16:10 +0800)
committershangxdy <shang.xiaodong@zte.com.cn>
Wed, 29 Jun 2016 08:10:49 +0000 (16:10 +0800)
When import nested template, validate type error, in the
validate list lack the type of "topology_template"

Change-Id: Ic16e02f460dc59936dfc5a361a21b9533f0e5e83
JIRA: PARSER-58
Signed-off-by: shangxdy <shang.xiaodong@zte.com.cn>
tosca2heat/tosca-parser/toscaparser/elements/tosca_type_validation.py
tosca2heat/tosca-parser/toscaparser/tests/data/topology_template/system.yaml
tosca2heat/tosca-parser/toscaparser/tests/test_topology_template.py
tosca2heat/tosca-parser/toscaparser/topology_template.py
tosca2heat/tosca-parser/toscaparser/tosca_template.py

index 16764bc..82b0b46 100644 (file)
@@ -22,12 +22,13 @@ class TypeValidation(object):
                              DSL_DEFINITIONS, NODE_TYPES, REPOSITORIES,
                              DATA_TYPES, ARTIFACT_TYPES, GROUP_TYPES,
                              RELATIONSHIP_TYPES, CAPABILITY_TYPES,
-                             INTERFACE_TYPES, POLICY_TYPES) = \
+                             INTERFACE_TYPES, POLICY_TYPES,
+                             TOPOLOGY_TEMPLATE) = \
         ('tosca_definitions_version', 'description', 'imports',
          'dsl_definitions', 'node_types', 'repositories',
          'data_types', 'artifact_types', 'group_types',
          'relationship_types', 'capability_types',
-         'interface_types', 'policy_types')
+         'interface_types', 'policy_types', 'topology_template')
     VALID_TEMPLATE_VERSIONS = ['tosca_simple_yaml_1_0']
     exttools = ExtTools()
     VALID_TEMPLATE_VERSIONS.extend(exttools.get_versions())
index 2d459aa..9996e4f 100644 (file)
@@ -2,6 +2,7 @@ tosca_definitions_version: tosca_simple_yaml_1_0
 
 imports:
   - definitions.yaml
+  - subsystem.yaml
 
 topology_template:
   description: Template of online transaction processing service.
@@ -54,4 +55,4 @@ topology_template:
         # to be updated when substitution_mapping is implemented
       # capabilities:
         # database_endpoint:
-          # to be updated when substitution_mapping is implemented
\ No newline at end of file
+          # to be updated when substitution_mapping is implemented
index cbd4e3b..0f1a33e 100644 (file)
@@ -34,11 +34,6 @@ class TopologyTemplateTest(TestCase):
         self.topo = TopologyTemplate(self.topo_tpl,
                                      self._get_all_custom_def())
 
-        self.tosca_system_tpl_path = os.path.join(
-            os.path.dirname(os.path.abspath(__file__)),
-            "data/topology_template/system.yaml")
-        self.system_template = ToscaTemplate(self.tosca_system_tpl_path)
-
     def _get_custom_def(self, type_definition):
         custom_defs = {}
         for definition in self.imports:
index f8f8875..d51512a 100644 (file)
@@ -58,6 +58,7 @@ class TopologyTemplate(object):
             self.groups = self._groups()
             self.policies = self._policies()
             self._process_intrinsic_functions()
+            self.substitution_mappings = self._substitution_mappings()
 
     def _inputs(self):
         inputs = []
index 1bad6e9..2ab2581 100644 (file)
@@ -69,7 +69,7 @@ class ToscaTemplate(object):
         self.input_path = None
         self.path = None
         self.tpl = None
-        self.nested_tosca_template = None
+        self.nested_tosca_template = []
         if path:
             self.input_path = path
             self.path = self._get_path(path)
@@ -199,11 +199,13 @@ class ToscaTemplate(object):
 
     def _handle_nested_topo_tpls(self, nested_topo_tpls):
         for tpl in nested_topo_tpls:
-            if tpl.get(TOPOLOGY_TEMPLATE):
-                nested_tosca_template = ToscaTemplate(
-                    path=self.path, parsed_params=self.parsed_params,
-                    yaml_dict_tpl=nested_topo_tpls)
-                self.nested_tosca_template.apend(nested_tosca_template)
+            filename, tosca_tpl = tpl.items()[0]
+            if tosca_tpl.get(TOPOLOGY_TEMPLATE):
+                nested_template = ToscaTemplate(
+                    path=filename, parsed_params=self.parsed_params,
+                    yaml_dict_tpl=tosca_tpl)
+                if nested_template.topology_template.substitution_mappings:
+                    self.nested_tosca_template.apend(nested_template)
 
     def _validate_field(self):
         version = self._tpl_version()