On 5/16/24 17:41, [email protected] wrote:
> From: Jakob Meng <[email protected]>
>
> With the '--pretty' option, appctl.py will now print JSON output in a
> more readable fashion, i.e. with additional line breaks, spaces and
> sorted dictionary keys. The pretty-printed output from appctl.py is not
> strictly the same as with ovs-appctl because of both use different
> pretty-printing implementations.
>
> Signed-off-by: Jakob Meng <[email protected]>
> ---
> tests/appctl.py | 13 ++++++++++---
> tests/unixctl-py.at | 5 +++++
> 2 files changed, 15 insertions(+), 3 deletions(-)
Not sure if this patch is necessary, but it's OK to have it just for
the parity with ovs-appctl, I suppose.
Bets regards, Ilya Maximets.
>
> diff --git a/tests/appctl.py b/tests/appctl.py
> index cf3ea3642..b08bf9033 100644
> --- a/tests/appctl.py
> +++ b/tests/appctl.py
> @@ -37,7 +37,7 @@ def connect_to_target(target):
> return client
>
>
> -def reply_to_string(reply, fmt=ovs.util.OutputFormat.TEXT):
> +def reply_to_string(reply, fmt=ovs.util.OutputFormat.TEXT, fmt_flags={}):
> if fmt == ovs.util.OutputFormat.TEXT:
> body = str(reply)
>
> @@ -46,7 +46,7 @@ def reply_to_string(reply, fmt=ovs.util.OutputFormat.TEXT):
>
> return body
> else:
> - return ovs.json.to_string(reply)
> + return ovs.json.to_string(reply, **fmt_flags)
>
>
> def main():
> @@ -65,13 +65,20 @@ def main():
> help="Output format.", default="text",
> choices=[fmt.name.lower()
> for fmt in ovs.util.OutputFormat])
> + parser.add_argument("--pretty", action="store_true",
> + help="Format the output in a more readable fashion."
> + " Requires: --format json.")
> args = parser.parse_args()
>
> + if args.format != ovs.util.OutputFormat.JSON.name.lower() and
> args.pretty:
> + ovs.util.ovs_fatal(0, "--pretty is supported with --format json
> only")
> +
> signal_alarm(int(args.timeout) if args.timeout else None)
>
> ovs.vlog.Vlog.init()
> target = args.target
> format = ovs.util.OutputFormat[args.format.upper()]
> + format_flags = dict(pretty=True) if args.pretty else {}
> client = connect_to_target(target)
>
> if format != ovs.util.OutputFormat.TEXT:
> @@ -96,7 +103,7 @@ def main():
> sys.exit(2)
> else:
> assert result is not None
> - sys.stdout.write(reply_to_string(result, format))
> + sys.stdout.write(reply_to_string(result, format, format_flags))
>
>
> if __name__ == '__main__':
> diff --git a/tests/unixctl-py.at b/tests/unixctl-py.at
> index 92f557b67..dffe40d2b 100644
> --- a/tests/unixctl-py.at
> +++ b/tests/unixctl-py.at
> @@ -115,6 +115,11 @@ AT_CHECK([APPCTL -t test-unixctl.py version], [0],
> [expout])
> AT_CHECK([PYAPPCTL_PY -t test-unixctl.py version], [0], [expout])
> AT_CHECK_UNQUOTED([PYAPPCTL_PY -t test-unixctl.py --format json version],
> [0], [dnl
> {"reply":"$(cat expout)","reply-format":"plain"}])
> +AT_CHECK_UNQUOTED([PYAPPCTL_PY -t test-unixctl.py --format json --pretty
> version], [0], [dnl
> +{
> + "reply":"$(cat expout)",
> + "reply-format":"plain"
> +}])
>
> AT_CHECK([APPCTL -t test-unixctl.py echo robot ninja], [0], [stdout])
> AT_CHECK([cat stdout | sed -e "s/u'/'/g"], [0], [dnl
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev