d9ee63f561
User can specify additional subnet_id/ip_address pairs to bring up on the VIP port. This will allow for situations like having an LB with both IPv4+IPv6 or being exposed on both public and a private network. For UDP/SCTP loadbalancers, mixing IPv4 VIP and IPv6 members is not supported (IPv6 VIP and IPv4 members as well). It's still possible to use IPv4 and IPv6 VIPs at the same time in the same loadbalancer but an IPv4 VIP can only communicate with IPv4 members. Thanks Michael for help with validating/fixing the templates! Thanks Gregory for help with the centos networking! Co-Authored-By: Michael Johnson <johnsomor@gmail.com> Co-Authored-By: Gregory Thiemonge <gthiemon@redhat.com> Co-Authored-By: Brian Haley <haleyb.dev@gmail.com> Story: 2005608 Task: 30847 Change-Id: Id7153dbf33b9616d7af685fcf13ad9a79793c06b
634 lines
16 KiB
ReStructuredText
634 lines
16 KiB
ReStructuredText
.. -*- rst -*-
|
|
|
|
List Load Balancers
|
|
===================
|
|
|
|
.. rest_method:: GET /v2/lbaas/loadbalancers
|
|
|
|
Lists all load balancers for the project.
|
|
|
|
Use the ``fields`` query parameter to control which fields are
|
|
returned in the response body. Additionally, you can filter results
|
|
by using query string parameters. For information, see :ref:`filtering`.
|
|
|
|
Administrative users can specify a project ID that is different than their own
|
|
to list load balancers for other projects.
|
|
|
|
The list might be empty.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 200
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 400
|
|
- 401
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- fields: fields
|
|
- project_id: project_id_query
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancers-list-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- additional_vips: additional_vips
|
|
- admin_state_up: admin_state_up
|
|
- availability_zone: availability-zone-name
|
|
- created_at: created_at
|
|
- description: description
|
|
- flavor_id: flavor-id
|
|
- id: loadbalancer-id
|
|
- listeners: listeners
|
|
- loadbalancers: loadbalancers
|
|
- name: name
|
|
- operating_status: operating_status
|
|
- pools: pools_ids
|
|
- project_id: project_id
|
|
- provider: provider
|
|
- provisioning_status: provisioning_status
|
|
- tags: tags
|
|
- updated_at: updated_at
|
|
- vip_address: vip_address
|
|
- vip_network_id: vip_network_id
|
|
- vip_port_id: vip_port_id
|
|
- vip_qos_policy_id: vip_qos_policy_id
|
|
- vip_subnet_id: vip_subnet_id
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancers-list-response.json
|
|
:language: javascript
|
|
|
|
Create a Load Balancer
|
|
======================
|
|
|
|
.. rest_method:: POST /v2/lbaas/loadbalancers
|
|
|
|
Creates a load balancer.
|
|
|
|
This operation provisions a new load balancer by using the
|
|
configuration that you define in the request object. After the API
|
|
validates the request and starts the provisioning process, the API
|
|
returns a response object that contains a unique ID and the status
|
|
of provisioning the load balancer.
|
|
|
|
In the response, the load balancer :ref:`provisioning status<prov_status>` is
|
|
``ACTIVE``, ``PENDING_CREATE``, or ``ERROR``.
|
|
|
|
If the status is ``PENDING_CREATE``, issue GET
|
|
``/v2/lbaas/loadbalancers/{loadbalancer_id}`` to view the progress of
|
|
the provisioning operation. When the load balancer status changes
|
|
to ``ACTIVE``, the load balancer is successfully provisioned and
|
|
is ready for further configuration.
|
|
|
|
If the API cannot fulfill the request due to insufficient data or
|
|
data that is not valid, the service returns the HTTP ``Bad Request
|
|
(400)`` response code with information about the failure in the
|
|
response body. Validation errors require that you correct the error
|
|
and submit the request again.
|
|
|
|
Administrative users can specify a project ID that is different than
|
|
their own to create load balancers for other projects.
|
|
|
|
An optional ``flavor_id`` attribute can be used to create the load balancer
|
|
using a pre-configured octavia flavor. Flavors are created by the operator
|
|
to allow custom load balancer configurations, such as allocating more
|
|
memory for the load balancer.
|
|
|
|
An optional ``vip_qos_policy_id`` attribute from Neutron can be used to
|
|
apply QoS policies on a loadbalancer VIP, also could pass a 'null' value to
|
|
remove QoS policies.
|
|
|
|
You can also specify the ``provider`` attribute when you create a
|
|
load balancer. The ``provider`` attribute specifies which backend should
|
|
be used to create the load balancer. This could be the default provider
|
|
(``octavia``) or a vendor supplied ``provider`` if one has been installed.
|
|
Setting both a flavor_id and a provider will result in a conflict error if
|
|
the provider does not match the provider of the configured flavor profiles.
|
|
|
|
Specifying a Virtual IP (VIP) is mandatory. There are three ways to specify
|
|
a VIP network for the load balancer:
|
|
|
|
1. Provide a ``vip_port_id``.
|
|
|
|
Providing a neutron port ID for the ``vip_port_id`` tells
|
|
octavia to use this port for the VIP. Some port settings may be changed or
|
|
removed as required by octavia, but the IP address will be retained. If the
|
|
port has more than one subnet you must specify either the ``vip_subnet_id``
|
|
or ``vip_address`` to clarify which address should be used for the VIP.
|
|
|
|
2. Provide a ``vip_network_id``.
|
|
|
|
When a ``vip_network_ip`` is specified, unless neither ``vip_subnet_id``
|
|
nor ``vip_address`` is specified, octavia will select a subnet from
|
|
the network, preferring IPv4 over IPv6 subnets.
|
|
|
|
3. Provide a ``vip_subnet_id``.
|
|
|
|
Specifying a neutron subnet ID will tell octavia to create a neutron port
|
|
on this subnet and allocate an IP address from the subnet if the
|
|
``vip_address`` was not specified. If ``vip_address`` was specified,
|
|
octavia will attempt to allocate the ``vip_address`` from the subnet for
|
|
the VIP address.
|
|
|
|
Additional VIPs may also be specified in the ``additional_vips`` field, by
|
|
providing a list of JSON objects containing a ``subnet_id`` and optionally
|
|
an ``ip_address``. All additional subnets must be part of the same network
|
|
as the primary VIP.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 201
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 400
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 500
|
|
- 503
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- additional_vips: additional_vips
|
|
- admin_state_up: admin_state_up-default-optional
|
|
- availability_zone: availability-zone-name-optional
|
|
- description: description-optional
|
|
- flavor_id: flavor-id-optional
|
|
- listeners: listeners-optional
|
|
- loadbalancer: loadbalancer
|
|
- name: name-optional
|
|
- project_id: project_id-optional
|
|
- provider: provider-optional
|
|
- tags: tags-optional
|
|
- vip_address: vip_address-optional
|
|
- vip_network_id: vip_network_id-optional
|
|
- vip_port_id: vip_port_id-optional
|
|
- vip_qos_policy_id: vip_qos_policy_id-optional
|
|
- vip_subnet_id: vip_subnet_id-optional
|
|
|
|
Request Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-create-request.json
|
|
:language: javascript
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-create-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- additional_vips: additional_vips
|
|
- admin_state_up: admin_state_up
|
|
- availability_zone: availability-zone-name
|
|
- created_at: created_at
|
|
- description: description
|
|
- flavor_id: flavor-id
|
|
- id: loadbalancer-id
|
|
- listeners: listeners
|
|
- loadbalancer: loadbalancer
|
|
- name: name
|
|
- operating_status: operating_status
|
|
- pools: pools_ids
|
|
- project_id: project_id
|
|
- provider: provider
|
|
- provisioning_status: provisioning_status
|
|
- tags: tags
|
|
- updated_at: updated_at
|
|
- vip_address: vip_address
|
|
- vip_network_id: vip_network_id
|
|
- vip_port_id: vip_port_id
|
|
- vip_qos_policy_id: vip_qos_policy_id
|
|
- vip_subnet_id: vip_subnet_id
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-create-response.json
|
|
:language: javascript
|
|
|
|
Creating a Fully Populated Load Balancer
|
|
----------------------------------------
|
|
|
|
You can configure all documented features of the load balancer at
|
|
creation time by specifying the additional elements or attributes
|
|
in the request.
|
|
|
|
Note: all pools must have names, and must only be fully defined once. To
|
|
reference a pool from multiple objects, supply the pool name only for all
|
|
subsequent references.
|
|
|
|
Request Example
|
|
---------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-full-create-request.json
|
|
:language: javascript
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-full-create-response.json
|
|
:language: javascript
|
|
|
|
Show Load Balancer details
|
|
==========================
|
|
|
|
.. rest_method:: GET /v2/lbaas/loadbalancers/{loadbalancer_id}
|
|
|
|
Shows the details of a load balancer.
|
|
|
|
If you are not an administrative user and the load balancer object does not
|
|
belong to your project, the service returns the HTTP ``Forbidden (403)``
|
|
response code.
|
|
|
|
This operation does not require a request body.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 200
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- fields: fields
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-show-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- additional_vips: additional_vips
|
|
- admin_state_up: admin_state_up
|
|
- availability_zone: availability-zone-name
|
|
- created_at: created_at
|
|
- description: description
|
|
- flavor_id: flavor-id
|
|
- id: loadbalancer-id
|
|
- loadbalancer: loadbalancer
|
|
- listeners: listeners
|
|
- name: name
|
|
- operating_status: operating_status
|
|
- pools: pools_ids
|
|
- project_id: project_id
|
|
- provider: provider
|
|
- provisioning_status: provisioning_status
|
|
- tags: tags
|
|
- updated_at: updated_at
|
|
- vip_address: vip_address
|
|
- vip_network_id: vip_network_id
|
|
- vip_port_id: vip_port_id
|
|
- vip_qos_policy_id: vip_qos_policy_id
|
|
- vip_subnet_id: vip_subnet_id
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-show-response.json
|
|
:language: javascript
|
|
|
|
Update a Load Balancer
|
|
======================
|
|
|
|
.. rest_method:: PUT /v2/lbaas/loadbalancers/{loadbalancer_id}
|
|
|
|
Updates a load balancer.
|
|
|
|
If the request is valid, the service returns the ``Accepted (202)``
|
|
response code. To confirm the update, check that the load balancer
|
|
provisioning status is ``ACTIVE``. If the status is
|
|
``PENDING_UPDATE``, use a GET operation to poll the load balancer
|
|
object for changes.
|
|
|
|
This operation returns the updated load balancer object with the
|
|
``ACTIVE``, ``PENDING_UPDATE``, or ``ERROR`` provisioning status.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 202
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 400
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 409
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- admin_state_up: admin_state_up-optional
|
|
- description: description-optional
|
|
- loadbalancer: loadbalancer
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
- name: name-optional
|
|
- tags: tags-optional
|
|
- vip_qos_policy_id: vip_qos_policy_id-optional
|
|
|
|
Request Example
|
|
---------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-update-request.json
|
|
:language: javascript
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-update-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- additional_vips: additional_vips
|
|
- admin_state_up: admin_state_up
|
|
- created_at: created_at
|
|
- description: description
|
|
- flavor_id: flavor-id
|
|
- id: loadbalancer-id
|
|
- listeners: listeners
|
|
- loadbalancer: loadbalancer
|
|
- name: name
|
|
- operating_status: operating_status
|
|
- pools: pools_ids
|
|
- project_id: project_id
|
|
- provider: provider
|
|
- provisioning_status: provisioning_status
|
|
- tags: tags
|
|
- updated_at: updated_at
|
|
- vip_address: vip_address
|
|
- vip_network_id: vip_network_id
|
|
- vip_port_id: vip_port_id
|
|
- vip_qos_policy_id: vip_qos_policy_id
|
|
- vip_subnet_id: vip_subnet_id
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-update-response.json
|
|
:language: javascript
|
|
|
|
Remove a Load Balancer
|
|
======================
|
|
|
|
.. rest_method:: DELETE /v2/lbaas/loadbalancers/{loadbalancer_id}
|
|
|
|
Removes a load balancer and its associated configuration from the project.
|
|
|
|
The optional parameter ``cascade`` when defined as ``true`` will delete all
|
|
child objects of the load balancer.
|
|
|
|
The API immediately purges any and all configuration data, depending on the
|
|
configuration settings. You cannot recover it.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 204
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 400
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 409
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- cascade: cascade-delete
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-delete-curl
|
|
:language: bash
|
|
|
|
Response
|
|
--------
|
|
|
|
There is no body content for the response of a successful DELETE request.
|
|
|
|
Get Load Balancer statistics
|
|
============================
|
|
|
|
.. rest_method:: GET /v2/lbaas/loadbalancers/{loadbalancer_id}/stats
|
|
|
|
Shows the current statistics for a load balancer.
|
|
|
|
This operation returns the statistics of a load balancer object identified
|
|
by loadbalancer_id.
|
|
|
|
If you are not an administrative user and the load balancer object does not
|
|
belong to your project, the service returns the HTTP ``Forbidden (403)``
|
|
response code.
|
|
|
|
This operation does not require a request body.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 200
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-stats-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- stats: stats
|
|
- active_connections: active_connections
|
|
- bytes_in: bytes_in
|
|
- bytes_out: bytes_out
|
|
- request_errors: request_errors
|
|
- total_connections: total_connections
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-stats-response.json
|
|
:language: javascript
|
|
|
|
Get the Load Balancer status tree
|
|
=================================
|
|
|
|
.. rest_method:: GET /v2/lbaas/loadbalancers/{loadbalancer_id}/status
|
|
|
|
Shows the status tree for a load balancer.
|
|
|
|
This operation returns a status tree for a load balancer object, by load
|
|
balancer ID.
|
|
|
|
``provisioning_status`` is the status associated with lifecycle of the resource.
|
|
See :ref:`prov_status` for descriptions of the status codes.
|
|
|
|
``operating_status`` is the observed status of the resource.
|
|
See :ref:`op_status` for descriptions of the status codes.
|
|
|
|
If you are not an administrative user and the load balancer object does not
|
|
belong to your project, the service returns the HTTP ``Forbidden (403)``
|
|
response code.
|
|
|
|
If the operation succeeds, the returned element is a status tree that contains
|
|
the load balancer and all provisioning and operating statuses for its children.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 200
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-status-curl
|
|
:language: bash
|
|
|
|
Response Parameters
|
|
-------------------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- action: action
|
|
- address: address
|
|
- healthmonitor: healthmonitor-status
|
|
- id: id
|
|
- l7policies: l7policies-status-object-list
|
|
- l7rules: l7rules-status-object-list
|
|
- listeners: listeners-status-object-list
|
|
- loadbalancer: loadbalancer-status
|
|
- members: members-status-object-list
|
|
- name: name
|
|
- operating_status: operating_status
|
|
- pools: pools-status-list
|
|
- protocol_port: protocol_port
|
|
- provisioning_status: provisioning_status
|
|
- statuses: statuses
|
|
- type: type
|
|
|
|
Response Example
|
|
----------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-status-response.json
|
|
:language: javascript
|
|
|
|
Failover a load balancer
|
|
========================
|
|
|
|
.. rest_method:: PUT /v2/lbaas/loadbalancers/{loadbalancer_id}/failover
|
|
|
|
Performs a failover of a load balancer.
|
|
|
|
This operation is only available to users with load balancer administrative
|
|
rights.
|
|
|
|
.. rest_status_code:: success ../http-status.yaml
|
|
|
|
- 202
|
|
|
|
.. rest_status_code:: error ../http-status.yaml
|
|
|
|
- 401
|
|
- 403
|
|
- 404
|
|
- 409
|
|
- 500
|
|
|
|
Request
|
|
-------
|
|
|
|
.. rest_parameters:: ../parameters.yaml
|
|
|
|
- loadbalancer_id: path-loadbalancer-id
|
|
|
|
Curl Example
|
|
------------
|
|
|
|
.. literalinclude:: examples/loadbalancer-failover-curl
|
|
:language: bash
|
|
|
|
Response
|
|
--------
|
|
|
|
There is no body content for the response of a successful failover request.
|