Correct output values when generating templates

Change-Id: Ibb41bec5c6cf4f63a5b8ab1c9a46b7219c3e46fb
Closes-Bug: #1655439
This commit is contained in:
Zane Bitter 2017-01-10 15:00:39 -05:00
parent 71ca073a97
commit 5553a6f29c
3 changed files with 53 additions and 14 deletions

View File

@ -112,14 +112,12 @@ class Attribute(object):
""" """
if template_type == 'hot': if template_type == 'hot':
return { return {
"value": '{"get_attr": ["%s", "%s"]}' % (resource_name, "value": {"get_attr": [resource_name, self.name]},
self.name),
"description": self.schema.description "description": self.schema.description
} }
else: else:
return { return {
"Value": '{"Fn::GetAtt": ["%s", "%s"]}' % (resource_name, "Value": {"Fn::GetAtt": [resource_name, self.name]},
self.name),
"Description": self.schema.description "Description": self.schema.description
} }

View File

@ -83,13 +83,23 @@ class AttributeTest(common.HeatTestCase):
def test_as_output(self): def test_as_output(self):
"""Test that Attribute looks right when viewed as an Output.""" """Test that Attribute looks right when viewed as an Output."""
expected = { expected = {
"Value": '{"Fn::GetAtt": ["test_resource", "test1"]}', "Value": {"Fn::GetAtt": ["test_resource", "test1"]},
"Description": "The first test attribute" "Description": "The first test attribute"
} }
attr = attributes.Attribute( attr = attributes.Attribute(
"test1", attributes.Schema("The first test attribute")) "test1", attributes.Schema("The first test attribute"))
self.assertEqual(expected, attr.as_output("test_resource")) self.assertEqual(expected, attr.as_output("test_resource"))
def test_as_output_hot(self):
"""Test that Attribute looks right when viewed as an Output."""
expected = {
"value": {"get_attr": ["test_resource", "test1"]},
"description": "The first test attribute"
}
attr = attributes.Attribute(
"test1", attributes.Schema("The first test attribute"))
self.assertEqual(expected, attr.as_output("test_resource", "hot"))
class AttributesTest(common.HeatTestCase): class AttributesTest(common.HeatTestCase):
"""Test the Attributes class.""" """Test the Attributes class."""
@ -152,15 +162,15 @@ class AttributesTest(common.HeatTestCase):
"""Test that Output format works as expected.""" """Test that Output format works as expected."""
expected = { expected = {
"test1": { "test1": {
"Value": '{"Fn::GetAtt": ["test_resource", "test1"]}', "Value": {"Fn::GetAtt": ["test_resource", "test1"]},
"Description": "Test attrib 1" "Description": "Test attrib 1"
}, },
"test2": { "test2": {
"Value": '{"Fn::GetAtt": ["test_resource", "test2"]}', "Value": {"Fn::GetAtt": ["test_resource", "test2"]},
"Description": "Test attrib 2" "Description": "Test attrib 2"
}, },
"test3": { "test3": {
"Value": '{"Fn::GetAtt": ["test_resource", "test3"]}', "Value": {"Fn::GetAtt": ["test_resource", "test3"]},
"Description": "Test attrib 3" "Description": "Test attrib 3"
} }
} }
@ -178,6 +188,37 @@ class AttributesTest(common.HeatTestCase):
attributes.Attributes.as_outputs("test_resource", attributes.Attributes.as_outputs("test_resource",
MyTestResourceClass)) MyTestResourceClass))
def test_as_outputs_hot(self):
"""Test that Output format works as expected."""
expected = {
"test1": {
"value": {"get_attr": ["test_resource", "test1"]},
"description": "Test attrib 1"
},
"test2": {
"value": {"get_attr": ["test_resource", "test2"]},
"description": "Test attrib 2"
},
"test3": {
"value": {"get_attr": ["test_resource", "test3"]},
"description": "Test attrib 3"
}
}
MyTestResourceClass = mock.MagicMock()
MyTestResourceClass.attributes_schema = {
"test1": attributes.Schema("Test attrib 1"),
"test2": attributes.Schema("Test attrib 2"),
"test3": attributes.Schema("Test attrib 3"),
"test4": attributes.Schema(
"Test attrib 4",
support_status=support.SupportStatus(status=support.HIDDEN))
}
self.assertEqual(
expected,
attributes.Attributes.as_outputs("test_resource",
MyTestResourceClass,
"hot"))
def test_caching_local(self): def test_caching_local(self):
self.resolver.side_effect = ["value1", "value1 changed"] self.resolver.side_effect = ["value1", "value1 changed"]
attribs = attributes.Attributes('test resource', attribs = attributes.Attributes('test resource',

View File

@ -1433,15 +1433,15 @@ class ResourceTest(common.HeatTestCase):
'Outputs': { 'Outputs': {
'output1': { 'output1': {
'Description': 'output1_desc', 'Description': 'output1_desc',
'Value': '{"Fn::GetAtt": ["TestResource", "output1"]}' 'Value': {"Fn::GetAtt": ["TestResource", "output1"]}
}, },
'output2': { 'output2': {
'Description': 'output2_desc', 'Description': 'output2_desc',
'Value': '{"Fn::GetAtt": ["TestResource", "output2"]}' 'Value': {"Fn::GetAtt": ["TestResource", "output2"]}
}, },
'show': { 'show': {
'Description': u'Detailed information about resource.', 'Description': u'Detailed information about resource.',
'Value': '{"Fn::GetAtt": ["TestResource", "show"]}' 'Value': {"Fn::GetAtt": ["TestResource", "show"]}
} }
} }
} }
@ -1517,15 +1517,15 @@ class ResourceTest(common.HeatTestCase):
'outputs': { 'outputs': {
'output1': { 'output1': {
'description': 'output1_desc', 'description': 'output1_desc',
'value': '{"get_attr": ["TestResource", "output1"]}' 'value': {"get_attr": ["TestResource", "output1"]}
}, },
'output2': { 'output2': {
'description': 'output2_desc', 'description': 'output2_desc',
'value': '{"get_attr": ["TestResource", "output2"]}' 'value': {"get_attr": ["TestResource", "output2"]}
}, },
'show': { 'show': {
'description': u'Detailed information about resource.', 'description': u'Detailed information about resource.',
'value': '{"get_attr": ["TestResource", "show"]}' 'value': {"get_attr": ["TestResource", "show"]}
} }
} }
} }