from toscaparser.parameters import Output
from toscaparser.policy import Policy
from toscaparser.relationship_template import RelationshipTemplate
+from toscaparser.substitution_mappings import SubstitutionMappings
from toscaparser.tpl_relationship_graph import ToscaGraph
from toscaparser.utils.gettextutils import _
'''Load the template data.'''
def __init__(self, template, custom_defs,
- rel_types=None, parsed_params=None):
+ rel_types=None, parsed_params=None,
+ sub_mapped_node_template=None):
self.tpl = template
+ self.sub_mapped_node_template = sub_mapped_node_template
if self.tpl:
self.custom_defs = custom_defs
self.rel_types = rel_types
self.groups = self._groups()
self.policies = self._policies()
self._process_intrinsic_functions()
+ self.substitution_mappings = self._substitution_mappings()
def _inputs(self):
inputs = []
input = Input(name, attrs)
if self.parsed_params and name in self.parsed_params:
input.validate(self.parsed_params[name])
+ else:
+ default = input.default
+ if default:
+ input.validate(default)
inputs.append(input)
return inputs
return outputs
def _substitution_mappings(self):
- pass
+ tpl_substitution_mapping = self._tpl_substitution_mappings()
+ if tpl_substitution_mapping:
+ return SubstitutionMappings(tpl_substitution_mapping,
+ self.nodetemplates,
+ self.inputs,
+ self.outputs,
+ self.sub_mapped_node_template,
+ self.custom_defs)
def _policies(self):
policies = []
# topology template can act like node template
# it is exposed by substitution_mappings.
def nodetype(self):
- pass
+ return (self.substitution_mappings.node_type
+ if self.substitution_mappings else None)
def capabilities(self):
- pass
+ return (self.substitution_mappings.capabilities
+ if self.substitution_mappings else None)
def requirements(self):
- pass
+ return (self.substitution_mappings.requirements
+ if self.substitution_mappings else None)
def _tpl_description(self):
description = self.tpl.get(DESCRIPTION)
func = functions.get_function(self, self.outputs, output.value)
if isinstance(func, functions.GetAttribute):
output.attrs[output.VALUE] = func
+
+ @classmethod
+ def get_sub_mapping_node_type(cls, topology_tpl):
+ if topology_tpl and isinstance(topology_tpl, dict):
+ submap_tpl = topology_tpl.get(SUBSTITUION_MAPPINGS)
+ return SubstitutionMappings.get_node_type(submap_tpl)