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
|
||||
# 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
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user