From c8201c119ec686e79797721156767685fe848aca Mon Sep 17 00:00:00 2001 From: shangxdy Date: Thu, 7 Apr 2016 14:08:49 -0400 Subject: Update tosca lib to version 0.5 Use tosca-parser and heat-translator to analyze to the basic nfv-tosca type definitions, and use simple tosca new feature such as policy, group and trigger, which are now supported by the latest version of tosca-parser and heat-translator. JIRA:PARSER-18 Change-Id: I797bcacbb5b32005d0aeb0f3f32851ac96e30f01 Signed--off-by: shangxdy Signed-off-by: shangxdy --- .../translator/hot/tosca_translator.py | 68 ++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tosca2heat/heat-translator/translator/hot/tosca_translator.py (limited to 'tosca2heat/heat-translator/translator/hot/tosca_translator.py') diff --git a/tosca2heat/heat-translator/translator/hot/tosca_translator.py b/tosca2heat/heat-translator/translator/hot/tosca_translator.py new file mode 100644 index 0000000..14ef8a1 --- /dev/null +++ b/tosca2heat/heat-translator/translator/hot/tosca_translator.py @@ -0,0 +1,68 @@ +# +# 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. + +import logging +from toscaparser.utils.gettextutils import _ +from translator.hot.syntax.hot_template import HotTemplate +from translator.hot.translate_inputs import TranslateInputs +from translator.hot.translate_node_templates import TranslateNodeTemplates +from translator.hot.translate_outputs import TranslateOutputs + +log = logging.getLogger('heat-translator') + + +class TOSCATranslator(object): + '''Invokes translation methods.''' + + def __init__(self, tosca, parsed_params, deploy=None): + super(TOSCATranslator, self).__init__() + self.tosca = tosca + self.hot_template = HotTemplate() + self.parsed_params = parsed_params + self.deploy = deploy + self.node_translator = None + log.info(_('Initialized parmaters for translation.')) + + def translate(self): + self._resolve_input() + self.hot_template.description = self.tosca.description + self.hot_template.parameters = self._translate_inputs() + self.node_translator = TranslateNodeTemplates(self.tosca, + self.hot_template) + self.hot_template.resources = self.node_translator.translate() + self.hot_template.outputs = self._translate_outputs() + return self.hot_template.output_to_yaml() + + def _translate_inputs(self): + translator = TranslateInputs(self.tosca.inputs, self.parsed_params, + self.deploy) + return translator.translate() + + def _translate_outputs(self): + translator = TranslateOutputs(self.tosca.outputs, self.node_translator) + return translator.translate() + + # check all properties for all node and ensure they are resolved + # to actual value + def _resolve_input(self): + for n in self.tosca.nodetemplates: + for node_prop in n.get_properties_objects(): + if isinstance(node_prop.value, dict): + try: + self.parsed_params[node_prop.value['get_input']] + except Exception: + msg = (_('Must specify all input values in \ + TOSCA template, missing %s.') % + node_prop.value['get_input']) + log.error(msg) + raise ValueError(msg) -- cgit 1.2.3-korg