Update links to API reference

Change-Id: Ib7b184693ae0c15ff073f1759549244dbca9794a
Closes-Bug: #1703268
This commit is contained in:
Hiroaki Kobayashi 2018-02-05 16:17:49 +09:00
parent d0cc699a9a
commit 7f2aa906d4
4 changed files with 3 additions and 774 deletions

View File

@ -1,3 +1,4 @@
=========================
Reservation API Reference
=========================

View File

@ -1,7 +1,7 @@
:tocdepth: 2
==================
Reservation API V1
Reservation API v1
==================
This is a reference for the OpenStack Reservation API which is provided by the

View File

@ -1,772 +0,0 @@
====================
Blazar REST API v1.0
====================
1 General API information
-------------------------
This section contains base information about the Blazar REST API design,
including operations with different Blazar resource types and examples of
possible requests and responses. Blazar supports JSON data serialization
format, which means that requests with non empty body have to contain
"application/json" Content-Type header or it should be added ".json" extension
to the resource name in the request.
This should look like the following:
.. sourcecode:: http
GET /v1/leases.json HTTP/1.1
or
.. sourcecode:: http
GET /v1/leases HTTP/1.1
Accept: application/json
2 Leases
--------
**Description**
Lease is the main abstraction for the user in the Blazar case. Lease means
some kind of contract where start time, end time and resources to be reserved
are mentioned.
**Lease ops**
+--------+-----------------------+-------------------------------------------------------------------------------+
| Verb | URI | Description |
+========+=======================+===============================================================================+
| GET | /v1/leases | Lists all leases registered in Blazar. |
+--------+-----------------------+-------------------------------------------------------------------------------+
| POST | /v1/leases | Create new lease with passed parameters. |
+--------+-----------------------+-------------------------------------------------------------------------------+
| GET | /v1/leases/{lease_id} | Shows information about specified lease. |
+--------+-----------------------+-------------------------------------------------------------------------------+
| PUT | /v1/leases/{lease_id} | Updates specified lease (only name modification and prolonging are possible). |
+--------+-----------------------+-------------------------------------------------------------------------------+
| DELETE | /v1/leases/{lease_id} | Deletes specified lease and frees all reserved resources. |
+--------+-----------------------+-------------------------------------------------------------------------------+
2.1 List all leases
^^^^^^^^^^^^^^^^^^^
.. http:get:: /v1/leases
* Normal Response Code: 200 (OK)
* Returns the list of all leases.
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
GET /v1/leases HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
.. sourcecode:: json
{
"leases": [
{
"status": null,
"user_id": null,
"name": "lease_foo",
"end_date": "2017-02-24T20:00:00.000000",
"reservations": [
{
"status": "pending",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"min": 1,
"max": 1,
"resource_id": "5",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"hypervisor_properties": "[\"==\", \"$hypervisor_hostname\", \"compute\"]",
"resource_properties": "",
"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
"resource_type": "physical:host",
"before_end": "default"
}
],
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"events": [
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "start_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-21T20:00:00.000000",
"id": "188a8584-f832-4df9-9a4a-51e6364420ff"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-24T20:00:00.000000",
"id": "277d6436-dfcb-4eae-ae5e-ac7fa9c2fd56"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "before_end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-22T20:00:00.000000",
"id": "f583af71-ca21-4b66-87de-52211d118029"
}
],
"id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"action": null,
"project_id": "aa45f56901ef45ee95e3d211097c0ea3",
"status_reason": null,
"start_date": "2017-02-21T20:00:00.000000",
"trust_id": "b442a580b9504ababf305bf2b4c49512"
}
]
}
2.2 Create new lease
^^^^^^^^^^^^^^^^^^^^
.. http:post:: /v1/leases
* Normal Response Code: 202 (ACCEPTED)
* Returns the information about created lease.
* Requires a request body.
**Example**
**request**
.. sourcecode:: http
POST /v1/leases HTTP/1.1
.. sourcecode:: json
{
"name": "lease_foo",
"start_date": "2017-2-21 20:00",
"end_date": "2017-2-24 20:00",
"before_end_date": "2017-02-24 19:00",
"reservations": [
{
"hypervisor_properties": "[\"==\", \"$hypervisor_hostname\", \"compute\"]",
"max": 1,
"min": 1,
"resource_type": "physical:host",
"resource_properties": "",
"before_end": "default"
}
],
"events": []
}
**response**
.. sourcecode:: http
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
.. sourcecode:: json
{
"lease":
{
"status": null,
"user_id": null,
"name": "lease_foo",
"end_date": "2017-02-24T20:00:00.000000",
"reservations": [
{
"status": "pending",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"min": 1,
"max": 1,
"hypervisor_properties": "[\"==\", \"$hypervisor_hostname\", \"compute\"]",
"resource_id": "5",
"resource_properties": "",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
"resource_type": "physical:host",
"before_end": "default"
}
],
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"events": [
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "start_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-21T20:00:00.000000",
"id": "188a8584-f832-4df9-9a4a-51e6364420ff"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-24T20:00:00.000000",
"id": "277d6436-dfcb-4eae-ae5e-ac7fa9c2fd56"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "before_end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-22T20:00:00.000000",
"id": "f583af71-ca21-4b66-87de-52211d118029"
}
],
"id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"action": null,
"project_id": "aa45f56901ef45ee95e3d211097c0ea3",
"status_reason": null,
"start_date": "2017-02-21T20:00:00.000000",
"trust_id": "b442a580b9504ababf305bf2b4c49512"
}
}
2.3 Show info about lease
^^^^^^^^^^^^^^^^^^^^^^^^^
.. http:get:: /v1/leases/{lease_id}
* Normal Response Code: 200 (OK)
* Returns the information about specified lease.
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
GET /v1/leases/6ee55c78-ac52-41a6-99af-2d2d73bcc466 HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
.. sourcecode:: json
{
"lease":
{
"status": null,
"user_id": null,
"name": "lease_foo",
"end_date": "2017-02-24T20:00:00.000000",
"reservations": [
{
"status": "pending",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"min": 1,
"max": 1,
"resource_id": "5",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"hypervisor_properties": "[\"==\", \"$hypervisor_hostname\", \"compute\"]",
"resource_properties": "",
"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
"resource_type": "physical:host",
"before_end": "default"
}
],
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"events": [
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "start_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-21T20:00:00.000000",
"id": "188a8584-f832-4df9-9a4a-51e6364420ff"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-24T20:00:00.000000",
"id": "277d6436-dfcb-4eae-ae5e-ac7fa9c2fd56"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "before_end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-22T20:00:00.000000",
"id": "f583af71-ca21-4b66-87de-52211d118029"
}
],
"id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"action": null,
"project_id": "aa45f56901ef45ee95e3d211097c0ea3",
"status_reason": null,
"start_date": "2017-02-21T20:00:00.000000",
"trust_id": "b442a580b9504ababf305bf2b4c49512"
}
}
2.4 Update existing lease
^^^^^^^^^^^^^^^^^^^^^^^^^
.. http:put:: /v1/leases/{lease_id}
* Normal Response Code: 202 ACCEPTED
* Returns the updated information about lease.
* Requires a request body.
**Example**
**request**
.. sourcecode:: http
PUT /v1/leases/6ee55c78-ac52-41a6-99af-2d2d73bcc466 HTTP/1.1
.. sourcecode:: json
{
"name": "lease_new_foo",
"end_date": "2017-3-12 12:00",
"reservations": [
{
"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
"max": 3
}
]
}
**response**
.. sourcecode:: http
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
.. sourcecode:: json
{
"lease":
{
"status": null,
"user_id": null,
"name": "lease_new_foo",
"end_date": "2017-03-12T12:00:00.000000",
"reservations": [
{
"status": "pending",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"min": 1,
"max": 3,
"resource_id": "5",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"hypervisor_properties": "[\"==\", \"$hypervisor_hostname\", \"compute\"]",
"resource_properties": "",
"id": "087bc740-6d2d-410b-9d47-c7b2b55a9d36",
"resource_type": "physical:host",
"before_end": "default"
}
],
"created_at": "2017-02-21 14:50:38",
"updated_at": "2017-02-21 14:56:32",
"events": [
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "start_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": null,
"time": "2017-02-21T20:00:00.000000",
"id": "188a8584-f832-4df9-9a4a-51e6364420ff"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": "2017-02-21 14:56:32",
"time": "2017-03-12T12:00:00.000000",
"id": "277d6436-dfcb-4eae-ae5e-ac7fa9c2fd56"
},
{
"status": "UNDONE",
"lease_id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"event_type": "before_end_lease",
"created_at": "2017-02-21 14:50:38",
"updated_at": "2017-02-21 14:56:32",
"time": "2017-03-10T12:00:00.000000",
"id": "f583af71-ca21-4b66-87de-52211d118029"
}
],
"id": "6ee55c78-ac52-41a6-99af-2d2d73bcc466",
"action": null,
"project_id": "aa45f56901ef45ee95e3d211097c0ea3",
"status_reason": null,
"start_date": "2017-02-21T20:00:00.000000",
"trust_id": "b442a580b9504ababf305bf2b4c49512"
}
}
2.5 Delete existing lease
^^^^^^^^^^^^^^^^^^^^^^^^^
.. http:delete:: /v1/leases/{lease_id}
* Normal Response Code: 204 NO CONTENT
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
DELETE /v1/leases/6ee55c78-ac52-41a6-99af-2d2d73bcc466 HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 204 NO CONTENT
Content-Type: application/json
3 Hosts
-------
**Description**
Host is the main abstraction for a Nova Compute host. It is necessary to
enroll compute hosts in Blazar so that the host becomes dedicated to Blazar,
and won't accept other VM creation requests but the ones asked subsequently by
leases requests for dedicated hosts within Blazar. If no extra arguments but
the name are passed when creating a host, Blazar will take Nova
specifications, like VCPUs, RAM or cpu_info. There is a possibility to add what
we call arbitrary extra parameters (not provided within the Nova model) like
number of GPUs, color of the server or anything that needs to be filtered for a
user query.
**Hosts ops**
+--------+------------------------+---------------------------------------------------------------------------------+
| Verb | URI | Description |
+========+========================+=================================================================================+
| GET | /v1/os-hosts | Lists all hosts registered in Blazar. |
+--------+------------------------+---------------------------------------------------------------------------------+
| POST | /v1/os-hosts | Create new host with possibly extra parameters. |
+--------+------------------------+---------------------------------------------------------------------------------+
| GET | /v1/os-hosts/{host_id} | Shows information about specified host, including extra parameters if existing. |
+--------+------------------------+---------------------------------------------------------------------------------+
| PUT | /v1/os-hosts/{host_id} | Updates specified host (only extra parameters are possible to change). |
+--------+------------------------+---------------------------------------------------------------------------------+
| DELETE | /v1/os-hosts/{host_id} | Deletes specified host. |
+--------+------------------------+---------------------------------------------------------------------------------+
3.1 List all hosts
^^^^^^^^^^^^^^^^^^
.. http:get:: /v1/os-hosts
* Normal Response Code: 200 (OK)
* Returns the list of all hosts.
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
GET /v1/os-hosts HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
.. sourcecode:: json
{
"hosts": [
{
"status": null,
"hypervisor_type": "QEMU",
"created_at": "2017-02-21 14:29:55",
"updated_at": null,
"hypervisor_hostname": "compute-1",
"memory_mb": 5968,
"cpu_info": "{'vendor': 'Intel', 'model': 'pentium',
'arch': 'x86_64', 'features': [
'lahf_lm', 'lm', 'nx', 'syscall', 'hypervisor',
'aes', 'popcnt', 'x2apic', 'sse4.2', 'cx16',
'ssse3', 'pni', 'ss', 'sse2', 'sse', 'fxsr',
'clflush', 'pse36', 'pat', 'cmov', 'mca',
'pge', 'mtrr', 'apic', 'pae'],
'topology': {
'cores': 1, 'threads': 1, 'sockets': 2, 'cells': 1}}",
"vcpus": 1,
"service_name": "blazar",
"hypervisor_version": 2005000,
"local_gb": 13,
"id": "1",
"trust_id": "454ebdadd56142c896571d749ea86e95"
},
{
"status": null,
"hypervisor_type": "QEMU",
"created_at": "2017-02-20 12:20:31",
"updated_at": null,
"hypervisor_hostname": "compute-2",
"memory_mb": 5968,
"cpu_info": "{'vendor': 'Intel', 'model': 'pentium',
'arch': 'x86_64', 'features': [
'lahf_lm', 'lm', 'nx', 'syscall', 'hypervisor',
'aes', 'popcnt', 'x2apic', 'sse4.2', 'cx16',
'ssse3', 'pni', 'ss', 'sse2', 'sse', 'fxsr',
'clflush', 'pse36', 'pat', 'cmov', 'mca',
'pge', 'mtrr', 'apic', 'pae'],
'topology': {
'cores': 2, 'threads': 2, 'sockets': 2, 'cells': 1}}",
"vcpus": 1,
"service_name": "blazar",
"hypervisor_version": 2005000,
"local_gb": 20,
"id": "2",
"trust_id": "345adbead12345c769081d971ea86e36"
}
]
}
3.2 Create host
^^^^^^^^^^^^^^^
.. http:post:: /v1/os-hosts
* Normal Response Code: 202 (ACCEPTED)
* Returns the information about created host, including extra parameters if
any.
* Requires a request body.
**Example**
**request**
.. sourcecode:: http
POST /v1/os-hosts HTTP/1.1
.. sourcecode:: json
{
"name": "compute"
}
**response**
.. sourcecode:: http
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
.. sourcecode:: json
{
"host":
{
"status": null,
"hypervisor_type": "QEMU",
"created_at": "2017-02-21 14:29:55",
"updated_at": null,
"hypervisor_hostname": "compute",
"memory_mb": 5968,
"cpu_info": "{'vendor': 'Intel', 'model': 'pentium',
'arch': 'x86_64', 'features': [
'lahf_lm', 'lm', 'nx', 'syscall', 'hypervisor',
'aes', 'popcnt', 'x2apic', 'sse4.2', 'cx16',
'ssse3', 'pni', 'ss', 'sse2', 'sse', 'fxsr',
'clflush', 'pse36', 'pat', 'cmov', 'mca',
'pge', 'mtrr', 'apic', 'pae'],
'topology': {
'cores': 1, 'threads': 1, 'sockets': 2, 'cells': 1}}",
"vcpus": 1,
"service_name": "blazar",
"hypervisor_version": 2005000,
"local_gb": 13,
"id": "1",
"trust_id": "454ebdadd56142c896571d749ea86e95"
}
}
3.3 Show info about host
^^^^^^^^^^^^^^^^^^^^^^^^
.. http:get:: /v1/os-hosts/{host_id}
* Normal Response Code: 200 (OK)
* Returns the information about specified host, including extra parameters if
any.
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
GET /v1/os-hosts/1 HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 200 OK
Content-Type: application/json
.. sourcecode:: json
{
"host":
{
"status": null,
"hypervisor_type": "QEMU",
"created_at": "2017-02-21 14:29:55",
"updated_at": null,
"hypervisor_hostname": "blazar",
"memory_mb": 5968,
"cpu_info": "{'vendor': 'Intel', 'model': 'pentium',
'arch': 'x86_64', 'features': [
'lahf_lm', 'lm', 'nx', 'syscall', 'hypervisor',
'aes', 'popcnt', 'x2apic', 'sse4.2', 'cx16',
'ssse3', 'pni', 'ss', 'sse2', 'sse', 'fxsr',
'clflush', 'pse36', 'pat', 'cmov', 'mca',
'pge', 'mtrr', 'apic', 'pae'],
'topology': {
'cores': 1, 'threads': 1, 'sockets': 2, 'cells': 1}}",
"vcpus": 1,
"service_name": "blazar",
"hypervisor_version": 2005000,
"local_gb": 13,
"id": "1",
"trust_id": "454ebdadd56142c896571d749ea86e95"
}
}
3.4 Update existing host
^^^^^^^^^^^^^^^^^^^^^^^^
.. http:put:: /v1/os-hosts/{host_id}
* Normal Response Code: 202 (ACCEPTED)
* Returns the updated information about host.
* Requires a request body.
**Example**
**request**
.. sourcecode:: http
PUT /v1/os-hosts/1 HTTP/1.1
.. sourcecode:: json
{
"values": {
"banana": "false"
}
}
**response**
.. sourcecode:: http
HTTP/1.1 202 ACCEPTED
Content-Type: application/json
.. sourcecode:: json
{
"banana": "false",
"cpu_info": "{'vendor': 'Intel', 'model': 'pentium',
'arch': 'x86_64', 'features': [
'lahf_lm', 'lm', 'nx', 'syscall', 'hypervisor',
'aes', 'popcnt', 'x2apic', 'sse4.2', 'cx16',
'ssse3', 'pni', 'ss', 'sse2', 'sse', 'fxsr',
'clflush', 'pse36', 'pat', 'cmov', 'mca',
'pge', 'mtrr', 'apic', 'pae'],
'topology': {
'cores': 1, 'threads': 1, 'sockets': 2}}",
"created_at": "2014-02-26 08:00:00",
"hypervisor_hostname": "compute",
"hypervisor_type": "QEMU",
"hypervisor_version": 1000000,
"id": "1",
"local_gb": 8,
"memory_mb": 3954,
"status": null,
"updated_at": null,
"vcpus": 2
}
3.5 Delete existing host
^^^^^^^^^^^^^^^^^^^^^^^^
.. http:delete:: /v1/os-hosts/{host_id}
* Normal Response Code: 204 (NO CONTENT)
* Does not require a request body.
**Example**
**request**
.. sourcecode:: http
DELETE /v1/os-hosts/1 HTTP/1.1
**response**
.. sourcecode:: http
HTTP/1.1 204 NO CONTENT
Content-Type: application/json
4 Plugins
---------
**Description**
Plugins are working with different resources types. Technically speaking they
are implemented using stevedore extensions. Currently plugins API requests are
not implemented, listed below examples are their possible view.
**Plugin ops**
**TBD** - https://blueprints.launchpad.net/blazar/+spec/create-plugin-api-endpoint

View File

@ -5,5 +5,5 @@ Blazar REST API docs
.. toctree::
:maxdepth: 1
api-v1
Blazar REST API v1 <https://developer.openstack.org/api-ref/reservation/>
api-v2