Add format option to benchmark info

Allows specifying of raw json or json-pretty formats in addition to the
"pretty" formatted option.
This commit is contained in:
Joshua Boniface 2021-10-02 01:13:50 -04:00
parent 37b98fd54f
commit 58f174b87b
2 changed files with 16 additions and 4 deletions

View File

@ -21,6 +21,7 @@
import math
from json import dumps
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor
import pvc.cli_lib.ansiprint as ansiprint
@ -1601,7 +1602,7 @@ def format_list_benchmark_legacy(config, benchmark_information):
return '\n'.join(benchmark_list_output)
def format_info_benchmark(config, benchmark_information):
def format_info_benchmark(config, oformat, benchmark_information):
# This matrix is a list of the possible format functions for a benchmark result
# It is extensable in the future should newer formats be required.
benchmark_matrix = {
@ -1609,6 +1610,12 @@ def format_info_benchmark(config, benchmark_information):
}
benchmark_version = benchmark_information['test_format']
if oformat == 'json-pretty':
return dumps(benchmark_information, indent=4)
elif oformat == 'json':
return dumps(benchmark_information)
else:
return benchmark_matrix.get(benchmark_version, lambda: 'Invalid format function')(config, benchmark_information)

View File

@ -2541,15 +2541,20 @@ def ceph_benchmark_run(pool):
@click.argument(
'job', required=True
)
@click.option(
'-f', '--format', 'oformat', default='pretty', show_default=True,
type=click.Choice(['pretty', 'json', 'json-pretty']),
help='Output format of benchmark information.'
)
@cluster_req
def ceph_benchmark_info(job):
def ceph_benchmark_info(job, oformat):
"""
Show full details of storage benchmark JOB.
"""
retcode, retdata = pvc_ceph.ceph_benchmark_list(config, job)
if retcode:
retdata = pvc_ceph.format_info_benchmark(config, retdata)
retdata = pvc_ceph.format_info_benchmark(config, oformat, retdata)
cleanup(retcode, retdata)