From e72608459424869a36c109637a159a49866557a9 Mon Sep 17 00:00:00 2001 From: Steve Baker Date: Wed, 27 Mar 2013 13:35:54 +1300 Subject: [PATCH] Don't assume a Parameter value is a str Currently show_stack and list_stacks will fail for templates which have a Number in the Parameters. This should be considered for backport to milestone_proposed. Change-Id: I1b20babf0998f7714f8bc7bf144e03ff1d7c0c91 Fixes: bug #1160653 (cherry picked from commit b76eb46fdeb3431b5220dd909334ba64b7a2515b) --- heat/engine/parameters.py | 2 +- heat/tests/test_parameters.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/heat/engine/parameters.py b/heat/engine/parameters.py index bc1bf281d4..3776e1af13 100644 --- a/heat/engine/parameters.py +++ b/heat/engine/parameters.py @@ -120,7 +120,7 @@ class Parameter(object): if self.no_echo(): return '******' else: - return value + return str(value) class NumberParam(Parameter): diff --git a/heat/tests/test_parameters.py b/heat/tests/test_parameters.py index dc530e7979..b19831ba88 100644 --- a/heat/tests/test_parameters.py +++ b/heat/tests/test_parameters.py @@ -329,3 +329,17 @@ class ParametersTest(unittest.TestCase): 'AWS::StackName': True} self.assertEqual(params.map(lambda p: p.has_default()), expected) + + def test_map_str(self): + template = {'Parameters': {'Foo': {'Type': 'String'}, + 'Bar': {'Type': 'Number'}}} + params = parameters.Parameters('test_params', template, { + 'Foo': 'foo', 'Bar': 42}) + + expected = {'Foo': 'foo', + 'Bar': '42', + 'AWS::Region': 'ap-southeast-1', + 'AWS::StackId': 'None', + 'AWS::StackName': 'test_params'} + + self.assertEqual(params.map(str), expected)