Merge "Bugfix for RelationshipTemplate._create_relationship_properties method to get the properties of the "explicit relationships""

This commit is contained in:
Jenkins 2016-03-14 18:07:50 +00:00 committed by Gerrit Code Review
commit 3890832640
2 changed files with 44 additions and 1 deletions

View File

@ -46,6 +46,13 @@ class RelationshipTemplate(EntityTemplate):
props = [] props = []
properties = {} properties = {}
relationship = self.entity_tpl.get('relationship') relationship = self.entity_tpl.get('relationship')
if not relationship:
for value in self.entity_tpl.values():
if isinstance(value, dict):
relationship = value.get('relationship')
break
if relationship: if relationship:
properties = self.type_definition.get_value(self.PROPERTIES, properties = self.type_definition.get_value(self.PROPERTIES,
relationship) or {} relationship) or {}

View File

@ -322,7 +322,43 @@ class PropertyTest(TestCase):
custom_def_snippet=None): custom_def_snippet=None):
nodetemplates = yamlparser.\ nodetemplates = yamlparser.\
simple_parse(tpl_snippet)['node_templates'] simple_parse(tpl_snippet)['node_templates']
custom_def = yamlparser.simple_parse(custom_def_snippet) custom_def = []
if custom_def_snippet:
custom_def = yamlparser.simple_parse(custom_def_snippet)
name = list(nodetemplates.keys())[0] name = list(nodetemplates.keys())[0]
tpl = NodeTemplate(name, nodetemplates, custom_def) tpl = NodeTemplate(name, nodetemplates, custom_def)
return tpl return tpl
def test_explicit_relationship_proprety(self):
tosca_node_template = '''
node_templates:
client_node:
type: tosca.nodes.Compute
requirements:
- local_storage:
node: my_storage
relationship:
type: AttachesTo
properties:
location: /mnt/disk
my_storage:
type: tosca.nodes.BlockStorage
properties:
size: 1 GB
'''
expected_properties = ['location']
nodetemplates = yamlparser.\
simple_parse(tosca_node_template)['node_templates']
tpl = NodeTemplate('client_node', nodetemplates, [])
self.assertIsNone(tpl.validate())
rel_tpls = []
for relationship, trgt in tpl.relationships.items():
rel_tpls.extend(trgt.get_relationship_template())
self.assertEqual(expected_properties,
sorted(rel_tpls[0].get_properties().keys()))