Merge pull request #304 from puppetlabs/POOLER-37

(POOLER-37) Document HTTP responses
This commit is contained in:
mchllweeks 2018-10-25 08:30:38 -07:00 committed by GitHub
commit 81b5f620bd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,6 +19,11 @@ Token-based authentication can be used when requesting or modifying VMs. The `/
Get a list of issued tokens. Get a list of issued tokens.
Return codes:
* 200 OK
* 401 when not authorized
* 404 when config:auth not found or other error
``` ```
$ curl -u jdoe --url vmpooler.example.com/api/v1/token $ curl -u jdoe --url vmpooler.example.com/api/v1/token
Enter host password for user 'jdoe': Enter host password for user 'jdoe':
@ -36,6 +41,11 @@ Enter host password for user 'jdoe':
Generate a new authentication token. Generate a new authentication token.
Return codes:
* 200 OK
* 401 when not authorized
* 404 when config:auth not found
``` ```
$ curl -X POST -u jdoe --url vmpooler.example.com/api/v1/token $ curl -X POST -u jdoe --url vmpooler.example.com/api/v1/token
Enter host password for user 'jdoe': Enter host password for user 'jdoe':
@ -51,6 +61,10 @@ Enter host password for user 'jdoe':
Get information about an existing token (including associated VMs). Get information about an existing token (including associated VMs).
Return codes:
* 200 OK
* 404 when config:auth or token not found
``` ```
$ curl --url vmpooler.example.com/api/v1/token/utpg2i2xswor6h8ttjhu3d47z53yy47y $ curl --url vmpooler.example.com/api/v1/token/utpg2i2xswor6h8ttjhu3d47z53yy47y
``` ```
@ -75,6 +89,11 @@ $ curl --url vmpooler.example.com/api/v1/token/utpg2i2xswor6h8ttjhu3d47z53yy47y
Delete an authentication token. Delete an authentication token.
Return codes:
* 200 OK
* 401 when not authorized
* 404 when config:auth not found
``` ```
$ curl -X DELETE -u jdoe --url vmpooler.example.com/api/v1/token/utpg2i2xswor6h8ttjhu3d47z53yy47y $ curl -X DELETE -u jdoe --url vmpooler.example.com/api/v1/token/utpg2i2xswor6h8ttjhu3d47z53yy47y
Enter host password for user 'jdoe': Enter host password for user 'jdoe':
@ -91,6 +110,9 @@ Enter host password for user 'jdoe':
Retrieve a list of available VM pools. Retrieve a list of available VM pools.
Return codes:
* 200 OK
``` ```
$ curl --url vmpooler.example.com/api/v1/vm $ curl --url vmpooler.example.com/api/v1/vm
``` ```
@ -103,10 +125,14 @@ $ curl --url vmpooler.example.com/api/v1/vm
##### POST /vm ##### POST /vm
Useful for batch operations; post JSON (see format below), get back VMs. Useful for batch operations; post JSON (see format below), get back allocated VMs.
If an authentication store is configured, an authentication token supplied via the `X-AUTH-TOKEN` HTTP header will modify a VM's default lifetime. See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), and the 'token operations' section above for more information. If an authentication store is configured, an authentication token supplied via the `X-AUTH-TOKEN` HTTP header will modify a VM's default lifetime. See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), and the 'token operations' section above for more information.
Return codes:
* 200 OK
* 404 when sending invalid JSON in the request body or requesting an invalid VM pool name
``` ```
$ curl -d '{"debian-7-i386":"2","debian-7-x86_64":"1"}' --url vmpooler.example.com/api/v1/vm $ curl -d '{"debian-7-i386":"2","debian-7-x86_64":"1"}' --url vmpooler.example.com/api/v1/vm
``` ```
@ -132,6 +158,10 @@ $ curl -d '{"debian-7-i386":"2","debian-7-x86_64":"1"}' --url vmpooler.example.c
Check-out a VM or VMs. Check-out a VM or VMs.
Return codes:
* 200 OK
* 404 when sending invalid JSON in the request body or requesting an invalid VM pool name
``` ```
$ curl -d --url vmpooler.example.com/api/v1/vm/debian-7-i386 $ curl -d --url vmpooler.example.com/api/v1/vm/debian-7-i386
``` ```
@ -171,7 +201,11 @@ $ curl -d --url vmpooler.example.com/api/v1/vm/debian-7-i386+debian-7-i386+debia
##### GET /vm/<hostname> ##### GET /vm/<hostname>
Query a checked-out VM. Query metadata information for a checked-out VM.
Return codes:
* 200 OK
* 404 when requesting an invalid VM hostname
``` ```
$ curl --url vmpooler.example.com/api/v1/vm/pxpmtoonx7fiqg6 $ curl --url vmpooler.example.com/api/v1/vm/pxpmtoonx7fiqg6
@ -182,12 +216,14 @@ $ curl --url vmpooler.example.com/api/v1/vm/pxpmtoonx7fiqg6
"pxpmtoonx7fiqg6": { "pxpmtoonx7fiqg6": {
"template": "centos-6-x86_64", "template": "centos-6-x86_64",
"lifetime": 12, "lifetime": 12,
"running": 3.1, "running": 3,
"remaining": 9,
"state": "running", "state": "running",
"tags": { "tags": {
"department": "engineering", "department": "engineering",
"user": "jdoe" "user": "jdoe"
}, },
"ip": "192.168.0.1",
"domain": "example.com" "domain": "example.com"
} }
} }
@ -208,6 +244,12 @@ Any modifications can be verified using the [GET /vm/<hostname>](#get-vmho
If an authentication store is configured, an authentication token is required (via the `X-AUTH-TOKEN` HTTP header) to access this route. See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), and the 'token operations' section above for more information. If an authentication store is configured, an authentication token is required (via the `X-AUTH-TOKEN` HTTP header) to access this route. See the provided YAML configuration example, [vmpooler.yaml.example](vmpooler.yaml.example), and the 'token operations' section above for more information.
Return codes:
* 200 OK
* 401 when you need an auth token
* 404 when requesting an invalid VM hostname
* 400 when supplied PUT parameters fail validation
``` ```
$ curl -X PUT -d '{"lifetime":"2"}' --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6 $ curl -X PUT -d '{"lifetime":"2"}' --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6
``` ```
@ -230,6 +272,11 @@ $ curl -X PUT -d '{"tags":{"department":"engineering","user":"jdoe"}}' --url vmp
Schedule a checked-out VM for deletion. Schedule a checked-out VM for deletion.
Return codes:
* 200 OK
* 401 when you need an auth token
* 404 when requesting an invalid VM hostname
``` ```
$ curl -X DELETE --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6 $ curl -X DELETE --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6
``` ```
@ -245,6 +292,11 @@ $ curl -X DELETE --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6
Add an additional disk to a running VM. Add an additional disk to a running VM.
Return codes:
* 202 OK
* 401 when you need an auth token
* 404 when requesting an invalid VM hostname or size is not an integer
```` ````
$ curl -X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/disk/8 $ curl -X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/disk/8
```` ````
@ -285,6 +337,11 @@ $ curl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6
Create a snapshot of a running VM. Create a snapshot of a running VM.
Return codes:
* 202 OK
* 401 when you need an auth token
* 404 when requesting an invalid VM hostname
```` ````
$ curl -X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/snapshot $ curl -X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/snapshot
```` ````
@ -322,6 +379,11 @@ $ curl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6
Revert a VM back to a snapshot. Revert a VM back to a snapshot.
Return codes:
* 202 OK
* 401 when you need an auth token
* 404 when requesting an invalid VM hostname or snapshot is not valid
```` ````
$ curl X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/snapshot/n4eb4kdtp7rwv4x158366vd9jhac8btq $ curl X POST -H X-AUTH-TOKEN:a9znth9dn01t416hrguu56ze37t790bl --url vmpooler.example.com/api/v1/vm/fq6qlpjlsskycq6/snapshot/n4eb4kdtp7rwv4x158366vd9jhac8btq
```` ````
@ -386,6 +448,12 @@ If there are empty pools, the "status" section will convey this:
} }
``` ```
The top level sections are: "capacity", "queue", "clone", "boot", "pools" and "status".
If the query parameter 'view' is provided, it will be used to select which top level
element to compute and return. Select them by specifying which one you want in a comma
separated list.
For example `vmpooler.example.com/api/v1/status?view=capacity,boot`
##### GET /summary[?from=YYYY-MM-DD[&to=YYYY-MM-DD]] ##### GET /summary[?from=YYYY-MM-DD[&to=YYYY-MM-DD]]
Returns a summary, or report, for the timespan between `from` and `to` (inclusive) Returns a summary, or report, for the timespan between `from` and `to` (inclusive)
@ -395,6 +463,11 @@ metrics, such as boot and cloning durations.
Any omitted query parameter will default to now/today. A request without any Any omitted query parameter will default to now/today. A request without any
parameters will result in the current day's summary. parameters will result in the current day's summary.
Return codes:
* 200 OK
* 400 Invalid date format or range
``` ```
$ curl --url vmpooler.example.com/api/v1/summary $ curl --url vmpooler.example.com/api/v1/summary
``` ```
@ -486,6 +559,7 @@ $ curl --url vmpooler.example.com/api/v1/summary
} }
``` ```
``` ```
$ curl -G -d 'from=2015-03-10' -d 'to=2015-03-11' --url vmpooler.example.com/api/v1/summary $ curl -G -d 'from=2015-03-10' -d 'to=2015-03-11' --url vmpooler.example.com/api/v1/summary
``` ```
@ -550,15 +624,21 @@ $ curl -G -d 'from=2015-03-10' -d 'to=2015-03-11' --url vmpooler.example.com/api
} }
``` ```
You can also query only the specific top level section you want by including it after `summary/`.
The valid sections are "boot", "clone" or "tag" eg. `vmpooler.example.com/api/v1/summary/boot/`.
You can further drill-down the data by specifying the second level parameter to query eg
`vmpooler.example.com/api/v1/summary/tag/created_by`
#### Managing pool configuration via API <a name="poolconfig"></a> #### Managing pool configuration via API <a name="poolconfig"></a>
##### GET /config ##### GET /config
Returns the running pool configuration Returns the running pool configuration
Responses: Return codes
* 200 - OK * 200 OK
* 404 - No configuration found * 400 No configuration found
``` ```
$ curl https://vmpooler.example.com/api/v1/config $ curl https://vmpooler.example.com/api/v1/config
``` ```