Update API documentation and link
This commit is contained in:
parent
1c3eec48ea
commit
f940b2ff44
|
@ -4,7 +4,7 @@ The PVC API is a standalone client application for PVC. It interfaces directly w
|
||||||
|
|
||||||
The API is built using Flask and is packaged in the Debian package `pvc-client-api`. The API depends on the common client functions of the `pvc-client-common` package as does the CLI client.
|
The API is built using Flask and is packaged in the Debian package `pvc-client-api`. The API depends on the common client functions of the `pvc-client-common` package as does the CLI client.
|
||||||
|
|
||||||
Details of the API interface can be found in [the manual](/manuals/api).
|
The full API endpoint and schema documentation [can be found here](/en/latest/manuals/api-reference.html).
|
||||||
|
|
||||||
# PVC HTTP API manual
|
# PVC HTTP API manual
|
||||||
|
|
||||||
|
@ -349,7 +349,3 @@ The Ceph monitor port. Should always be `6789`.
|
||||||
* *required*
|
* *required*
|
||||||
|
|
||||||
The Libvirt storage secret UUID for the Ceph cluster.
|
The Libvirt storage secret UUID for the Ceph cluster.
|
||||||
|
|
||||||
## API Endpoint Documentation
|
|
||||||
|
|
||||||
The full API endpoint and schema documentation [can be found here](/manuals/api-reference.html).
|
|
||||||
|
|
|
@ -1185,131 +1185,7 @@
|
||||||
"storagebenchmark": {
|
"storagebenchmark": {
|
||||||
"properties": {
|
"properties": {
|
||||||
"benchmark_result": {
|
"benchmark_result": {
|
||||||
"description": "A format 0 test result",
|
"description": "A benchmark test result; format not documented due to complexity",
|
||||||
"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"
|
"type": "object"
|
||||||
},
|
},
|
||||||
"id": {
|
"id": {
|
||||||
|
@ -3275,18 +3151,13 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"properties": {
|
"description": "The Celery job ID of the task",
|
||||||
"task_id": {
|
|
||||||
"description": "Task ID for the provisioner Celery worker",
|
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad request",
|
"description": "Bad request",
|
||||||
"schema": {
|
"schema": {
|
||||||
|
@ -5424,15 +5295,28 @@
|
||||||
"name": "pool",
|
"name": "pool",
|
||||||
"required": true,
|
"required": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "An optional override name for the job",
|
||||||
|
"in": "query",
|
||||||
|
"name": "name",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"description": "The Celery job ID of the benchmark (unused elsewhere)",
|
"description": "The Celery job ID of the task",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Bad request",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"summary": "Execute a storage benchmark against a storage pool",
|
"summary": "Execute a storage benchmark against a storage pool",
|
||||||
|
@ -5559,10 +5443,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -5586,7 +5471,7 @@
|
||||||
"description": "Force removal even if some step(s) fail",
|
"description": "Force removal even if some step(s) fail",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "force",
|
"name": "force",
|
||||||
"required": "flase",
|
"required": false,
|
||||||
"type": "boolean"
|
"type": "boolean"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -5598,10 +5483,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -5677,10 +5563,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -5707,10 +5594,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -5793,10 +5681,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -6426,7 +6315,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "flase",
|
"default": false,
|
||||||
"description": "Force action if volume creation would violate 80% full soft cap on the pool",
|
"description": "Force action if volume creation would violate 80% full soft cap on the pool",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "force",
|
"name": "force",
|
||||||
|
@ -6508,7 +6397,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "flase",
|
"default": false,
|
||||||
"description": "Force action if volume creation would violate 80% full soft cap on the pool",
|
"description": "Force action if volume creation would violate 80% full soft cap on the pool",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "force",
|
"name": "force",
|
||||||
|
@ -6547,7 +6436,7 @@
|
||||||
{
|
{
|
||||||
"description": "The new volume size in bytes (or with a metric suffix, i.e. k/M/G/T); must be greater than the previous size (shrinking not supported)",
|
"description": "The new volume size in bytes (or with a metric suffix, i.e. k/M/G/T); must be greater than the previous size (shrinking not supported)",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "size",
|
"name": "new_size",
|
||||||
"required": false,
|
"required": false,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
|
@ -6559,7 +6448,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "flase",
|
"default": false,
|
||||||
"description": "Force action if new volume size would violate 80% full soft cap on the pool",
|
"description": "Force action if new volume size would violate 80% full soft cap on the pool",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "force",
|
"name": "force",
|
||||||
|
@ -6605,7 +6494,7 @@
|
||||||
"type": "string"
|
"type": "string"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"default": "flase",
|
"default": false,
|
||||||
"description": "Force action if clone volume size would violate 80% full soft cap on the pool",
|
"description": "Force action if clone volume size would violate 80% full soft cap on the pool",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "force",
|
"name": "force",
|
||||||
|
@ -6981,18 +6870,13 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"properties": {
|
"description": "The Celery job ID of the task",
|
||||||
"task_id": {
|
|
||||||
"description": "Task ID for the provisioner Celery worker",
|
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"type": "object"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"400": {
|
"400": {
|
||||||
"description": "Bad request",
|
"description": "Bad request",
|
||||||
"schema": {
|
"schema": {
|
||||||
|
@ -7350,10 +7234,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7380,10 +7265,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7404,7 +7290,7 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"responses": {
|
"responses": {
|
||||||
"202": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"description": "The Celery job ID of the task",
|
"description": "The Celery job ID of the task",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -7706,10 +7592,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7742,10 +7629,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7790,14 +7678,15 @@
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "incremental_parent",
|
"name": "incremental_parent",
|
||||||
"required": false,
|
"required": false,
|
||||||
"type": "boolean"
|
"type": "string"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7847,10 +7736,11 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"responses": {
|
"responses": {
|
||||||
"200": {
|
"202": {
|
||||||
"description": "OK",
|
"description": "Accepted",
|
||||||
"schema": {
|
"schema": {
|
||||||
"$ref": "#/definitions/Message"
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"400": {
|
"400": {
|
||||||
|
@ -7872,14 +7762,28 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"/api/v1/vm/{vm}/snapshot/rollback": {
|
"/api/v1/vm/{vm}/snapshot/receive/block": {
|
||||||
"post": {
|
"patch": {
|
||||||
"description": "",
|
"description": "<br/>NOTICE: This is an API-internal endpoint used by /vm/<vm>/snapshot/send; it should never be called by a client.",
|
||||||
"parameters": [
|
"parameters": [
|
||||||
{
|
{
|
||||||
"description": "The name of the snapshot to roll back to",
|
"description": "The name of the destination Ceph RBD data pool",
|
||||||
"in": "query",
|
"in": "query",
|
||||||
"name": "snapshot_name",
|
"name": "pool",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "volume",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot",
|
||||||
"required": true,
|
"required": true,
|
||||||
"type": "string"
|
"type": "string"
|
||||||
}
|
}
|
||||||
|
@ -7904,12 +7808,307 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"summary": "Create the block snapshot at snapshot of volume",
|
||||||
|
"tags": [
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"post": {
|
||||||
|
"description": "<br/>NOTICE: This is an API-internal endpoint used by /vm/<vm>/snapshot/send; it should never be called by a client.",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD data pool",
|
||||||
|
"in": "query",
|
||||||
|
"name": "pool",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "volume",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The size in bytes of the Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "size",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Execution error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"description": "Not found",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Receive a full snapshot of a single RBD volume from another PVC cluster",
|
||||||
|
"tags": [
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"put": {
|
||||||
|
"description": "<br/>NOTICE: This is an API-internal endpoint used by /vm/<vm>/snapshot/send; it should never be called by a client.",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD data pool",
|
||||||
|
"in": "query",
|
||||||
|
"name": "pool",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "volume",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot parent",
|
||||||
|
"in": "query",
|
||||||
|
"name": "source_snapshot",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Execution error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"description": "Not found",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Receive a single diff element from a snapshot of a single RBD volume from another PVC cluster",
|
||||||
|
"tags": [
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/vm/{vm}/snapshot/receive/config": {
|
||||||
|
"post": {
|
||||||
|
"description": "<br/>NOTICE: This is an API-internal endpoint used by /vm/<vm>/snapshot/send; it should never be called by a client.",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD data pool",
|
||||||
|
"in": "query",
|
||||||
|
"name": "pool",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "volume",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The size in bytes of the Ceph RBD volume",
|
||||||
|
"in": "query",
|
||||||
|
"name": "size",
|
||||||
|
"required": true,
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The name of the destination Ceph RBD volume snapshot parent for incremental transfers",
|
||||||
|
"in": "query",
|
||||||
|
"name": "source_snapshot",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Execution error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"description": "Not found",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Receive a snapshot of a VM configuration from another PVC cluster",
|
||||||
|
"tags": [
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/vm/{vm}/snapshot/rollback": {
|
||||||
|
"post": {
|
||||||
|
"description": "",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The name of the snapshot to roll back to",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot_name",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"202": {
|
||||||
|
"description": "Accepted",
|
||||||
|
"schema": {
|
||||||
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Execution error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"description": "Not found",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"summary": "Roll back to a snapshot of a VM's disks and configuration",
|
"summary": "Roll back to a snapshot of a VM's disks and configuration",
|
||||||
"tags": [
|
"tags": [
|
||||||
"vm"
|
"vm"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/vm/{vm}/snapshot/send": {
|
||||||
|
"post": {
|
||||||
|
"description": "",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "The name of the snapshot to export (must exist)",
|
||||||
|
"in": "query",
|
||||||
|
"name": "snapshot_name",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The base API URI of the destination PVC cluster (with prefix if applicable)",
|
||||||
|
"in": "query",
|
||||||
|
"name": "destination_api_uri",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "The API authentication key of the destination PVC cluster",
|
||||||
|
"in": "query",
|
||||||
|
"name": "destination_api_key",
|
||||||
|
"required": true,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"description": "Whether or not to validate SSL certificates for an SSL-enabled destination API",
|
||||||
|
"in": "query",
|
||||||
|
"name": "destination_api_verify_ssl",
|
||||||
|
"required": false,
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"description": "A snapshot name to generate an incremental diff from; incremental send only if unset",
|
||||||
|
"in": "query",
|
||||||
|
"name": "incremental_parent",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "source storage pool name",
|
||||||
|
"description": "The remote cluster storage pool to create RBD volumes in, if different from the source storage pool",
|
||||||
|
"in": "query",
|
||||||
|
"name": "destination_storage_pool",
|
||||||
|
"required": false,
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"202": {
|
||||||
|
"description": "Accepted",
|
||||||
|
"schema": {
|
||||||
|
"description": "The Celery job ID of the task",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"400": {
|
||||||
|
"description": "Execution error",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"description": "Not found",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/Message"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"summary": "Send a snapshot of a VM's disks and configuration to another PVC cluster",
|
||||||
|
"tags": [
|
||||||
|
"vm"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/v1/vm/{vm}/state": {
|
"/api/v1/vm/{vm}/state": {
|
||||||
"get": {
|
"get": {
|
||||||
"description": "",
|
"description": "",
|
||||||
|
|
Loading…
Reference in New Issue