From 272c32f7ecc4b0dc16eaf893ccc534e01b45a2a1 Mon Sep 17 00:00:00 2001 From: Jason Dunsmore Date: Wed, 28 Sep 2016 17:04:18 -0500 Subject: [PATCH] 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 --- heatclient/tests/unit/test_shell.py | 16 +++++++++++++--- heatclient/v1/shell.py | 12 ++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/heatclient/tests/unit/test_shell.py b/heatclient/tests/unit/test_shell.py index e1af8798..383ee2c0 100644 --- a/heatclient/tests/unit/test_shell.py +++ b/heatclient/tests/unit/test_shell.py @@ -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() diff --git a/heatclient/v1/shell.py b/heatclient/v1/shell.py index 99a33f98..35a9102c 100644 --- a/heatclient/v1/shell.py +++ b/heatclient/v1/shell.py @@ -728,7 +728,7 @@ def do_output_list(hc, args): help=_('Name of an output to display.')) @utils.arg('-F', '--format', metavar='', 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'])