2289 lines
70 KiB
ReStructuredText
2289 lines
70 KiB
ReStructuredText
Load Balancer as a Service (LBaaS) API Specification
|
|
====================================================
|
|
|
|
1. Overview
|
|
-----------
|
|
|
|
This guide is intended for software developers who wish to create
|
|
applications using the Load Balancer as a Service (LBaaS) set
|
|
of APIs. It assumes the reader has a general understanding of cloud
|
|
APIs, load balancing concepts, RESTful web services, HTTP/1.1
|
|
conventions and JSON serialization formats. The LBaaS set of APIs
|
|
utilize and take advantage of a variety of Openstack cloud API patterns
|
|
which are described in detail.
|
|
|
|
1.1 API Maturity Level
|
|
~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
This API definition represents the Load Balancer as a Service
|
|
in Beta release form. Functionality represented within this
|
|
specification is supported. The LBaaS API defined within this
|
|
specification represents version 1.1 of LBaaS.
|
|
|
|
**Maturity Level**: *Experimental*
|
|
|
|
**Version API Status**: *BETA*
|
|
|
|
2. Architecture View
|
|
--------------------
|
|
|
|
2.1 Overview
|
|
~~~~~~~~~~~~
|
|
|
|
The Load Balancer as a Service (LBaaS) is a set of APIs that
|
|
provide a RESTful interface for the creation and management of load
|
|
balancers in the cloud. Load balancers created can be used for a variety
|
|
of purposes including load balancers for your external cloud hosted
|
|
services as well as internal load balancing needs. The load balancing
|
|
solution is meant to provide both load balancing and high availability
|
|
in an industry standard manner. The LBaaS APIs defined are integrated
|
|
within the API ecosystem including integration with the
|
|
identity management system, billing and monitoring systems.
|
|
|
|
2.2 Conceptual/Logical Architecture View
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
To use the Load Balancers API effectively, you should
|
|
understand several key concepts.
|
|
|
|
2.2.1 Load Balancer
|
|
^^^^^^^^^^^^^^^^^^^
|
|
|
|
A load balancer is a logical device. It is used to distribute workloads
|
|
between multiple back-end systems or services called 'nodes', based on
|
|
the criteria defined as part of its configuration.
|
|
|
|
2.2.2 Virtual IP
|
|
^^^^^^^^^^^^^^^^
|
|
|
|
A virtual IP is an Internet Protocol (IP) address configured on the load
|
|
balancer for use by clients connecting to a service that is load
|
|
balanced. Incoming connections and requests are distributed to back-end
|
|
nodes based on the configuration of the load balancer.
|
|
|
|
2.2.3 Node
|
|
^^^^^^^^^^
|
|
|
|
A node is a back-end device providing a service on a specified IP and
|
|
port.
|
|
|
|
The nodes defined by the load balancer are responsible for servicing the
|
|
requests received through the load balancers virtual IP. By default, the
|
|
load balancer employs a basic health check that ensures the node is
|
|
listening on its defined port. The node is checked at the time of
|
|
addition and at regular intervals as defined by the load balancer health
|
|
check configuration. If a back-end node is not listening on its port or
|
|
does not meet the conditions of the defined active health check for the
|
|
load balancer, then the loadbalancer will not forward connections or
|
|
requests to it and its status will be listed as OFFLINE. Only nodes that
|
|
are in an ONLINE status will receive and be able to service traffic from
|
|
the load balancer.
|
|
|
|
2.3 Infrastructure Architecture View
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
LBaaS fits into the ecosystem of APIs by utilizing the common
|
|
authentication mechanisms as any other services. In order to
|
|
use LBaaS, a user account must have activated "Load Balancer" service.
|
|
All API calls require require a valid authentication token.
|
|
|
|
3. Account-level View
|
|
---------------------
|
|
|
|
Once the account is activated, the LBaaS service will show up
|
|
in the service catelog returned during user login. In addition, LBaaS
|
|
endpoints to be used will also be presented. Availability zone
|
|
information may vary based on region.
|
|
|
|
3.1 Service Catalog
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
Once user authenticates using REST API, a service
|
|
catalog will list the availability of the LBaaS service, roles and
|
|
endpoints for the region you have logged into and in which you are
|
|
activated for.
|
|
|
|
*The following is an example of LBaaS service information within the
|
|
service catalog including roles and endpoints:*
|
|
|
|
::
|
|
|
|
"user": {
|
|
"id": "59267322167978",
|
|
"name": "lbaas_user",
|
|
"roles": [
|
|
{
|
|
"id": "83241756956007",
|
|
"serviceId": "220",
|
|
"name": "lbaas-user",
|
|
"tenantId": "11223344556677"
|
|
},
|
|
{
|
|
"id": "00000000004024",
|
|
"serviceId": "140",
|
|
"name": "user",
|
|
"tenantId": "11223344556677"
|
|
},
|
|
{
|
|
"id": "00000000004013",
|
|
"serviceId": "130",
|
|
"name": "block-admin",
|
|
"tenantId": "11223344556677"
|
|
}
|
|
]
|
|
},
|
|
"serviceCatalog": [
|
|
{
|
|
"name": "Identity",
|
|
"type": "identity",
|
|
"endpoints": [{
|
|
"publicURL": "https:\/\/usa.region-b.geo-1.identity.hpcloudsvc.com:35357\/v2.0\/",
|
|
"region": "region-b.geo-1",
|
|
"versionId": "2.0",
|
|
"versionInfo": "https:\/\/usa.region-b.geo-1.identity-internal.hpcloudsvc.com:35357\/v2.0\/"
|
|
}]
|
|
},
|
|
{
|
|
"name": "Load Balancer",
|
|
"type": "hpext:lbaas",
|
|
"endpoints": [{
|
|
"tenantId": "11223344556677",
|
|
"publicURL": "https:\/\/usa.region-b.geo-1.lbaas.hpcloudsvc.com\/v1.1",
|
|
"publicURL2": "",
|
|
"region": "region-b.geo-1",
|
|
"versionId": "1.1",
|
|
"versionInfo": "https:\/\/usa.region-b.geo-1.lbaas.hpcloudsvc.com\/v1.1",
|
|
"versionList": "https:\/\/usa.region-b.geo-1.lbaas.hpcloudsvc.com"
|
|
}]
|
|
}
|
|
]
|
|
|
|
4. General API Information
|
|
--------------------------
|
|
|
|
This section describes operations and guidelines that are common to all
|
|
LBaaS APIs.
|
|
|
|
4.1 Authentication
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The LBaaS API uses standard defined by OpenStack Keystone project and
|
|
used by the for authentication. Please refer to the
|
|
identity management system for more details on all authentication
|
|
methods currently supported.
|
|
|
|
4.2 Service Access/Endpoints
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
As shown in the example above, logging into your region will provide you
|
|
with the appropriate LBaaS endpoints to use. In addition, all supported
|
|
versions are published within the service catalog. A client may chose to
|
|
use any LBaaS API version listed.
|
|
|
|
4.3 Request/Response Types
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
The LBaaS API currently only supports JSON data serialization formats
|
|
for request and response bodies. The request format is specified using
|
|
the 'Content-Type' header and is required for operations that have a
|
|
request body. The response format should be specified in requests using
|
|
the 'Accept'header. If no response format is specified, JSON is the
|
|
default.
|
|
|
|
4.4 Persistent Connections
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
By default, the API supports persistent connections via HTTP/1.1
|
|
'keep-alive's. All connections will be kept alive unless the connection
|
|
header is set to close. In adherence with the IETF HTTP RFCs, the server
|
|
may close the connection at any time and clients should not rely on this
|
|
behavior.
|
|
|
|
4.5 Paginated Collections
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Some LBaaS APIs have the capability to return collections as a list of
|
|
many resources. To reduce load on the service, list operations will
|
|
return a maximum of 100 items at a time. To navigate the collection,
|
|
Openstack style 'limit' and 'marker' query parameters are utilized. For
|
|
example, '?limit=50&marker=1' can be set in the URI. If a marker beyond
|
|
the end of a list is given, an empty list is returned.
|
|
|
|
4.6 Absolute Limits
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
Absolute limits are limits which prohibit a user from creating too many
|
|
LBaaS resources. For example, 'maxNodesPerLoadbalancer' identifies the
|
|
total number of nodes that may be associated with a given load balancer.
|
|
Limits for a specific tenant may be queried for using the 'GET /limits'
|
|
API. This will return the limit values which apply to the tenant who
|
|
made the request.
|
|
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| Limited Resource | Description |
|
|
+=============================+============================================================+
|
|
| maxLoadBalancers | Maximum number of load balancers allowed for this tenant |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxNodesPerLoadBalancer | Maximum number of nodes allowed for each load balancer |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxLoadBalancerNameLength | Maximum length allowed for a load balancer name |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxVIPsPerLoadBalancer | Maximum number of Virtual IPs for each load balancer |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
|
|
4.7 Faults
|
|
~~~~~~~~~~
|
|
|
|
When issuing a LBaaS API request, it is possible that an error can
|
|
occur. In these cases, the system will return an HTTP error response
|
|
code denoting the type of error and a LBaaS response body with
|
|
additional details regarding the error. Specific HTTP status codes
|
|
possible are listed in each API definition.
|
|
|
|
*The following JSON message represents the JSON response body used for
|
|
all faults:*
|
|
|
|
::
|
|
|
|
{
|
|
"message":"Description of fault",
|
|
"details":"Details of fault",
|
|
"code": HTTP standard error status
|
|
}
|
|
|
|
4.8 Specifying Tenant IDs
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
Tenant identifiers with LBaaS API URIs are not required. The tenant
|
|
identifier is derived from the Openstack Keystone authentication token
|
|
provided with each API call. This simplifies the REST URIs to only
|
|
include the base URI and the resource. The tenant identifier is derived
|
|
from the authentication token which is provided wi the API call. All
|
|
LBaaS calls behave in this manner.
|
|
|
|
5. LBaaS API Resources and Methods
|
|
----------------------------------
|
|
|
|
The following is a summary of all supported LBaaS API resources and
|
|
methods. Each resource and method is defined in detail in the subsequent
|
|
sections.
|
|
|
|
**Derived resource identifiers:**
|
|
|
|
**{baseURI}** is the endpoint URI returned in the service catalog upon
|
|
logging in including the protocol, endpoint and base URI.
|
|
|
|
**{ver}** is the specific version URI returned as part of the service
|
|
catalog.
|
|
|
|
**{loadbalancerId}** is the unique identifier for a load balancer
|
|
returned by the LBaaS service.
|
|
|
|
**{nodeId}** is the unique identifier for a load balancer node returned
|
|
by the LBaaS service.
|
|
|
|
5.1 LBaaS API Summary Table
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+============================================================+==========+=================================================================+
|
|
| Versions | :ref:`Get list of all API versions <api-versions>` | GET | {baseURI}/ |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Versions | :ref:`Get specific API version <api-version>` | GET | {baseURI}/{ver} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Limits | :ref:`Get list of LBaaS limits <api-limits>` | GET | {baseURI}/{ver}/limits |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Protocols | :ref:`Get list of supported protocols <api-protocols>` | GET | {baseURI}/{ver}/protocols |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Algorithms | :ref:`Get list of supported algorithms <api-algorithms>` | GET | {baseURI}/{ver}/algorithms |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Load Balancer | :ref:`Get list of all load balancers <api-list>` | GET | {baseURI}/{ver}/loadbalancers |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Load Balancer | :ref:`Get load balancer details <api-status>` | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Load Balancer | :ref:`Create a new load balancer <api-create>` | POST | {baseURI}/{ver}/loadbalancers |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Load Balancer | :ref:`Update load balancer attributes <api-modify>` | PUT | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Load Balancer | :ref:`Delete an existing load balancer <api-delete>` | DELETE | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Node | :ref:`Get list of load balancer nodes <api-node-list>` | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Node | :ref:`Get a specific load balancer node <api-node-status>` | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Node | :ref:`Create a new load balancer node <api-node-create>` | POST | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Node | :ref:`Update a load balancer node <api-node-modify>` | PUT | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Node | :ref:`Delete a load balancer node <api-node-delete>` | DELETE | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Virtual IP | :ref:`Get list of virtual IPs <api-vips>` | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/virtualips |
|
|
+-----------------+------------------------------------------------------------+----------+-----------------------------------------------------------------+
|
|
|
|
5.2 Common Request Headers
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
*HTTP standard request headers*
|
|
|
|
**Accept** - Internet media types that are acceptable in the response.
|
|
LBaaS API supports the media type 'application/json'.
|
|
|
|
**Content-Length** - The length of the request body in octets (8-bit
|
|
bytes).
|
|
|
|
**Content-Type** - The Internet media type of the request body. Used
|
|
with POST and PUT requests. LBaaS API supports
|
|
'application/json'.
|
|
|
|
*Non-standard request headers*
|
|
|
|
**X-Auth-Token** - authorization token.
|
|
|
|
*Example*
|
|
|
|
::
|
|
|
|
GET /v1.0/loadbalancers HTTP/1.1
|
|
Host: system.hpcloudsvc.com
|
|
Content-Type: application/json
|
|
Accept: application/json
|
|
X-Auth-Token: TOKEN
|
|
Content-Length: 85
|
|
|
|
5.3 Common Response Headers
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
*HTTP standard response headers*
|
|
|
|
**Content-Type** - Internet media type of the response body.
|
|
|
|
**Date** - The date and time that the response was sent.
|
|
|
|
*Example*
|
|
|
|
::
|
|
|
|
HTTP/1.1 200 OK
|
|
Content-Length: 1135
|
|
Content-Type: application/json; charset=UTF-8
|
|
Date: Tue, 30 Oct 2012 16:22:35 GMT
|
|
|
|
.. _api-versions:
|
|
|
|
6. Get a List of All LBaaS API Versions Supported
|
|
-------------------------------------------------
|
|
|
|
6.1 Operation
|
|
~~~~~~~~~~~~~
|
|
|
|
+------------+--------------------------------+----------+--------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+================================+==========+==============+
|
|
| Versions | Get list of all API versions | GET | {baseURI}/ |
|
|
+------------+--------------------------------+----------+--------------+
|
|
|
|
6.2 Description
|
|
~~~~~~~~~~~~~~~
|
|
|
|
This method allows querying the LBaaS service for all supported versions
|
|
it supports. This method is also advertised within the Keystone service
|
|
catalog which is presented upon user login. All versions listed can be
|
|
used for LBaaS.
|
|
|
|
6.3 Request Data
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
6.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
6.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
6.6 Request Body
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
6.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
6.8 Response Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains a list of all supported versions of LBaaS.
|
|
|
|
6.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
6.10 Example
|
|
~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"versions": [
|
|
{
|
|
"id": "v1.1",
|
|
"links": [
|
|
{
|
|
"href": "http://api-docs.hpcloud.com",
|
|
"rel": "self"
|
|
}
|
|
],
|
|
"status": "CURRENT",
|
|
"updated": "2012-12-18T18:30:02.25Z"
|
|
}
|
|
]
|
|
}
|
|
|
|
.. _api-version:
|
|
|
|
7. Get Specific LBaaS API Version Information
|
|
---------------------------------------------
|
|
|
|
7.1 Operation
|
|
~~~~~~~~~~~~~
|
|
|
|
+------------+----------------------------+----------+-------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+============================+==========+===================+
|
|
| Versions | Get specific API version | GET | {baseURI}/{ver} |
|
|
+------------+----------------------------+----------+-------------------+
|
|
|
|
7.2 Description
|
|
~~~~~~~~~~~~~~~
|
|
|
|
This method allows querying the LBaaS service for information regarding
|
|
a specific version of the LBaaS API. This method is also advertised
|
|
within the Keystone service catalog which is presented upon user login.
|
|
|
|
7.3 Request Data
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
7.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
7.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
7.6 Request Body
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
7.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
7.8 Response Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains information regarding a specific LBaaS API
|
|
version.
|
|
|
|
7.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
7.10 Example
|
|
~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"version": {
|
|
"id": "v1.1",
|
|
"links": [
|
|
{
|
|
"href": "http://api-docs.hpcloud.com",
|
|
"rel": "self"
|
|
}
|
|
],
|
|
"media-types": [
|
|
{
|
|
"base": "application/json"
|
|
}
|
|
],
|
|
"status": "CURRENT",
|
|
"updated": "2012-12-18T18:30:02.25Z"
|
|
}
|
|
}
|
|
|
|
.. _api-limits:
|
|
|
|
8. Get List of LBaaS API Limits
|
|
-------------------------------
|
|
|
|
8.1 Operation
|
|
~~~~~~~~~~~~~
|
|
|
|
+------------+----------------------------+----------+--------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+============================+==========+==========================+
|
|
| Limits | Get list of LBaaS limits | GET | {baseURI}/{ver}/limits |
|
|
+------------+----------------------------+----------+--------------------------+
|
|
|
|
8.2 Description
|
|
~~~~~~~~~~~~~~~
|
|
|
|
This method allows querying the LBaaS service for a list of API limits
|
|
which apply on a tenant basis. Each tenant may not utilize LBaaS API
|
|
resources exceeding these limits and will receive and over limit error
|
|
if attempted (413).
|
|
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| Returned Limit Name | Value |
|
|
+=============================+============================================================+
|
|
| maxLoadBalancers | Maximum number of load balancers allowed for this tenant |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxNodesPerLoadBalancer | Maximum number of nodes allowed for each load balancer |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxLoadBalancerNameLength | Maximum length allowed for a load balancer name |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
| maxVIPsPerLoadBalancer | Maximum number of Virtual IPs for each load balancer |
|
|
+-----------------------------+------------------------------------------------------------+
|
|
|
|
8.3 Request Data
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
8.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
8.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
8.6 Request Body
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
8.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
8.8 Response Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains information regarding limits imposed for the
|
|
tenant making the request.
|
|
|
|
8.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
8.10 Example
|
|
~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/limits
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"limits": {
|
|
"absolute": {
|
|
"values": {
|
|
"maxLoadBalancerNameLength": 128,
|
|
"maxLoadBalancers": 20,
|
|
"maxNodesPerLoadBalancer": 5,
|
|
"maxVIPsPerLoadBalancer": 1
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.. _api-protocols:
|
|
|
|
9. Get List Of Supported LBaaS Protocols
|
|
----------------------------------------
|
|
|
|
9.1 Operation
|
|
~~~~~~~~~~~~~
|
|
|
|
+-------------+-----------------------------------+----------+-----------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=============+===================================+==========+=============================+
|
|
| Protocols | Get list of supported protocols | GET | {baseURI}/{ver}/protocols |
|
|
+-------------+-----------------------------------+----------+-----------------------------+
|
|
|
|
9.2 Description
|
|
~~~~~~~~~~~~~~~
|
|
|
|
All load balancers must be configured with the protocol of the service
|
|
which is being load balanced. The protocol selection should be based on
|
|
the protocol of the back-end nodes. The current specification supports
|
|
HTTP, HTTPS and TCP services.
|
|
|
|
When configuring an HTTP or HTTPS load balancer, the default port for
|
|
the given protocol will be selected unless otherwise specified. For TCP
|
|
load balancers, the port attribute must be provided.
|
|
|
|
9.3 Request Data
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
9.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
9.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
9.6 Request Body
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
9.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
9.8 Response Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the currently supported protocols and port
|
|
numbers.
|
|
|
|
9.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
9.10 Example
|
|
~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/protocols
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"protocols": [
|
|
{
|
|
"name": "HTTP",
|
|
"port": 80
|
|
},
|
|
{
|
|
"name": "TCP",
|
|
"port": 443
|
|
}
|
|
]
|
|
}
|
|
|
|
.. _api-algorithms:
|
|
|
|
10. Get List Of Supported LBaaS Algorithms
|
|
------------------------------------------
|
|
|
|
10.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+--------------+------------------------------------+----------+------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+==============+====================================+==========+==============================+
|
|
| Algorithms | Get list of supported algorithms | GET | {baseURI}/{ver}/algorithms |
|
|
+--------------+------------------------------------+----------+------------------------------+
|
|
|
|
10.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
All load balancers utilize an algorithm that defines how traffic should
|
|
be directed between back end nodes. The default algorithm for newly
|
|
created load balancers is ROUND\_ROBIN, which can be overridden at
|
|
creation time or changed after the load balancer has been initially
|
|
provisioned.
|
|
|
|
The algorithm name is to be constant within a major revision of the load
|
|
balancing API, though new algorithms may be created with a unique
|
|
algorithm name within a given major revision of this API.
|
|
|
|
**Supported Algorithms**
|
|
|
|
+----------------------+-------------------------------------------------------------------------+
|
|
| Name | Description |
|
|
+======================+=========================================================================+
|
|
| LEAST\_CONNECTIONS | The node with the lowest number of connections will receive requests. |
|
|
+----------------------+-------------------------------------------------------------------------+
|
|
| ROUND\_ROBIN | Connections are routed to each of the back-end servers in turn. |
|
|
+----------------------+-------------------------------------------------------------------------+
|
|
|
|
10.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
10.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
10.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
10.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
10.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
10.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the currently supported algorithms.
|
|
|
|
10.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
10.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/algorithms
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"algorithms": [
|
|
{
|
|
"name": "ROUND_ROBIN"
|
|
},
|
|
{
|
|
"name": "LEAST_CONNECTIONS"
|
|
}
|
|
]
|
|
}
|
|
|
|
.. _api-list:
|
|
|
|
11. Get List Of All Load Balancers
|
|
----------------------------------
|
|
|
|
11.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+-----------------+----------------------------------+----------+---------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+==================================+==========+=================================+
|
|
| Load Balancer | Get list of all load balancers | GET | {baseURI}/{ver}/loadbalancers |
|
|
+-----------------+----------------------------------+----------+---------------------------------+
|
|
|
|
11.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation provides a list of all load balancers configured and
|
|
associated with your account. This includes a summary of attributes for
|
|
each load balancer. In order to retrieve all the details for a load
|
|
balancer, an individual request for the load balancer must be made.
|
|
|
|
This operation returns the following attributes for each load balancer:
|
|
|
|
**id :** Unique identifier for the load balancer
|
|
|
|
**name :** Creator assigned name for the load balancer
|
|
|
|
**algorithm :** Creator specified algoriothm for the load balancer
|
|
|
|
**protocol :** Creator specified protocol for the load balancer
|
|
|
|
**port :** Creator specified port for the load balancer
|
|
|
|
**status :** Current status, see section on load balancer status within
|
|
load balancer create
|
|
|
|
**created :** When the load balancer was created
|
|
|
|
**updated :** When the load balancer was last updated
|
|
|
|
11.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
11.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
11.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
11.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
11.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
11.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains a list of load balancers for the tenant
|
|
making the request.
|
|
|
|
11.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
11.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"loadBalancers":[
|
|
{
|
|
"name":"lb-site1",
|
|
"id":"71",
|
|
"protocol":"HTTP",
|
|
"port":"80",
|
|
"algorithm":"LEAST_CONNECTIONS",
|
|
"status":"ACTIVE",
|
|
"created":"2010-11-30T03:23:42Z",
|
|
"updated":"2010-11-30T03:23:44Z"
|
|
},
|
|
{
|
|
"name":"lb-site2",
|
|
"id":"166",
|
|
"protocol":"TCP",
|
|
"port":"9123",
|
|
"algorithm":"ROUND_ROBIN",
|
|
"status":"ACTIVE",
|
|
"created":"2010-11-30T03:23:42Z",
|
|
"updated":"2010-11-30T03:23:44Z"
|
|
}
|
|
]
|
|
}
|
|
|
|
.. _api-status:
|
|
|
|
12. Get Load Balancer Details
|
|
-----------------------------
|
|
|
|
12.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+-----------------+--------------------------------+----------+--------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+================================+==========+==================================================+
|
|
| Load Balancer | Get a specific load balancer | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+--------------------------------+----------+--------------------------------------------------+
|
|
|
|
12.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation provides detailed description for a specific load
|
|
balancer configured and associated with your account. This operation is
|
|
not capable of returning details for a load balancer which has been
|
|
deleted. Details include load balancer virtual IP and node information.
|
|
|
|
12.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
12.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
12.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
12.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
12.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
12.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer requested or 404, if not
|
|
found.
|
|
|
|
12.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
12.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers/2000
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"id": "2000",
|
|
"name":"sample-loadbalancer",
|
|
"protocol":"HTTP",
|
|
"port": "80",
|
|
"algorithm":"ROUND_ROBIN",
|
|
"status":"ACTIVE",
|
|
"created":"2010-11-30T03:23:42Z",
|
|
"updated":"2010-11-30T03:23:44Z",
|
|
"virtualIps":[
|
|
{
|
|
"id": "1000",
|
|
"address":"192.168.1.1",
|
|
"type":"PUBLIC",
|
|
"ipVersion":"IPV4"
|
|
}
|
|
],
|
|
"nodes": [
|
|
{
|
|
"id": "1041",
|
|
"address":"10.1.1.1",
|
|
"port": "80",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE"
|
|
},
|
|
{
|
|
"id": "1411",
|
|
"address":"10.1.1.2",
|
|
"port": "80",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE"
|
|
}
|
|
],
|
|
}
|
|
|
|
.. _api-create:
|
|
|
|
13. Create a New Load Balancer
|
|
------------------------------
|
|
|
|
13.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+-----------------+------------------------------+----------+---------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+==============================+==========+=================================+
|
|
| Load Balancer | Create a new load balancer | POST | {baseURI}/{ver}/loadbalancers |
|
|
+-----------------+------------------------------+----------+---------------------------------+
|
|
|
|
13.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation provisions a new load balancer based on the configuration
|
|
defined in the request object. Once the request is validated and
|
|
progress has started on the provisioning process, a response object will
|
|
be returned. The object will contain a unique identifier and status of
|
|
the request.
|
|
|
|
If the status returned is set to 'BUILD', then using the identifier of
|
|
the load balancer, the caller can check on the progress of the creation
|
|
operation by performing a GET on loadbalancers/{loadbalancerId}. When
|
|
the status of the load balancer returned changes to 'ACTIVE', then the
|
|
load balancer has been successfully provisioned and is now operational.
|
|
|
|
**Load Balancer Status Values**
|
|
|
|
+-------------------+----------------------------------------------------------------+
|
|
| Status Name | Description |
|
|
+===================+================================================================+
|
|
| BUILD | Load balancer is in a building state and not yet operational |
|
|
+-------------------+----------------------------------------------------------------+
|
|
| ACTIVE | Load balancer is in an operational state |
|
|
+-------------------+----------------------------------------------------------------+
|
|
| PENDING\_UPDATE | Load balancer is in the process of an update |
|
|
+-------------------+----------------------------------------------------------------+
|
|
| ERROR | Load balancer is in an error state and not operational |
|
|
+-------------------+----------------------------------------------------------------+
|
|
|
|
The caller of this operation must specify at least the following
|
|
attributes of the load balancer:
|
|
|
|
\*name
|
|
|
|
\*At least one node
|
|
|
|
If the request cannot be fulfilled due to insufficient or invalid data,
|
|
an HTTP 400 (Bad Request) error response will be returned with
|
|
information regarding the nature of the failure in the body of the
|
|
response. Failures in the validation process are non-recoverable and
|
|
require the caller to correct the cause of the failure and POST the
|
|
request again.
|
|
|
|
By default, the system will create a loadbalancer with protocol set to
|
|
HTTP, port set to 80 (or 443 if protocol is HTTPS), and assign a public
|
|
IPV4 address to the loadbalancer. The default algorithm used is set to
|
|
ROUND\_ROBIN.
|
|
|
|
A load balancer name has a max length that can be queried when querying
|
|
limits.
|
|
|
|
Users may configure all documented features of the load balancer at
|
|
creation time by simply providing the additional elements or attributes
|
|
in the request. This document provides an overview of all the features
|
|
the load balancing service supports.
|
|
|
|
If you have at least one load balancer, you may create subsequent load
|
|
balancers that share a single virtual IP by issuing a POST and supplying
|
|
a virtual IP ID instead of a type. Additionally, this feature is highly
|
|
desirable if you wish to load balance both an unsecured and secure
|
|
protocol using one IP address. For example, this method makes it
|
|
possible to use the same load balancing configuration to support an HTTP
|
|
and an HTTPS load balancer. Load balancers sharing a virtual IP must
|
|
utilize a unique port.
|
|
|
|
13.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The caller is required to provide a request data with the POST which
|
|
includes the appropriate information to create a new load balancer.
|
|
|
|
13.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
13.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
- **X-Auth-Token**
|
|
- **Accept: application/json**
|
|
- **Content-Type: application/json**
|
|
|
|
13.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The request body must follow the correct format for new load balancer
|
|
creation, examples....
|
|
|
|
**Request body example to create a load balancer with two nodes**
|
|
|
|
::
|
|
|
|
{
|
|
"name": "a-new-loadbalancer",
|
|
"nodes": [
|
|
{
|
|
"address": "10.1.1.1",
|
|
"port": "80"
|
|
},
|
|
{
|
|
"address": "10.1.1.2",
|
|
"port": "81"
|
|
}
|
|
]
|
|
}
|
|
|
|
**Request body example to create a load balancer using existing load
|
|
balancer virtual IP**
|
|
|
|
::
|
|
|
|
{
|
|
"name":"a-new-loadbalancer",
|
|
"port":"83",
|
|
"protocol":"HTTP",
|
|
"virtualIps": [
|
|
{
|
|
"id":"39"
|
|
}
|
|
],
|
|
"nodes": [
|
|
{
|
|
"address":"10.1.1.1",
|
|
"port":"80",
|
|
"condition":"ENABLED"
|
|
}
|
|
]
|
|
}
|
|
|
|
13.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
13.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer requested or appropriate
|
|
error.
|
|
|
|
**Create Load Balancer (Required Attributes with Shared IP) Response:
|
|
JSON**
|
|
|
|
::
|
|
|
|
{
|
|
"name": "a-new-loadbalancer",
|
|
"id": "144",
|
|
"protocol": "HTTP",
|
|
"port": "83",
|
|
"algorithm": "ROUND_ROBIN",
|
|
"status": "BUILD",
|
|
"created": "2011-04-13T14:18:07Z",
|
|
"updated":"2011-04-13T14:18:07Z",
|
|
"virtualIps": [
|
|
{
|
|
"address": "3ffe:1900:4545:3:200:f8ff:fe21:67cf",
|
|
"id": "39",
|
|
"type": "PUBLIC",
|
|
"ipVersion": "IPV6"
|
|
}
|
|
],
|
|
"nodes": [
|
|
{
|
|
"address": "10.1.1.1",
|
|
"id": "653",
|
|
"port": "80",
|
|
"status": "ONLINE",
|
|
"condition": "ENABLED"
|
|
}
|
|
]
|
|
}
|
|
|
|
13.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+-----------------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+=======================+
|
|
| 400 | Bad Request |
|
|
+--------------------+-----------------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+-----------------------+
|
|
| 404 | Not Found |
|
|
+--------------------+-----------------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+-----------------------+
|
|
| 413 | Over Limit |
|
|
+--------------------+-----------------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+-----------------------+
|
|
| 503 | Service Unavailable |
|
|
+--------------------+-----------------------+
|
|
|
|
13.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Contents of Request file lb.json**
|
|
|
|
::
|
|
|
|
{
|
|
"name": "lb #1",
|
|
"protocol":"tcp",
|
|
"nodes": [
|
|
{
|
|
"address": "15.185.229.153",
|
|
"port": "443"
|
|
},
|
|
{
|
|
"address": "15.185.226.163",
|
|
"port": "443"
|
|
},
|
|
],
|
|
}
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -X POST -H "X-Auth-Token: TOKEN" --data-binary "@lb.json" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"port":"443",
|
|
"id":"10",
|
|
"protocol":"tcp",
|
|
"updated":"2013-02-10T18:20Z",
|
|
"created":"2013-02-10T18:20Z",
|
|
"status":"BUILD",
|
|
"nodes":[
|
|
{
|
|
"port":"443",
|
|
"id":"19",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE",
|
|
"address":"15.185.229.153"
|
|
},
|
|
{
|
|
"port":"443",
|
|
"id":"20",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE",
|
|
"address":"15.185.226.163"
|
|
}
|
|
],
|
|
"name":"lb #1",
|
|
"virtualIps":[
|
|
{
|
|
"id":"5",
|
|
"address":"15.185.96.125",
|
|
"ipVersion":"IPV_4",
|
|
"type":"PUBLIC"
|
|
}
|
|
],
|
|
"algorithm":"ROUND_ROBIN"
|
|
}
|
|
|
|
.. _api-modify:
|
|
|
|
14. Update An Existing Load Balancer
|
|
------------------------------------
|
|
|
|
14.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+-----------------+-----------------------------------+----------+--------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+===================================+==========+==================================================+
|
|
| Load Balancer | Update load balancer attributes | PUT | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+-----------------------------------+----------+--------------------------------------------------+
|
|
|
|
14.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation updates the attributes of the specified load balancer.
|
|
Upon successful validation of the request, the service will return a 202
|
|
(Accepted) response code. A caller should check that the load balancer
|
|
status is ACTIVE to confirm that the update has taken effect. If the
|
|
load balancer status is 'PENDING\_UPDATE' then the caller can poll the
|
|
load balancer with its ID (using a GET operation) to wait for the
|
|
changes to be applied and the load balancer to return to an ACTIVE
|
|
status.
|
|
|
|
This operation allows the caller to change one or more of the following
|
|
attributes:
|
|
|
|
\*name
|
|
|
|
\*algorithm
|
|
|
|
This operation does not return a response body.
|
|
|
|
Note, The load balancer ID, status, port and protocol are immutable
|
|
attributes and cannot be modified by the caller. Supplying an
|
|
unsupported attribute will result in a 400 (badRequest) fault.
|
|
|
|
14.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
Load balancer body with attributes to be updated.
|
|
|
|
14.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
14.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
14.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
**Example**
|
|
|
|
::
|
|
|
|
{
|
|
"name": "newname-loadbalancer",
|
|
"algorithm": "LEAST_CONNECTIONS"
|
|
}
|
|
|
|
14.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
14.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
None.
|
|
|
|
14.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
14.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Contents of Request file lb.json**
|
|
|
|
::
|
|
|
|
{
|
|
"name": "newname-loadbalancer",
|
|
"algorithm": "LEAST_CONNECTIONS"
|
|
}
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -X PUT -H "X-Auth-Token: TOKEN" --data-binary "@lb.json" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalance/100
|
|
|
|
**Response**
|
|
|
|
202 status with no response body.
|
|
|
|
.. _api-delete:
|
|
|
|
15. Delete Load Balancer
|
|
------------------------
|
|
|
|
15.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+-----------------+------------------------------------+----------+--------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+=================+====================================+==========+==================================================+
|
|
| Load Balancer | Delete an existing load balancer | DELETE | {baseURI}/{ver}/loadbalancers/{loadbalancerId} |
|
|
+-----------------+------------------------------------+----------+--------------------------------------------------+
|
|
|
|
15.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Delete load balancer removes the specified load balancer and its
|
|
associated configuration from the account. Any and all configuration
|
|
data is immediately purged and is not recoverable.
|
|
|
|
This operation does not require a request body.
|
|
|
|
15.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
15.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
15.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
15.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
15.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
15.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
None.
|
|
|
|
15.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
15.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Example**
|
|
|
|
::
|
|
|
|
curl -X DELETE -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalance/100
|
|
|
|
**Response**
|
|
|
|
202 status with no response body.
|
|
|
|
.. _api-node-list:
|
|
|
|
16. List All Load Balancer Nodes
|
|
--------------------------------
|
|
|
|
16.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+------------+-----------------------------------+----------+--------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+===================================+==========+========================================================+
|
|
| Node | Get list of load balancer nodes | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes |
|
|
+------------+-----------------------------------+----------+--------------------------------------------------------+
|
|
|
|
16.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
List all nodes for a specified load balancer.
|
|
|
|
16.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
16.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
16.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
16.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
16.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
16.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer nodes requested or 404, if
|
|
not found.
|
|
|
|
16.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
16.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Example**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalance/100/nodes
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"nodes" : [
|
|
{
|
|
"id":"410",
|
|
"address":"10.1.1.1",
|
|
"port":"80",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE"
|
|
},
|
|
{
|
|
"id":"236",
|
|
"address":"10.1.1.2",
|
|
"port":"80",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE"
|
|
},
|
|
{
|
|
"id":"2815",
|
|
"address":"10.1.1.3",
|
|
"port":"83",
|
|
"condition":"DISABLED",
|
|
"status":"OFFLINE"
|
|
},
|
|
]
|
|
}
|
|
|
|
.. _api-node-status:
|
|
|
|
17. Get Load Balancer Node
|
|
--------------------------
|
|
|
|
17.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+------------+-------------------------------------+----------+-----------------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+=====================================+==========+=================================================================+
|
|
| Node | Get a specific load balancer node | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+------------+-------------------------------------+----------+-----------------------------------------------------------------+
|
|
|
|
17.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation retrieves the configuration of a node.
|
|
|
|
17.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
17.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
17.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
17.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
17.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
17.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer node requested or 404, if
|
|
not found.
|
|
|
|
17.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
17.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Example**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalance/100/nodes/410
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"id":"410",
|
|
"address":"10.1.1.2",
|
|
"port":"80",
|
|
"condition":"ENABLED",
|
|
"status":"ONLINE"
|
|
}
|
|
|
|
.. _api-node-create:
|
|
|
|
18. Create Load Balancer Node
|
|
-----------------------------
|
|
|
|
18.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+------------+-----------------------------------+----------+--------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+===================================+==========+========================================================+
|
|
| Node | Create a new load balancer node | POST | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes |
|
|
+------------+-----------------------------------+----------+--------------------------------------------------------+
|
|
|
|
18.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Add a new node to any existing loadbalancer. When a node is added, it is
|
|
assigned a unique identifier that can be used for mutating operations
|
|
such as changing the condition, or removing the node from the load
|
|
balancer. When a node is added to a load balancer, it is enabled by
|
|
default.
|
|
|
|
18.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The request must contain information regarding the new node to be added.
|
|
More than one node can be added at a time.
|
|
|
|
18.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
18.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
18.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The request body defines the attributes of the new node to be created.
|
|
|
|
18.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
18.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer requested or 404, if not
|
|
found.
|
|
|
|
18.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 413 | Over Limit |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
18.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Contents of Request file nodes.json**
|
|
|
|
::
|
|
|
|
{
|
|
"nodes": [
|
|
{
|
|
"address": "10.1.1.1",
|
|
"port": "80"
|
|
},
|
|
{
|
|
"address": "10.2.2.1",
|
|
"port": "80"
|
|
},
|
|
{
|
|
"address": "10.2.2.2",
|
|
"port": "88",
|
|
"condition": "DISABLED"
|
|
}
|
|
]
|
|
}
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -X POST -H "X-Auth-Token: TOKEN" --data-binary "@nodes.json" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers/100/nodes
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"nodes": [
|
|
{
|
|
"id": "7298",
|
|
"address": "10.1.1.1",
|
|
"port": "80",
|
|
"condition": "ENABLED",
|
|
"status": "ONLINE"
|
|
},
|
|
{
|
|
"id": "293",
|
|
"address": "10.2.2.1",
|
|
"port": "80",
|
|
"condition": "ENABLED",
|
|
"status": "OFFLINE"
|
|
},
|
|
{
|
|
"id": "183",
|
|
"address": "10.2.2.2",
|
|
"port": "88",
|
|
"condition": "DISABLED",
|
|
"status": "OFFLINE"
|
|
}
|
|
]
|
|
}
|
|
|
|
.. _api-node-modify:
|
|
|
|
19. Update Load Balancer Node Condition
|
|
---------------------------------------
|
|
|
|
19.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+------------+-------------------------------+----------+-----------------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+===============================+==========+=================================================================+
|
|
| Node | Update a load balancer node | PUT | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+------------+-------------------------------+----------+-----------------------------------------------------------------+
|
|
|
|
19.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Every node in the load balancer is either enabled or disabled which
|
|
determines its role within the load balancer. When the node has
|
|
condition='ENABLED' the node is permitted to accept new connections. Its
|
|
status will eventually become 'ONLINE' to reflect this configuration.
|
|
When the node has condition='DISABLED' the node is not permitted to
|
|
accept any new connections. Existing connections to the node are
|
|
forcibly terminated. The nodes status changes to OFFLINE once the
|
|
configuration has been successfully applied.
|
|
|
|
The node IP and port are immutable attributes and cannot be modified
|
|
with a PUT request. Supplying an unsupported attribute will result in a
|
|
400 fault. A load balancer supports a maximum number of nodes. The
|
|
maximum number of nodes per loadbalancer is returned when querying the
|
|
limits of the LB service.
|
|
|
|
19.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
Request data includes the desired condition of the node.
|
|
|
|
19.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
19.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
19.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
The request body includes the node 'condition' attribute and its desired
|
|
state.
|
|
|
|
19.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
19.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
None.
|
|
|
|
19.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
19.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Contents of Request file node.json**
|
|
|
|
::
|
|
|
|
{
|
|
"condition": "DISABLED"
|
|
}
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -X PUT -H "X-Auth-Token: TOKEN" --data-binary "@node.json" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers/100/nodes/100
|
|
|
|
**Response**
|
|
|
|
202 status with no response body.
|
|
|
|
.. _api-node-delete:
|
|
|
|
20. Delete Load Balancer Node
|
|
-----------------------------
|
|
|
|
20.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+------------+-------------------------------+----------+-----------------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+============+===============================+==========+=================================================================+
|
|
| Node | Delete a load balancer node | DELETE | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/nodes/{nodeId} |
|
|
+------------+-------------------------------+----------+-----------------------------------------------------------------+
|
|
|
|
20.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
Delete node for a load balancer. Note, A load balancer must have at
|
|
least one node. Attempting to remove the last node of a loadbalancer
|
|
will result in a 401 error.
|
|
|
|
20.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
20.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
20.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
20.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
20.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 202 | Accepted |
|
|
+--------------------+---------------+
|
|
|
|
20.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
None.
|
|
|
|
20.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
20.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -X DELETE -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers/100/nodes/100
|
|
|
|
**Response**
|
|
|
|
202 status with no response body.
|
|
|
|
.. _api-vips:
|
|
|
|
21. Get List of Virtual IPs
|
|
---------------------------
|
|
|
|
21.1 Operation
|
|
~~~~~~~~~~~~~~
|
|
|
|
+--------------+---------------------------+----------+-------------------------------------------------------------+
|
|
| Resource | Operation | Method | Path |
|
|
+==============+===========================+==========+=============================================================+
|
|
| Virtual IP | Get list of virtual IPs | GET | {baseURI}/{ver}/loadbalancers/{loadbalancerId}/virtualips |
|
|
+--------------+---------------------------+----------+-------------------------------------------------------------+
|
|
|
|
21.2 Description
|
|
~~~~~~~~~~~~~~~~
|
|
|
|
This operation lists all the virtual IP addresses of a load balancer.The
|
|
maximum number of VIPs that can be configured when creating a load
|
|
balancer can be discovered by querying the limits of the LB service.
|
|
|
|
21.3 Request Data
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
21.4 Query Parameters Supported
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
21.5 Required HTTP Header Values
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
**X-Auth-Token**
|
|
|
|
21.6 Request Body
|
|
~~~~~~~~~~~~~~~~~
|
|
|
|
None required.
|
|
|
|
21.7 Normal Response Code
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+---------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+===============+
|
|
| 200 | OK |
|
|
+--------------------+---------------+
|
|
|
|
21.8 Response Body
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
The response body contains the load balancer VIP list requested or 404,
|
|
if not found.
|
|
|
|
21.9 Error Response Codes
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
+--------------------+----------------+
|
|
| HTTP Status Code | Description |
|
|
+====================+================+
|
|
| 400 | Bad Request |
|
|
+--------------------+----------------+
|
|
| 401 | Unauthorized |
|
|
+--------------------+----------------+
|
|
| 404 | Not Found |
|
|
+--------------------+----------------+
|
|
| 405 | Not Allowed |
|
|
+--------------------+----------------+
|
|
| 500 | LBaaS Fault |
|
|
+--------------------+----------------+
|
|
|
|
21.10 Example
|
|
~~~~~~~~~~~~~
|
|
|
|
**Curl Request**
|
|
|
|
::
|
|
|
|
curl -H "X-Auth-Token: TOKEN" https://uswest.region-b.geo-1.lbaas.hpcloudsvc.com/v1.1/loadbalancers/100/virtualips
|
|
|
|
**Response**
|
|
|
|
::
|
|
|
|
{
|
|
"virtualIps": [
|
|
{
|
|
"id": "1021",
|
|
"address": "206.10.10.210",
|
|
"type": "PUBLIC",
|
|
"ipVersion": "IPV4"
|
|
}
|
|
]
|
|
}
|
|
|
|
Features Currently Not Implemented or Supported
|
|
-----------------------------------------------
|
|
|
|
The following features are not supported.
|
|
|
|
1. IPV6 address types are not supported.
|
|
|
|
2. HTTPS protocol for load balancers are not supported. It is not
|
|
advertised in /protocols request. Instead TCP will be used for port 443
|
|
and the HTTPS connections will be passed through the load balancer with no
|
|
termination at the load balancer.
|
|
|
|
3. The ability to list deleted load balancers is yet not supported.
|
|
|
|
|