Accept defined unknown node types if they inherit a known TOSCA root type
Change-Id: I38c9d1e6ff6d071eb6f388def6c76a1f055718e3 Closes-Bug: #1357434 Signed-off-by: Mathieu Velten <mathieu.velten@cern.ch>
This commit is contained in:
parent
f84d82dc70
commit
fc6342ff8f
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -290,7 +290,8 @@ class HotResource(object):
|
|||||||
# capability is a list of dict
|
# capability is a list of dict
|
||||||
# For now just check if it's type tosca.nodes.Compute
|
# For now just check if it's type tosca.nodes.Compute
|
||||||
# TODO(anyone): match up requirement and capability
|
# 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
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
@ -309,3 +310,13 @@ class HotResource(object):
|
|||||||
else:
|
else:
|
||||||
tosca_props[prop.name] = prop.value
|
tosca_props[prop.name] = prop.value
|
||||||
return tosca_props
|
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
|
||||||
|
@ -165,13 +165,14 @@ class TranslateNodeTemplates(object):
|
|||||||
suffix = 0
|
suffix = 0
|
||||||
# Copy the TOSCA graph: nodetemplate
|
# Copy the TOSCA graph: nodetemplate
|
||||||
for node in self.nodetemplates:
|
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_resources.append(hot_node)
|
||||||
self.hot_lookup[node] = hot_node
|
self.hot_lookup[node] = hot_node
|
||||||
|
|
||||||
# BlockStorage Attachment is a special case,
|
# BlockStorage Attachment is a special case,
|
||||||
# which doesn't match to Heat Resources 1 to 1.
|
# 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
|
volume_name = None
|
||||||
requirements = node.requirements
|
requirements = node.requirements
|
||||||
if requirements:
|
if requirements:
|
||||||
|
Loading…
Reference in New Issue
Block a user