Fix error using get_attribute with HOST in case of setting host relationship in "long" format.
Change-Id: I7fefe31373bdc407599f1ebbf844c0a79aa0e241 Closes-Bug: 1779643
This commit is contained in:
parent
3eb67e755d
commit
c08022d0b7
|
@ -246,6 +246,15 @@ class GetAttribute(Function):
|
|||
target_name)
|
||||
|
||||
def _find_node_template(self, node_template_name):
|
||||
# if the node_template_name has the long format
|
||||
if isinstance(node_template_name, dict):
|
||||
# get only the node name
|
||||
if 'node' in node_template_name:
|
||||
node_template_name = node_template_name['node']
|
||||
else:
|
||||
ExceptionCollector.appendException(
|
||||
ValueError(_(' No node name in the relationship.')))
|
||||
return
|
||||
if node_template_name == HOST:
|
||||
# Currently this is the only way to tell whether the function
|
||||
# is used within the outputs section of the TOSCA template.
|
||||
|
@ -479,6 +488,15 @@ class GetProperty(Function):
|
|||
return found[0]
|
||||
|
||||
def _find_node_template(self, node_template_name):
|
||||
# if the node_template_name has the long format
|
||||
if isinstance(node_template_name, dict):
|
||||
# get only the node name
|
||||
if 'node' in node_template_name:
|
||||
node_template_name = node_template_name['node']
|
||||
else:
|
||||
ExceptionCollector.appendException(
|
||||
ValueError(_(' No node name in the relationship.')))
|
||||
return
|
||||
if node_template_name == SELF:
|
||||
return self.context
|
||||
# enable the HOST value in the function
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
tosca_definitions_version: tosca_simple_yaml_1_0
|
||||
|
||||
description: TOSCA simple profile to test a relatinship in log format
|
||||
|
||||
node_types:
|
||||
|
||||
tosca.nodes.SomeSoftwareComponent:
|
||||
derived_from: tosca.nodes.SoftwareComponent
|
||||
properties:
|
||||
test:
|
||||
type: string
|
||||
|
||||
topology_template:
|
||||
|
||||
node_templates:
|
||||
|
||||
some:
|
||||
type: tosca.nodes.SomeSoftwareComponent
|
||||
properties:
|
||||
test: { get_attribute: [ HOST, private_address ] }
|
||||
requirements:
|
||||
- host:
|
||||
node: server
|
||||
capability: tosca.capabilities.Container
|
||||
relationship: tosca.relationships.HostedOn
|
||||
|
||||
server:
|
||||
type: tosca.nodes.Compute
|
|
@ -1864,3 +1864,9 @@ heat-translator/master/translator/tests/data/custom_types/wordpress.yaml
|
|||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"data/test_normative_type_properties_override.yaml")
|
||||
self.assertIsNotNone(ToscaTemplate(tpl_path))
|
||||
|
||||
def test_long_rel(self):
|
||||
tpl_path = os.path.join(
|
||||
os.path.dirname(os.path.abspath(__file__)),
|
||||
"data/test_long_rel.yaml")
|
||||
self.assertIsNotNone(ToscaTemplate(tpl_path))
|
||||
|
|
Loading…
Reference in New Issue