Add API spec for benchmark results
This commit is contained in:
parent
bb7b1a2bd0
commit
eb06c1494e
|
@ -2619,15 +2619,115 @@ class API_Storage_Ceph_Benchmark(Resource):
|
||||||
---
|
---
|
||||||
tags:
|
tags:
|
||||||
- storage / ceph
|
- storage / ceph
|
||||||
|
parameters:
|
||||||
|
- in: query
|
||||||
|
name: job
|
||||||
|
type: string
|
||||||
|
required: false
|
||||||
|
description: A single job name to limit results to
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
|
id: storagebenchmark
|
||||||
properties:
|
properties:
|
||||||
tbd:
|
id:
|
||||||
|
type: string (containing integer)
|
||||||
|
description: The database ID of the test result
|
||||||
|
job:
|
||||||
|
type: string
|
||||||
|
description: The job name (an ISO date) of the test result
|
||||||
|
benchmark_result:
|
||||||
type: object
|
type: object
|
||||||
description: TBD
|
properties:
|
||||||
|
test_name:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
overall:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
iosize:
|
||||||
|
type: string (integer)
|
||||||
|
description: The total size of the benchmark data
|
||||||
|
bandwidth:
|
||||||
|
type: string (integer)
|
||||||
|
description: The average bandwidth (KiB/s)
|
||||||
|
iops:
|
||||||
|
type: string (integer)
|
||||||
|
description: The average IOPS
|
||||||
|
runtime:
|
||||||
|
type: string (integer)
|
||||||
|
description: The total test time in milliseconds
|
||||||
|
latency:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
min:
|
||||||
|
type: string (integer)
|
||||||
|
description: The minimum latency measurement
|
||||||
|
max:
|
||||||
|
type: string (integer)
|
||||||
|
description: The maximum latency measurement
|
||||||
|
mean:
|
||||||
|
type: string (float)
|
||||||
|
description: The mean latency measurement
|
||||||
|
stdev:
|
||||||
|
type: string (float)
|
||||||
|
description: The standard deviation of latency
|
||||||
|
bandwidth:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
min:
|
||||||
|
type: string (integer)
|
||||||
|
description: The minimum bandwidth (KiB/s) measurement
|
||||||
|
max:
|
||||||
|
type: string (integer)
|
||||||
|
description: The maximum bandwidth (KiB/s) measurement
|
||||||
|
mean:
|
||||||
|
type: string (float)
|
||||||
|
description: The mean bandwidth (KiB/s) measurement
|
||||||
|
stdev:
|
||||||
|
type: string (float)
|
||||||
|
description: The standard deviation of bandwidth
|
||||||
|
numsamples:
|
||||||
|
type: string (integer)
|
||||||
|
description: The number of samples taken during the test
|
||||||
|
iops:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
min:
|
||||||
|
type: string (integer)
|
||||||
|
description: The minimum IOPS measurement
|
||||||
|
max:
|
||||||
|
type: string (integer)
|
||||||
|
description: The maximum IOPS measurement
|
||||||
|
mean:
|
||||||
|
type: string (float)
|
||||||
|
description: The mean IOPS measurement
|
||||||
|
stdev:
|
||||||
|
type: string (float)
|
||||||
|
description: The standard deviation of IOPS
|
||||||
|
numsamples:
|
||||||
|
type: string (integer)
|
||||||
|
description: The number of samples taken during the test
|
||||||
|
cpu:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
user:
|
||||||
|
type: string (float percentage)
|
||||||
|
description: The percentage of test time spent in user space
|
||||||
|
system:
|
||||||
|
type: string (float percentage)
|
||||||
|
description: The percentage of test time spent in system (kernel) space
|
||||||
|
ctxsw:
|
||||||
|
type: string (integer)
|
||||||
|
description: The number of context switches during the test
|
||||||
|
majfault:
|
||||||
|
type: string (integer)
|
||||||
|
description: The number of major page faults during the test
|
||||||
|
minfault:
|
||||||
|
type: string (integer)
|
||||||
|
description: The number of minor page faults during the test
|
||||||
"""
|
"""
|
||||||
return api_benchmark.list_benchmarks(reqargs.get('job', None))
|
return api_benchmark.list_benchmarks(reqargs.get('job', None))
|
||||||
|
|
||||||
|
@ -2652,7 +2752,7 @@ class API_Storage_Ceph_Benchmark(Resource):
|
||||||
description: OK
|
description: OK
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
description: The job ID of the benchmark
|
description: The Celery job ID of the benchmark (unused elsewhere)
|
||||||
"""
|
"""
|
||||||
# Verify that the pool is valid
|
# Verify that the pool is valid
|
||||||
_list, code = api_helper.ceph_pool_list(reqargs.get('pool', None), is_fuzzy=False)
|
_list, code = api_helper.ceph_pool_list(reqargs.get('pool', None), is_fuzzy=False)
|
||||||
|
|
|
@ -62,6 +62,11 @@
|
||||||
"description": "The total number of snapshots in the storage cluster",
|
"description": "The total number of snapshots in the storage cluster",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"storage_health": {
|
||||||
|
"description": "The overall storage cluster health",
|
||||||
|
"example": "Optimal",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"upstream_ip": {
|
"upstream_ip": {
|
||||||
"description": "The cluster upstream IP address in CIDR format",
|
"description": "The cluster upstream IP address in CIDR format",
|
||||||
"example": "10.0.0.254/24",
|
"example": "10.0.0.254/24",
|
||||||
|
@ -799,6 +804,146 @@
|
||||||
},
|
},
|
||||||
"type": "object"
|
"type": "object"
|
||||||
},
|
},
|
||||||
|
"storagebenchmark": {
|
||||||
|
"properties": {
|
||||||
|
"benchmark_result": {
|
||||||
|
"properties": {
|
||||||
|
"test_name": {
|
||||||
|
"properties": {
|
||||||
|
"bandwidth": {
|
||||||
|
"properties": {
|
||||||
|
"max": {
|
||||||
|
"description": "The maximum bandwidth (KiB/s) measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"mean": {
|
||||||
|
"description": "The mean bandwidth (KiB/s) measurement",
|
||||||
|
"type": "string (float)"
|
||||||
|
},
|
||||||
|
"min": {
|
||||||
|
"description": "The minimum bandwidth (KiB/s) measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"numsamples": {
|
||||||
|
"description": "The number of samples taken during the test",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"stdev": {
|
||||||
|
"description": "The standard deviation of bandwidth",
|
||||||
|
"type": "string (float)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"cpu": {
|
||||||
|
"properties": {
|
||||||
|
"ctxsw": {
|
||||||
|
"description": "The number of context switches during the test",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"majfault": {
|
||||||
|
"description": "The number of major page faults during the test",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"minfault": {
|
||||||
|
"description": "The number of minor page faults during the test",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"system": {
|
||||||
|
"description": "The percentage of test time spent in system (kernel) space",
|
||||||
|
"type": "string (float percentage)"
|
||||||
|
},
|
||||||
|
"user": {
|
||||||
|
"description": "The percentage of test time spent in user space",
|
||||||
|
"type": "string (float percentage)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"iops": {
|
||||||
|
"properties": {
|
||||||
|
"max": {
|
||||||
|
"description": "The maximum IOPS measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"mean": {
|
||||||
|
"description": "The mean IOPS measurement",
|
||||||
|
"type": "string (float)"
|
||||||
|
},
|
||||||
|
"min": {
|
||||||
|
"description": "The minimum IOPS measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"numsamples": {
|
||||||
|
"description": "The number of samples taken during the test",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"stdev": {
|
||||||
|
"description": "The standard deviation of IOPS",
|
||||||
|
"type": "string (float)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"latency": {
|
||||||
|
"properties": {
|
||||||
|
"max": {
|
||||||
|
"description": "The maximum latency measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"mean": {
|
||||||
|
"description": "The mean latency measurement",
|
||||||
|
"type": "string (float)"
|
||||||
|
},
|
||||||
|
"min": {
|
||||||
|
"description": "The minimum latency measurement",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"stdev": {
|
||||||
|
"description": "The standard deviation of latency",
|
||||||
|
"type": "string (float)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"overall": {
|
||||||
|
"properties": {
|
||||||
|
"bandwidth": {
|
||||||
|
"description": "The average bandwidth (KiB/s)",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"iops": {
|
||||||
|
"description": "The average IOPS",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"iosize": {
|
||||||
|
"description": "The total size of the benchmark data",
|
||||||
|
"type": "string (integer)"
|
||||||
|
},
|
||||||
|
"runtime": {
|
||||||
|
"description": "The total test time in milliseconds",
|
||||||
|
"type": "string (integer)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "The database ID of the test result",
|
||||||
|
"type": "string (containing integer)"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"description": "The job name (an ISO date) of the test result",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
"system-template": {
|
"system-template": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": {
|
"id": {
|
||||||
|
@ -2335,6 +2480,12 @@
|
||||||
"name": "start_vm",
|
"name": "start_vm",
|
||||||
"required": false,
|
"required": false,
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "Script install() function keywork argument in \"arg=data\" format; may be specified multiple times to add multiple arguments",
|
||||||
|
"in": "query",
|
||||||
|
"name": "arg",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
|
@ -4214,6 +4365,57 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/storage/ceph/benchmark": {
|
||||||
|
"get": {
|
||||||
|
"description": "",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "A single job name to limit results to",
|
||||||
|
"in": "query",
|
||||||
|
"name": "job",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/storagebenchmark"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "List results from benchmark jobs",
|
||||||
|
"tags": [
|
||||||
|
"storage / ceph"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The PVC storage pool to benchmark",
|
||||||
|
"in": "query",
|
||||||
|
"name": "pool",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"description": "The Celery job ID of the benchmark (unused elsewhere)",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Execute a storage benchmark against a storage pool",
|
||||||
|
"tags": [
|
||||||
|
"storage / ceph"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/v1/storage/ceph/option": {
|
"/api/v1/storage/ceph/option": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "",
|
"description": "",
|
||||||
|
|
Loading…
Reference in New Issue