Pretty print parameters in stack-show
Previously, we were not using the specialized parameter class' __str__ method to print the parameters in the stack-show output with python 2.x. Closes-Bug: #1613415 Change-Id: I44295ae567cef91eb484201099c7646cdb16fe08
This commit is contained in:
parent
1c8c7a7914
commit
4940fc1a2a
|
@ -290,13 +290,17 @@ class Parameter(object):
|
|||
def set_default(self, value):
|
||||
self.user_default = value
|
||||
|
||||
@classmethod
|
||||
def _value_as_text(cls, value):
|
||||
return six.text_type(value)
|
||||
|
||||
def __str__(self):
|
||||
"""Return a string representation of the parameter."""
|
||||
value = self.value()
|
||||
if self.hidden():
|
||||
return six.text_type('******')
|
||||
else:
|
||||
return six.text_type(value)
|
||||
return self._value_as_text(value)
|
||||
|
||||
|
||||
class NumberParam(Parameter):
|
||||
|
@ -410,10 +414,9 @@ class CommaDelimitedListParam(ParsedParameter, collections.Sequence):
|
|||
"""Return an item from the list."""
|
||||
return self.parsed[index]
|
||||
|
||||
def __str__(self):
|
||||
if self.hidden():
|
||||
return super(CommaDelimitedListParam, self).__str__()
|
||||
return ",".join(self.value())
|
||||
@classmethod
|
||||
def _value_as_text(cls, value):
|
||||
return ",".join(value)
|
||||
|
||||
def _validate(self, val, context, template=None):
|
||||
try:
|
||||
|
@ -460,10 +463,9 @@ class JsonParam(ParsedParameter):
|
|||
def __len__(self):
|
||||
return len(self.parsed)
|
||||
|
||||
def __str__(self):
|
||||
if self.hidden():
|
||||
return super(JsonParam, self).__str__()
|
||||
return encodeutils.safe_decode(jsonutils.dumps(self.value()))
|
||||
@classmethod
|
||||
def _value_as_text(cls, value):
|
||||
return encodeutils.safe_decode(jsonutils.dumps(value))
|
||||
|
||||
def _validate(self, val, context, template=None):
|
||||
try:
|
||||
|
|
|
@ -505,6 +505,40 @@ class FormatTest(common.HeatTestCase):
|
|||
self.assertEqual(expected, sorted(info, key=lambda k: k['output_key'],
|
||||
reverse=True))
|
||||
|
||||
def test_format_stack_params_csv(self):
|
||||
tmpl = template.Template({
|
||||
'heat_template_version': '2013-05-23',
|
||||
'parameters': {
|
||||
'foo': {
|
||||
'type': 'comma_delimited_list',
|
||||
'default': ['bar', 'baz']
|
||||
},
|
||||
}
|
||||
})
|
||||
stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||
tmpl, stack_id=str(uuid.uuid4()))
|
||||
info = api.format_stack(stack)
|
||||
|
||||
# Should be 'bar,baz' NOT "[u'bar', u'baz']"
|
||||
self.assertEqual('bar,baz', info['parameters']['foo'])
|
||||
|
||||
def test_format_stack_params_json(self):
|
||||
tmpl = template.Template({
|
||||
'heat_template_version': '2013-05-23',
|
||||
'parameters': {
|
||||
'foo': {
|
||||
'type': 'json',
|
||||
'default': {'bar': 'baz'}
|
||||
},
|
||||
}
|
||||
})
|
||||
stack = parser.Stack(utils.dummy_context(), 'test_stack',
|
||||
tmpl, stack_id=str(uuid.uuid4()))
|
||||
info = api.format_stack(stack)
|
||||
|
||||
# Should be '{"bar": "baz"}' NOT "{u'bar': u'baz'}"
|
||||
self.assertEqual('{"bar": "baz"}', info['parameters']['foo'])
|
||||
|
||||
|
||||
class FormatValidateParameterTest(common.HeatTestCase):
|
||||
|
||||
|
|
Loading…
Reference in New Issue