From fc6342ff8f31d69b48a00b5d31694f6702d1df7d Mon Sep 17 00:00:00 2001 From: Mathieu Velten Date: Mon, 18 Jan 2016 14:29:25 +0100 Subject: [PATCH] Accept defined unknown node types if they inherit a known TOSCA root type Change-Id: I38c9d1e6ff6d071eb6f388def6c76a1f055718e3 Closes-Bug: #1357434 Signed-off-by: Mathieu Velten --- translator/custom/hot/tosca_collectd.py | 30 ------------------- translator/custom/hot/tosca_elasticsearch.py | 30 ------------------- translator/custom/hot/tosca_kibana.py | 30 ------------------- translator/custom/hot/tosca_logstash.py | 30 ------------------- translator/custom/hot/tosca_nodejs.py | 30 ------------------- .../custom/hot/tosca_paypalpizzastore.py | 30 ------------------- translator/custom/hot/tosca_rsyslog.py | 30 ------------------- translator/custom/hot/tosca_wordpress.py | 30 ------------------- translator/hot/syntax/hot_resource.py | 13 +++++++- translator/hot/translate_node_templates.py | 5 ++-- 10 files changed, 15 insertions(+), 243 deletions(-) delete mode 100755 translator/custom/hot/tosca_collectd.py delete mode 100755 translator/custom/hot/tosca_elasticsearch.py delete mode 100755 translator/custom/hot/tosca_kibana.py delete mode 100755 translator/custom/hot/tosca_logstash.py delete mode 100755 translator/custom/hot/tosca_nodejs.py delete mode 100755 translator/custom/hot/tosca_paypalpizzastore.py delete mode 100755 translator/custom/hot/tosca_rsyslog.py delete mode 100755 translator/custom/hot/tosca_wordpress.py diff --git a/translator/custom/hot/tosca_collectd.py b/translator/custom/hot/tosca_collectd.py deleted file mode 100755 index ec517d00..00000000 --- a/translator/custom/hot/tosca_collectd.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaCollectd' - - -class ToscaCollectd(HotResource): - '''Translate TOSCA node type tosca.nodes.SoftwareComponent.Collectd.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Collectd' - - def __init__(self, nodetemplate): - super(ToscaCollectd, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_elasticsearch.py b/translator/custom/hot/tosca_elasticsearch.py deleted file mode 100755 index 34d76703..00000000 --- a/translator/custom/hot/tosca_elasticsearch.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaElasticsearch' - - -class ToscaElasticsearch(HotResource): - '''Translate TOSCA type tosca.nodes.SoftwareComponent.Elasticsearch.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Elasticsearch' - - def __init__(self, nodetemplate): - super(ToscaElasticsearch, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_kibana.py b/translator/custom/hot/tosca_kibana.py deleted file mode 100755 index 71f34026..00000000 --- a/translator/custom/hot/tosca_kibana.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaKibana' - - -class ToscaKibana(HotResource): - '''Translate TOSCA node type tosca.nodes.SoftwareComponent.Kibana.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Kibana' - - def __init__(self, nodetemplate): - super(ToscaKibana, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_logstash.py b/translator/custom/hot/tosca_logstash.py deleted file mode 100755 index 39859e06..00000000 --- a/translator/custom/hot/tosca_logstash.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaLogstash' - - -class ToscaLogstash(HotResource): - '''Translate TOSCA node type tosca.nodes.SoftwareComponent.Logstash.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Logstash' - - def __init__(self, nodetemplate): - super(ToscaLogstash, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_nodejs.py b/translator/custom/hot/tosca_nodejs.py deleted file mode 100755 index 2102af5a..00000000 --- a/translator/custom/hot/tosca_nodejs.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaNodejs' - - -class ToscaNodejs(HotResource): - '''Translate TOSCA node type tosca.nodes.SoftwareComponent.Nodejs.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Nodejs' - - def __init__(self, nodetemplate): - super(ToscaNodejs, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_paypalpizzastore.py b/translator/custom/hot/tosca_paypalpizzastore.py deleted file mode 100755 index ae3865b5..00000000 --- a/translator/custom/hot/tosca_paypalpizzastore.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaPaypalPizzaStore' - - -class ToscaPaypalPizzaStore(HotResource): - '''Translate TOSCA type tosca.nodes.WebApplication.PayPalPizzaStore.''' - - toscatype = 'tosca.nodes.WebApplication.PayPalPizzaStore' - - def __init__(self, nodetemplate): - super(ToscaPaypalPizzaStore, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_rsyslog.py b/translator/custom/hot/tosca_rsyslog.py deleted file mode 100755 index 9604d3c9..00000000 --- a/translator/custom/hot/tosca_rsyslog.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaRsyslog' - - -class ToscaRsyslog(HotResource): - '''Translate TOSCA node type tosca.nodes.SoftwareComponent.Rsyslog.''' - - toscatype = 'tosca.nodes.SoftwareComponent.Rsyslog' - - def __init__(self, nodetemplate): - super(ToscaRsyslog, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/custom/hot/tosca_wordpress.py b/translator/custom/hot/tosca_wordpress.py deleted file mode 100755 index c20fe6a8..00000000 --- a/translator/custom/hot/tosca_wordpress.py +++ /dev/null @@ -1,30 +0,0 @@ -# -# 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 translator.hot.syntax.hot_resource import HotResource - -# Name used to dynamically load appropriate map class. -TARGET_CLASS_NAME = 'ToscaWordpress' - - -class ToscaWordpress(HotResource): - '''Translate TOSCA node type tosca.nodes.WebApplication.WordPress.''' - - toscatype = 'tosca.nodes.WebApplication.WordPress' - - def __init__(self, nodetemplate): - super(ToscaWordpress, self).__init__(nodetemplate) - pass - - def handle_properties(self): - pass diff --git a/translator/hot/syntax/hot_resource.py b/translator/hot/syntax/hot_resource.py index dc2e26b7..2458fa9b 100644 --- a/translator/hot/syntax/hot_resource.py +++ b/translator/hot/syntax/hot_resource.py @@ -290,7 +290,8 @@ class HotResource(object): # capability is a list of dict # For now just check if it's type tosca.nodes.Compute # TODO(anyone): match up requirement and capability - if node.type == 'tosca.nodes.Compute': + base_type = HotResource.get_base_type(node.type_definition) + if base_type.type == 'tosca.nodes.Compute': return True else: return False @@ -309,3 +310,13 @@ class HotResource(object): else: tosca_props[prop.name] = prop.value return tosca_props + + @staticmethod + def get_base_type(node_type): + if node_type.parent_type is not None: + if node_type.parent_type.type.endswith('.Root'): + return node_type + else: + return HotResource.get_base_type(node_type.parent_type) + else: + return node_type diff --git a/translator/hot/translate_node_templates.py b/translator/hot/translate_node_templates.py index 462f134c..818d87e3 100644 --- a/translator/hot/translate_node_templates.py +++ b/translator/hot/translate_node_templates.py @@ -165,13 +165,14 @@ class TranslateNodeTemplates(object): suffix = 0 # Copy the TOSCA graph: nodetemplate for node in self.nodetemplates: - hot_node = TOSCA_TO_HOT_TYPE[node.type](node) + base_type = HotResource.get_base_type(node.type_definition) + hot_node = TOSCA_TO_HOT_TYPE[base_type.type](node) self.hot_resources.append(hot_node) self.hot_lookup[node] = hot_node # BlockStorage Attachment is a special case, # which doesn't match to Heat Resources 1 to 1. - if node.type == "tosca.nodes.Compute": + if base_type.type == "tosca.nodes.Compute": volume_name = None requirements = node.requirements if requirements: