Adds v2 general API information section
This patch add the general information section to the v2 API reference. Change-Id: I7b780d4afaa19801d800ab24f5c6ab922b57a7e2 Partial-Bug: #1558385
This commit is contained in:
parent
214ffb046e
commit
007e5761c8
14
api-ref/source/examples/versions-get-resp.json
Normal file
14
api-ref/source/examples/versions-get-resp.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"versions": [
|
||||||
|
{
|
||||||
|
"id": "v2.0",
|
||||||
|
"status": "CURRENT",
|
||||||
|
"updated": "2017-02-17T00:00:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "v1",
|
||||||
|
"status": "DEPRECATED",
|
||||||
|
"updated": "2014-12-11T00:00:00Z"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
6
api-ref/source/http-status.yaml
Normal file
6
api-ref/source/http-status.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
200:
|
||||||
|
default: |
|
||||||
|
The synchronous request was successful.
|
||||||
|
500:
|
||||||
|
default: |
|
||||||
|
The request encountered an unexpected failure.
|
@ -1,3 +1,4 @@
|
|||||||
|
:tocdepth: 2
|
||||||
|
|
||||||
=============
|
=============
|
||||||
Octavia API
|
Octavia API
|
||||||
@ -19,3 +20,47 @@ Deprecated API version
|
|||||||
|
|
||||||
v2/index
|
v2/index
|
||||||
v1/index
|
v1/index
|
||||||
|
|
||||||
|
.. rest_expand_all::
|
||||||
|
|
||||||
|
-------------
|
||||||
|
API Discovery
|
||||||
|
-------------
|
||||||
|
|
||||||
|
List All Major Versions
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. rest_method:: GET /
|
||||||
|
|
||||||
|
This fetches all the information about all known major API versions in the
|
||||||
|
deployment.
|
||||||
|
|
||||||
|
Response
|
||||||
|
--------
|
||||||
|
|
||||||
|
.. rest_parameters:: parameters.yaml
|
||||||
|
|
||||||
|
- id: api_version_id
|
||||||
|
- status: api_version_status
|
||||||
|
- updated_at: updated_at
|
||||||
|
|
||||||
|
Response Example
|
||||||
|
----------------
|
||||||
|
|
||||||
|
.. literalinclude:: examples/versions-get-resp.json
|
||||||
|
:language: javascript
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
This is just an example output and does not represent the current API
|
||||||
|
versions available.
|
||||||
|
|
||||||
|
Response codes
|
||||||
|
--------------
|
||||||
|
|
||||||
|
.. rest_status_code:: success http-status.yaml
|
||||||
|
|
||||||
|
- 200
|
||||||
|
|
||||||
|
.. rest_status_code:: error http-status.yaml
|
||||||
|
|
||||||
|
- 500
|
||||||
|
29
api-ref/source/parameters.yaml
Normal file
29
api-ref/source/parameters.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
api_links:
|
||||||
|
description: |
|
||||||
|
Links to the resources in question.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: array
|
||||||
|
api_version_id:
|
||||||
|
description: |
|
||||||
|
A common name for the version.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
api_version_status:
|
||||||
|
description: |
|
||||||
|
The status of this API version. This can be one of:
|
||||||
|
|
||||||
|
- ``CURRENT``: This is the preferred version of the API to use.
|
||||||
|
- ``SUPPORTED``: This is an older, but still supported version of the API.
|
||||||
|
- ``DEPRECATED``: A deprecated version of the API that is slated for
|
||||||
|
removal.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
||||||
|
updated_at:
|
||||||
|
description: |
|
||||||
|
The UTC date and timestamp when the resource was last updated.
|
||||||
|
in: body
|
||||||
|
required: true
|
||||||
|
type: string
|
531
api-ref/source/v2/general.inc
Normal file
531
api-ref/source/v2/general.inc
Normal file
@ -0,0 +1,531 @@
|
|||||||
|
.. -*- rst -*-
|
||||||
|
|
||||||
|
This section introduces readers to OpenStack Octavia v2.0 ReSTful HTTP API and
|
||||||
|
provides guidelines on how to use it.
|
||||||
|
|
||||||
|
Service Endpoints
|
||||||
|
=================
|
||||||
|
|
||||||
|
All API calls described throughout the rest of this document require
|
||||||
|
authentication with the `OpenStack Identity service
|
||||||
|
<http://docs.openstack.org/developer/keystone/>`_. After authentication, the
|
||||||
|
base ``endpoint URL`` for the ``service type`` of ``load-balancer`` and
|
||||||
|
``service name`` of ``octavia`` can be extracted from the service catalog
|
||||||
|
returned with the identity token.
|
||||||
|
|
||||||
|
**Example token snippet with service catalog**
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
{
|
||||||
|
"token": {
|
||||||
|
"catalog": [
|
||||||
|
{
|
||||||
|
"endpoints": [
|
||||||
|
{
|
||||||
|
"url": "http://198.51.100.10:9876/",
|
||||||
|
"interface": "public",
|
||||||
|
"region": "RegionOne",
|
||||||
|
"region_id": "RegionOne",
|
||||||
|
"id": "cd1c3c2dc6434c739ed0a12015373754"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "load-balancer",
|
||||||
|
"id": "1209701aecd3453e9803119cd28cb013",
|
||||||
|
"name": "octavia"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
For instance, if the ``endpoint URL`` is ``http://198.51.100.10:9876/`` then
|
||||||
|
the full API call for ``/v2.0/lbaas/loadbalancers`` is
|
||||||
|
``http://198.51.100.10:9876/v2.0/lbaas/loadbalancers``.
|
||||||
|
|
||||||
|
Depending on the deployment, the ``load-balancer`` ``endpoint URL`` might be
|
||||||
|
http or https, a custom port, a custom path, and include your tenant id. The
|
||||||
|
only way to know the URLs for your deployment is by using the service catalog.
|
||||||
|
The ``load-balancer`` ``endpoint URL`` should never be hard coded in
|
||||||
|
applications, even if they are only expected to work at a single site. It
|
||||||
|
should always be discovered from the Identity token.
|
||||||
|
|
||||||
|
As such, for the rest of this document we will be using short hand where ``GET
|
||||||
|
/v2.0/lbaas/loadbalancers`` really means ``GET
|
||||||
|
{your_load-balancer_endpoint_URL}/v2.0/lbaas/loadbalancers``.
|
||||||
|
|
||||||
|
Neutron-lbaas and Octavia v2 APIs
|
||||||
|
=================================
|
||||||
|
|
||||||
|
The Octavia v2 API is fully backward compatible with the neutron-lbaas v2 API
|
||||||
|
and is a superset of the neutron-lbaas v2 API. This is intended to provide a
|
||||||
|
simple migration path for deployments currently using the neutron-lbaas v2 API.
|
||||||
|
You can update the endpoint your application is using from the keystone
|
||||||
|
service catalog to use the ``octavia`` endpoint instead of the ``neutron``
|
||||||
|
endpoint for load balancer activities.
|
||||||
|
|
||||||
|
During the neutron-lbaas deprecation period a pass-through proxy will be
|
||||||
|
included in neutron to allow requests via neutron and the neutron-lbaas v2 API
|
||||||
|
to continue to function. Users are strongly encouraged to update their
|
||||||
|
applications to access load balancing via the Octavia v2 API.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Load balancing functions accessed via the neutron endpoint are deprecated
|
||||||
|
and will be removed in a future release. Users are strongly encouraged to
|
||||||
|
migrate to using the octavia endpoint.
|
||||||
|
|
||||||
|
Authentication and authorization
|
||||||
|
================================
|
||||||
|
|
||||||
|
The Octavia API v2.0 uses the `OpenStack Identity service
|
||||||
|
<http://docs.openstack.org/developer/keystone/>`_ as the default authentication
|
||||||
|
service. When Keystone is enabled, users that submit requests to the Octavia
|
||||||
|
service must provide an authentication token in **X-Auth-Token** request
|
||||||
|
header. You obtain the token by authenticating to the Keystone endpoint.
|
||||||
|
|
||||||
|
When Keystone is enabled, the ``project_id`` attribute is not required in create
|
||||||
|
requests because the project ID is derived from the authentication token.
|
||||||
|
|
||||||
|
NOTE: Currently the Octavia API accepts the deprecated ``tenant_id``
|
||||||
|
attribute for the project ID for backward compatibility.
|
||||||
|
|
||||||
|
The default authorization settings allow only administrative users to create
|
||||||
|
resources on behalf of a different project.
|
||||||
|
|
||||||
|
Octavia uses information received from Keystone to authorize user requests.
|
||||||
|
Octavia Networking handles the following types of authorization policies:
|
||||||
|
|
||||||
|
- **Operation-based policies** specify access criteria for specific
|
||||||
|
operations, possibly with fine-grained control over specific attributes.
|
||||||
|
|
||||||
|
- **Resource-based policies** access a specific resource. Permissions might or
|
||||||
|
might not be granted depending on the permissions configured for the
|
||||||
|
resource. Currently available for only the network resource.
|
||||||
|
|
||||||
|
The actual authorization policies enforced in Octavia might vary from
|
||||||
|
deployment to deployment.
|
||||||
|
|
||||||
|
Request and response formats
|
||||||
|
============================
|
||||||
|
|
||||||
|
The Octavia API v2.0 supports JSON data serialization request and response
|
||||||
|
formats only.
|
||||||
|
|
||||||
|
Request format
|
||||||
|
--------------
|
||||||
|
|
||||||
|
The Octavia API v2.0 only accepts requests with the JSON data serialization
|
||||||
|
format. The ``Content-Type`` header is ignored.
|
||||||
|
|
||||||
|
Tenant and project attributes in requests
|
||||||
|
-----------------------------------------
|
||||||
|
|
||||||
|
Starting with the Newton release of the Octavia service, the Octavia API
|
||||||
|
accepts the ``project_id`` attribute in addition to the ``tenant_id`` attribute
|
||||||
|
in requests. The ``tenant_id`` attribute is accepted for backward compatibility.
|
||||||
|
If both the ``project_id`` and the ``tenant_id`` attribute are provided in the
|
||||||
|
same request, ``project_id`` will be used.
|
||||||
|
|
||||||
|
The ``tenant_id`` attribute is deprecated and will be removed in a future
|
||||||
|
release.
|
||||||
|
|
||||||
|
Response format
|
||||||
|
---------------
|
||||||
|
|
||||||
|
The Octavia API v2.0 always responds with the JSON data serialization
|
||||||
|
format. The ``Accept`` header is ignored.
|
||||||
|
|
||||||
|
Query extension
|
||||||
|
A ``.json`` extension can be added to the request URI. For example, the
|
||||||
|
``.json`` extension in the following requests are equivalent:
|
||||||
|
|
||||||
|
- **GET** *publicURL*/loadbalancers
|
||||||
|
|
||||||
|
- **GET** *publicURL*/loadbalancers.json
|
||||||
|
|
||||||
|
Tenant and project attributes in responses
|
||||||
|
------------------------------------------
|
||||||
|
|
||||||
|
Starting with the Newton release of the Octavia service, the Octavia API
|
||||||
|
returns a ``project_id`` attribute in responses, while still returning a
|
||||||
|
``tenant_id`` attribute for backward compatibility. The values will always be
|
||||||
|
identical.
|
||||||
|
|
||||||
|
The ``tenant_id`` attribute is deprecated and will be removed in a future
|
||||||
|
release.
|
||||||
|
|
||||||
|
|
||||||
|
.. _filtering:
|
||||||
|
|
||||||
|
Filtering and column selection
|
||||||
|
==============================
|
||||||
|
|
||||||
|
The Octavia API v2.0 supports filtering based on all top level attributes of
|
||||||
|
a resource. Filters are applicable to all list requests.
|
||||||
|
|
||||||
|
For example, the following request returns all loadbalancers named ``foobar``:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
GET /v2.0/lbaas/loadbalancers?name=foobar
|
||||||
|
|
||||||
|
When you specify multiple filters, the Octavia API v2.0 returns only objects
|
||||||
|
that meet all filtering criteria. The operation applies an AND condition among
|
||||||
|
the filters.
|
||||||
|
|
||||||
|
Note
|
||||||
|
----
|
||||||
|
|
||||||
|
Octavia does not offer an OR mechanism for filters.
|
||||||
|
|
||||||
|
Alternatively, you can issue a distinct request for each filter and build a
|
||||||
|
response set from the received responses on the client-side.
|
||||||
|
|
||||||
|
By default, Octavia returns all attributes for any show or list call. The
|
||||||
|
Octavia API v2.0 has a mechanism to limit the set of attributes returned.
|
||||||
|
For example, return ``id``.
|
||||||
|
|
||||||
|
You can use the ``fields`` query parameter to control the attributes returned
|
||||||
|
from the Octavia API v2.0.
|
||||||
|
|
||||||
|
For example, the following request returns only ``id`` and ``name`` for each
|
||||||
|
load balancer:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
GET /v2.0/lbaas/loadbalancers.json?fields=id&fields=name
|
||||||
|
|
||||||
|
Synchronous versus asynchronous plug-in behavior
|
||||||
|
================================================
|
||||||
|
|
||||||
|
The Octavia API v2.0 presents a logical model of load balancers consisting
|
||||||
|
of listeners, pools, and members. It is up to the OpenStack Octavia plug-in
|
||||||
|
to communicate with the underlying infrastructure to ensure load balancing
|
||||||
|
is consistent with the logical model. A plug-in might perform these
|
||||||
|
operations asynchronously.
|
||||||
|
|
||||||
|
When an API client modifies the logical model by issuing an HTTP **POST**,
|
||||||
|
**PUT**, or **DELETE** request, the API call might return before the plug-in
|
||||||
|
modifies underlying virtual and physical load balancing devices. However, an
|
||||||
|
API client is guaranteed that all subsequent API calls properly reflect the
|
||||||
|
changed logical model.
|
||||||
|
|
||||||
|
For example, if a client issues an HTTP **PUT** request to set the weight
|
||||||
|
of a member, there is no guarantee that the new weight will be in effect when
|
||||||
|
the HTTP call returns. This is indicated by an HTTP response code of 202.
|
||||||
|
|
||||||
|
You can use the ``provisioning_status`` attribute to determine whether the
|
||||||
|
Octavia plug-in has successfully completed the configuration of the resource.
|
||||||
|
|
||||||
|
Bulk-create
|
||||||
|
===========
|
||||||
|
|
||||||
|
The Octavia v2.0 API does not support bulk create. You cannot create more than
|
||||||
|
one load balancer per API call.
|
||||||
|
|
||||||
|
The Octavia v2.0 API does support single call create which allows you to
|
||||||
|
create a fully populated load balancer in one API call. This is discussed
|
||||||
|
in the load balancer create section of this reference.
|
||||||
|
|
||||||
|
Pagination
|
||||||
|
==========
|
||||||
|
|
||||||
|
To reduce load on the service, list operations will return a maximum number of
|
||||||
|
items at a time. To navigate the collection, the parameters limit, marker and
|
||||||
|
page\_reverse can be set in the URI. For example:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
?limit=100&marker=1234&page_reverse=False
|
||||||
|
|
||||||
|
The ``marker`` parameter is the ID of the last item in the previous list. The
|
||||||
|
``limit`` parameter sets the page size. The ``page_reverse`` parameter sets
|
||||||
|
the page direction. These parameters are optional. If the client requests a
|
||||||
|
limit beyond the maximum limit configured by the deployment, the server returns
|
||||||
|
the maximum limit number of items.
|
||||||
|
|
||||||
|
For convenience, list responses contain atom "next" links and "previous" links.
|
||||||
|
The last page in the list requested with 'page\_reverse=False' will not contain
|
||||||
|
"next" link, and the last page in the list requested with 'page\_reverse=True'
|
||||||
|
will not contain "previous" link. The following examples illustrate two pages
|
||||||
|
with three items. The first page was retrieved through:
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
GET http://198.51.100.10:9876/v2.0/lbaas/loadbalancers.json?limit=2
|
||||||
|
|
||||||
|
If a particular plug-in does not support pagination operations the Octavia API
|
||||||
|
v2.0 will emulate the pagination behavior so that users can expect the same
|
||||||
|
behavior regardless of the particular plug-in running in the background.
|
||||||
|
|
||||||
|
**Example load balancer list, first page: JSON request**
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
GET /v2.0/lbaas/loadbalancers.json?limit=2 HTTP/1.1
|
||||||
|
Host: 198.51.100.10:9876
|
||||||
|
Content-Type: application/json
|
||||||
|
Accept: application/json
|
||||||
|
|
||||||
|
|
||||||
|
**Example load balancer list, first page: JSON response**
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
{
|
||||||
|
"loadbalancers": [
|
||||||
|
{
|
||||||
|
"admin_state_up": true,
|
||||||
|
"listeners": [],
|
||||||
|
"vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
|
||||||
|
"pools": [],
|
||||||
|
"provider": "octavia",
|
||||||
|
"description": "Best App load balancer 1",
|
||||||
|
"name": "bestapplb1",
|
||||||
|
"operating_status": "ONLINE",
|
||||||
|
"id": "34d5f4a5-cbbc-43a0-878f-b8a26370e6e7",
|
||||||
|
"provisioning_status": "ACTIVE",
|
||||||
|
"vip_port_id": "1e20d91d-8df9-4c15-9778-28bc89226c19",
|
||||||
|
"vip_address": "203.0.113.10",
|
||||||
|
"tenant_id": "bf325b04-e7b1-4002-9b10-f4984630367f",
|
||||||
|
"project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"admin_state_up": true,
|
||||||
|
"listeners": [],
|
||||||
|
"vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
|
||||||
|
"pools": [],
|
||||||
|
"provider": "octavia",
|
||||||
|
"description": "Second Best App load balancer 1",
|
||||||
|
"name": "2ndbestapplb1",
|
||||||
|
"operating_status": "ONLINE",
|
||||||
|
"id": "0fdb0ca7-0a38-4aea-891c-daaed40bcafe",
|
||||||
|
"provisioning_status": "ACTIVE",
|
||||||
|
"vip_port_id": "21f7ac04-6824-4222-93cf-46e0d70607f9",
|
||||||
|
"vip_address": "203.0.113.20",
|
||||||
|
"tenant_id": "bf325b04-e7b1-4002-9b10-f4984630367f",
|
||||||
|
"project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"loadbalancers_links": [
|
||||||
|
{
|
||||||
|
"href": "http://198.51.100.10:9876/v2.0/lbaas/loadbalancers.json?limit=2&marker=0fdb0ca7-0a38-4aea-891c-daaed40bcafe",
|
||||||
|
"rel": "next"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"href": "http://198.51.100.10:9876/v2.0/lbaas/loadbalancers.json?limit=2&marker=34d5f4a5-cbbc-43a0-878f-b8a26370e6e7&page_reverse=True",
|
||||||
|
"rel": "previous"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
The last page won't show the "next" links
|
||||||
|
|
||||||
|
**Example load balancer list, last page: JSON request**
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
GET /v2.0/lbaas/loadbalancers.json?limit=2&marker=4ef465f3-0233-44af-b93d-9d3eae4daf85 HTTP/1.1
|
||||||
|
Host: 198.51.100.10:9876
|
||||||
|
Content-Type: application/json
|
||||||
|
Accept: application/json
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
**Example load balancer list, last page: JSON response**
|
||||||
|
|
||||||
|
.. code::
|
||||||
|
|
||||||
|
{
|
||||||
|
"loadbalancers": [
|
||||||
|
{
|
||||||
|
"admin_state_up": true,
|
||||||
|
"listeners": [],
|
||||||
|
"vip_subnet_id": "08dce793-daef-411d-a896-d389cd45b1ea",
|
||||||
|
"pools": [],
|
||||||
|
"provider": "octavia",
|
||||||
|
"description": "Other App load balancer 1",
|
||||||
|
"name": "otherapplb1",
|
||||||
|
"operating_status": "ONLINE",
|
||||||
|
"id": "4ef465f3-0233-44af-b93d-9d3eae4daf85",
|
||||||
|
"provisioning_status": "ACTIVE",
|
||||||
|
"vip_port_id": "f777a1c7-7f59-4a36-ad34-24dfebaf19e6",
|
||||||
|
"vip_address": "203.0.113.50",
|
||||||
|
"tenant_id": "bf325b04-e7b1-4002-9b10-f4984630367f",
|
||||||
|
"project_id": "bf325b04-e7b1-4002-9b10-f4984630367f"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"loadbalancers_links": [
|
||||||
|
{
|
||||||
|
"href": "http://198.51.100.10:9876/v2.0/lbaas/loadbalancers.json?limit=2&marker=4ef465f3-0233-44af-b93d-9d3eae4daf85&page_reverse=True",
|
||||||
|
"rel": "previous"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Sorting
|
||||||
|
=======
|
||||||
|
|
||||||
|
Sorting is determined through the use of the 'sort' query string parameter. The
|
||||||
|
value of this parameter is a comma-separated list of sort keys. Sort directions
|
||||||
|
can optionally be appended to each sort key, separated by the ':' character.
|
||||||
|
|
||||||
|
The supported sort directions are either 'asc' for ascending or 'desc' for
|
||||||
|
descending.
|
||||||
|
|
||||||
|
The caller may (but is not required to) specify a sort direction for each key.
|
||||||
|
If a sort direction is not specified for a key, then a default is set by the
|
||||||
|
server.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
- Only sort keys specified:
|
||||||
|
|
||||||
|
+ ``sort=key1,key2,key3``
|
||||||
|
+ 'key1' is the first key, 'key2' is the second key, etc.
|
||||||
|
+ Sort directions are defaulted by the server
|
||||||
|
|
||||||
|
- Some sort directions specified:
|
||||||
|
|
||||||
|
+ ``sort=key1:asc,key2,key3``
|
||||||
|
+ Any sort key without a corresponding direction is defaulted
|
||||||
|
+ 'key1' is the first key (ascending order), 'key2' is the second key
|
||||||
|
(direction defaulted by the server), etc.
|
||||||
|
|
||||||
|
- Equal number of sort keys and directions specified:
|
||||||
|
|
||||||
|
+ ``sort=key1:asc,key2:desc,key3:asc``
|
||||||
|
+ Each key is paired with the corresponding direction
|
||||||
|
+ 'key1' is the first key (ascending order), 'key2' is the second key
|
||||||
|
(descending order), etc.
|
||||||
|
|
||||||
|
You can also use the ``sort_key`` and ``sort_dir`` parameters to sort the
|
||||||
|
results of list operations. Currently sorting does not work with extended
|
||||||
|
attributes of resource. The ``sort_key`` and ``sort_dir`` can be repeated,
|
||||||
|
and the number of ``sort_key`` and ``sort_dir`` provided must be same. The
|
||||||
|
``sort_dir`` parameter indicates in which direction to sort. Acceptable
|
||||||
|
values are ``asc`` (ascending) and ``desc`` (descending).
|
||||||
|
|
||||||
|
If a particular plug-in does not support sorting operations the Octavia API
|
||||||
|
v2.0 emulates the sorting behavior so that users can expect the same behavior
|
||||||
|
regardless of the particular plug-in that runs in the background.
|
||||||
|
|
||||||
|
|
||||||
|
Response Codes
|
||||||
|
==============
|
||||||
|
|
||||||
|
The following HTTP response status codes are used by the Octavia v2.0 API.
|
||||||
|
|
||||||
|
Success
|
||||||
|
-------
|
||||||
|
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| Code | Description |
|
||||||
|
+======+================================================================+
|
||||||
|
| 200 | - The synchronous request was successful |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 202 | - The asynchronous request was accepted and is being processed |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 204 | - The request was successful, no content to return |
|
||||||
|
| | - The entity was successfully deleted |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
|
||||||
|
Faults
|
||||||
|
------
|
||||||
|
|
||||||
|
The Octavia API v2.0 returns an error response if a failure occurs while
|
||||||
|
processing a request. Octavia uses only standard HTTP error codes.
|
||||||
|
4\ *nn* errors indicate problems in the particular request being sent from
|
||||||
|
the client.
|
||||||
|
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| Code | Description |
|
||||||
|
+======+================================================================+
|
||||||
|
| 400 | - Bad request |
|
||||||
|
| | - Malformed request URI or body requested admin state invalid |
|
||||||
|
| | - Invalid values entered |
|
||||||
|
| | - Bulk operations disallowed |
|
||||||
|
| | - Validation failed |
|
||||||
|
| | - Method not allowed for request body (such as trying to |
|
||||||
|
| | update attributes that can be specified at create-time only) |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 401 | - Unauthorized: Access is denied due to invalid credentials |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 403 | - The project is over quota for the request |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 404 | - Not Found |
|
||||||
|
| | - Non existent URI |
|
||||||
|
| | - Resource not found |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 409 | - Conflict |
|
||||||
|
| | - The resource is in an immutable state |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 500 | - Internal server error |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
| 503 | - Service unavailable |
|
||||||
|
| | - The project is busy with other requests, try again later |
|
||||||
|
+------+----------------------------------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
Status Codes
|
||||||
|
============
|
||||||
|
|
||||||
|
Octavia API v2.0 entities have two status codes present in the response body.
|
||||||
|
The ``provisioning_status`` describes the lifecycle status of the entity while
|
||||||
|
the ``operating_status`` provides the observed status of the entity.
|
||||||
|
|
||||||
|
For example, a member may be in a ``provisioning_status`` of ``PENDING_UPDATE``
|
||||||
|
and have an ``operating_status`` of ``ONLINE``. This would indicate that an
|
||||||
|
update operation is occuring on this member and it is in an immutable state
|
||||||
|
but it is healthy and able to service requests. This situation could occur if
|
||||||
|
the user made a request to update the weight of the member.
|
||||||
|
|
||||||
|
Operating Status Codes
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
| Code | Description |
|
||||||
|
+============+==============================================================+
|
||||||
|
| ONLINE | - Entity is operating normally |
|
||||||
|
| | - All pool members are healthy |
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
| OFFLINE | - Entity is administratively disabled |
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
| DEGRADED | - One or more of the entity's components are in ERROR |
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
| ERROR | - The entity has failed |
|
||||||
|
| | - The member is failing it's health monitoring checks |
|
||||||
|
| | - All of the pool members are in ERROR |
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
| NO_MONITOR | - No health monitor is configured for this entity and it's |
|
||||||
|
| | status is unknown |
|
||||||
|
+------------+--------------------------------------------------------------+
|
||||||
|
|
||||||
|
Provisioning Status Codes
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| Code | Description |
|
||||||
|
+================+==========================================================+
|
||||||
|
| ACTIVE | - The entity was provisioned successfully |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| DELETED | - The entity has been successfully deleted |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| ERROR | - Provisioning failed |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| PENDING_CREATE | - The entity is being created |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| PENDING_UPDATE | - The entity is being updated |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
| PENDING_DELETE | - The entity is being deleted |
|
||||||
|
+----------------+----------------------------------------------------------+
|
||||||
|
|
||||||
|
Entities in a ``PENDING_*`` state are immutable and cannot be modified until
|
||||||
|
the requested operation completes. The entity will return to the ``ACTIVE``
|
||||||
|
provisioning status once the asynchronus operation completes.
|
||||||
|
|
||||||
|
An entity in ``ERROR`` has failed provisioning. The entity may be deleted and
|
||||||
|
recreated.
|
@ -1,4 +1,4 @@
|
|||||||
:tocdepth: 2
|
:tocdepth: 3
|
||||||
|
|
||||||
==========================
|
==========================
|
||||||
Octavia API v2.0 (Current)
|
Octavia API v2.0 (Current)
|
||||||
@ -9,6 +9,8 @@ Octavia API v2.0 (Current)
|
|||||||
--------------------
|
--------------------
|
||||||
General API Overview
|
General API Overview
|
||||||
--------------------
|
--------------------
|
||||||
|
.. include:: general.inc
|
||||||
|
|
||||||
|
--------------
|
||||||
Load Balancers
|
Load Balancers
|
||||||
==============
|
--------------
|
||||||
|
Loading…
Reference in New Issue
Block a user