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 import math
from json import dumps
from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor from requests_toolbelt.multipart.encoder import MultipartEncoder, MultipartEncoderMonitor
import pvc.cli_lib.ansiprint as ansiprint 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) 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 # 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. # It is extensable in the future should newer formats be required.
benchmark_matrix = { benchmark_matrix = {
@ -1609,7 +1610,13 @@ def format_info_benchmark(config, benchmark_information):
} }
benchmark_version = benchmark_information['test_format'] benchmark_version = benchmark_information['test_format']
return benchmark_matrix.get(benchmark_version, lambda: 'Invalid format function')(config, benchmark_information)
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)
def format_info_benchmark_legacy(config, benchmark_information): def format_info_benchmark_legacy(config, benchmark_information):

View File

@ -2541,15 +2541,20 @@ def ceph_benchmark_run(pool):
@click.argument( @click.argument(
'job', required=True '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 @cluster_req
def ceph_benchmark_info(job): def ceph_benchmark_info(job, oformat):
""" """
Show full details of storage benchmark JOB. Show full details of storage benchmark JOB.
""" """
retcode, retdata = pvc_ceph.ceph_benchmark_list(config, job) retcode, retdata = pvc_ceph.ceph_benchmark_list(config, job)
if retcode: if retcode:
retdata = pvc_ceph.format_info_benchmark(config, retdata) retdata = pvc_ceph.format_info_benchmark(config, oformat, retdata)
cleanup(retcode, retdata) cleanup(retcode, retdata)