Fix "heat output-show -F json" output format

So that it matches the equivalent OSC command's output.  Also change
the default output-show format to 'raw' to maintain current behavior.

Closes-Bug: #1560087
Change-Id: Ia03b1633565881b4b4a7f95e7b0c5df472487f62
This commit is contained in:
Jason Dunsmore 2016-09-28 17:04:18 -05:00
parent 9a255f593c
commit 272c32f7ec
2 changed files with 19 additions and 9 deletions

View File

@ -2446,8 +2446,18 @@ class ShellTestUserPass(ShellBase):
self._output_fake_response('output2')
list_text = self.shell('output-show -F json teststack/1 output2')
self.assertEqual('[\n "output", \n "value", \n "2"\n]\n',
list_text)
required = [
'{',
'"output_key": "output2"',
'"description": "test output 2"',
'"output_value": \[',
'"output"',
'"value"',
'"2"',
'}'
]
for r in required:
self.assertRegex(list_text, r)
def test_output_show_output2_json_with_detail(self):
self.register_keystone_auth_fixture()
@ -2471,7 +2481,7 @@ class ShellTestUserPass(ShellBase):
self._output_fake_response('output_uni')
list_text = self.shell('output-show teststack/1 output_uni')
self.assertEqual(u'"test\u2665"\n', list_text)
self.assertEqual(u'test\u2665\n', list_text)
def test_output_show_error(self):
self.register_keystone_auth_fixture()

View File

@ -728,7 +728,7 @@ def do_output_list(hc, args):
help=_('Name of an output to display.'))
@utils.arg('-F', '--format', metavar='<FORMAT>',
help=_('The output value format, one of: json, raw.'),
default='json')
default='raw')
@utils.arg('-a', '--all', default=False, action='store_true',
help=_('Display all stack outputs.'))
@utils.arg('--with-detail', default=False, action="store_true",
@ -771,11 +771,11 @@ def do_output_show(hc, args):
}
utils.print_dict(output['output'], formatters=formatters)
else:
if (args.format == 'json'
or isinstance(output['output']['output_value'], dict)
or isinstance(output['output']['output_value'], list)):
print(
utils.json_formatter(output['output']['output_value']))
if args.format == 'json':
print(utils.json_formatter(output['output']))
elif (isinstance(output['output']['output_value'], dict)
or isinstance(output['output']['output_value'], list)):
print(utils.json_formatter(output['output']['output_value']))
else:
print(output['output']['output_value'])