Add API spec for benchmark results
This commit is contained in:
		| @@ -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": "", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user