Solves the incorrect inheritance of attributes in NodeType

Also remove unnecesary sort in some tests.

Change-Id: Ie67d88f17753fa5225a288a629075cf67c803baa
Related-Bug: 1540799
This commit is contained in:
Miguel Caballer 2016-02-02 10:07:18 +01:00
parent 18e677771b
commit 7b7f7c4f87
4 changed files with 46 additions and 11 deletions

View File

@ -66,7 +66,7 @@ class StatefulEntityType(EntityType):
def get_attributes_def_objects(self):
'''Return a list of attribute definition objects.'''
attrs = self.get_value(self.ATTRIBUTES)
attrs = self.get_value(self.ATTRIBUTES, parent=True)
if attrs:
return [AttributeDef(attr, None, schema)
for attr, schema in attrs.items()]

View File

@ -0,0 +1,28 @@
tosca_definitions_version: tosca_simple_yaml_1_0
description: TOSCA simple profile to test the attribute inheritance
imports:
- custom_types/compute_with_prop.yaml
topology_template:
node_templates:
server:
type: tosca.nodes.ComputeWithProp
properties:
test: yes
capabilities:
host:
properties:
num_cpus: 1
mem_size: 1 GB
os:
properties:
type: linux
outputs:
server_ip:
value: { get_attribute: [ server, public_address ] }

View File

@ -64,15 +64,15 @@ class ToscaDefTest(TestCase):
def test_capabilities(self):
self.assertEqual(
sorted(['tosca.capabilities.Container',
'tosca.capabilities.Node',
'tosca.capabilities.OperatingSystem',
'tosca.capabilities.network.Bindable',
'tosca.capabilities.Scalable']),
['tosca.capabilities.Container',
'tosca.capabilities.Node',
'tosca.capabilities.OperatingSystem',
'tosca.capabilities.Scalable',
'tosca.capabilities.network.Bindable'],
sorted([c.type for c in compute_type.get_capabilities_objects()]))
self.assertEqual(
sorted(['tosca.capabilities.Node',
'tosca.capabilities.network.Linkable']),
['tosca.capabilities.Node',
'tosca.capabilities.network.Linkable'],
sorted([c.type for c in network_type.get_capabilities_objects()]))
endpoint_properties = ['initiator', 'network_name', 'port',
'port_name', 'ports', 'protocol',
@ -154,7 +154,8 @@ class ToscaDefTest(TestCase):
def test_attributes_def(self):
self.assertEqual(
['networks', 'ports', 'private_address', 'public_address'],
['networks', 'ports', 'private_address', 'public_address',
'state', 'tosca_id', 'tosca_name'],
sorted(compute_type.get_attributes_def().keys()))
def test_requirements(self):
@ -171,8 +172,8 @@ class ToscaDefTest(TestCase):
def test_relationship(self):
self.assertEqual(
sorted([('tosca.relationships.HostedOn', 'tosca.nodes.Compute'),
('tosca.relationships.DependsOn', 'tosca.nodes.Root')]),
[('tosca.relationships.DependsOn', 'tosca.nodes.Root'),
('tosca.relationships.HostedOn', 'tosca.nodes.Compute')],
sorted([(relation.type, node.type) for
relation, node in component_type.relationship.items()]))
self.assertIn(

View File

@ -698,3 +698,9 @@ class ToscaTemplateTest(TestCase):
os.path.dirname(os.path.abspath(__file__)),
"data/test_node_filter.yaml")
ToscaTemplate(tosca_tpl)
def test_attributes_inheritance(self):
tosca_tpl = os.path.join(
os.path.dirname(os.path.abspath(__file__)),
"data/test_attributes_inheritance.yaml")
ToscaTemplate(tosca_tpl)