b51a471b55
Remove extra whitespace like whitespace at end of line or before a closing </para>. Also, change tabs to spaces. Change-Id: I43d5418cc6c21736a29921e88774cdfdadc09b28
1894 lines
76 KiB
XML
1894 lines
76 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE section [
|
|
<!-- Some useful entities borrowed from HTML -->
|
|
<!ENTITY ndash "–">
|
|
<!ENTITY mdash "—">
|
|
<!ENTITY hellip "…">
|
|
<!ENTITY plusmn "±">
|
|
|
|
<!-- Useful for describing APIs -->
|
|
<!ENTITY GET '<command xmlns="http://docbook.org/ns/docbook">GET</command>'>
|
|
<!ENTITY PUT '<command xmlns="http://docbook.org/ns/docbook">PUT</command>'>
|
|
<!ENTITY POST '<command xmlns="http://docbook.org/ns/docbook">POST</command>'>
|
|
<!ENTITY DELETE '<command xmlns="http://docbook.org/ns/docbook">DELETE</command>'>
|
|
|
|
<!ENTITY CHECK '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
|
|
<imageobject>
|
|
<imagedata fileref="figures/Check_mark_23x20_02.svg"
|
|
format="SVG" scale="60"/>
|
|
</imageobject>
|
|
</inlinemediaobject>'>
|
|
|
|
<!ENTITY ARROW '<inlinemediaobject xmlns="http://docbook.org/ns/docbook">
|
|
<imageobject>
|
|
<imagedata fileref="figures/Arrow_east.svg"
|
|
format="SVG" scale="60"/>
|
|
</imageobject>
|
|
</inlinemediaobject>'>
|
|
]>
|
|
<section xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xmlns:svg="http://www.w3.org/2000/svg"
|
|
xmlns:m="http://www.w3.org/1998/Math/MathML"
|
|
xmlns:html="http://www.w3.org/1999/xhtml"
|
|
xmlns:db="http://docbook.org/ns/docbook" version="5.0"
|
|
status="final" xml:id="lbaas_ext">
|
|
|
|
<title>The Load Balancer as a Service (LBaaS) Extension</title>
|
|
<para>The LBaaS extension provides OpenStack tenants
|
|
with a feature of balancing traffic to their VMs.
|
|
|
|
The capabilities provided by the LBaaS extension are:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Load balancing client traffic coming from one network to
|
|
application services (e.g. VMs) on the same or a
|
|
different network.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Supporting load balancing for several protocols (TCP, HTTP)</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Supporting session persistence</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Monitoring the health of the application services</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>This extension introduces new resources:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">vip</emphasis>, is the primary load
|
|
balancing configuration object that specifies the virtual
|
|
IP address and port on which client traffic is received.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">pool</emphasis>, a load balancing
|
|
pool is a logical set of members, such as web servers, that
|
|
you group together to receive and process traffic.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">member</emphasis>, a representation
|
|
of the application running on back end server.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">health_monitor</emphasis>, which is used
|
|
to determine whether or not back end members of the pool
|
|
are usable for processing traffic.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_concepts">
|
|
<title>Concepts</title>
|
|
|
|
<para>
|
|
A <emphasis role="bold">VIP</emphasis> is the primary load balancing configuration object that
|
|
specifies the virtual IP address and port on which client traffic
|
|
is received, as well as other details such as the load balancing
|
|
method to be used, protocol, etc. This entity is sometimes known in
|
|
LB products as a "virtual server", a "vserver" or a "listener".
|
|
</para>
|
|
|
|
<para>
|
|
A <emphasis role="bold">Pool</emphasis> is a logical set of devices, such as web
|
|
servers, that you group together to receive and process traffic.
|
|
The load balancing function chooses a member of the pool according
|
|
to the configured load balancing method to handle the new requests
|
|
or connections received on the VIP address. There is only one pool
|
|
for a VIP.
|
|
</para>
|
|
|
|
<para>
|
|
A pool <emphasis role="bold">member</emphasis> represents the application running on the back end server.
|
|
</para>
|
|
|
|
<para>
|
|
A
|
|
<emphasis role="bold">Health Monitor</emphasis>
|
|
is used to determine whether or not back end members of the VIP's
|
|
pool are usable for processing a request. A pool can have several
|
|
health monitors associated with it. There are different types of
|
|
health monitors supported by the LBaaS extension:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>PING</emphasis>: pings the members by using ICMP.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis>TCP</emphasis>: connects to the members by using TCP.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis>HTTP</emphasis>: sends an HTTP request to the member.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis>HTTPS</emphasis>: sends a secure HTTP request to the member.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>When a pool has several monitors associated with it, each member of
|
|
the pool is monitored by all these monitors. If any monitor
|
|
declares the member as unhealthy, then the member status is changed
|
|
to <emphasis>inactive</emphasis> and the member won't participate in its pool's load
|
|
balancing. In other words, all monitors must declare the member to
|
|
be healthy for it to stay <emphasis>active</emphasis>.
|
|
</para>
|
|
|
|
<para>
|
|
Session persistence is a feature of the load balancing service. It
|
|
attempts to force connections or requests in the same session to be
|
|
processed by the same member as long as it is active. The
|
|
LBaaS extension supports three types of persistence:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis>SOURCE_IP</emphasis>: With this persistence
|
|
mode, all connections originating from the same source
|
|
IP address are handled by the same member of the
|
|
pool.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis>HTTP_COOKIE</emphasis>: With this
|
|
persistence mode, the load balancing function creates a cookie on the first request from a client.
|
|
Subsequent requests containing the same cookie value
|
|
will be handled by the same member of the pool.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis>APP_COOKIE</emphasis>: With this
|
|
persistence mode, the load balancing function relies
|
|
on a cookie established by the back end application. All
|
|
requests carrying the same cookie value is handled
|
|
by the same member of the pool.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_flow">
|
|
<title>High-level flow</title>
|
|
|
|
<para>
|
|
The high-level task flow for using LBaaS API to configure load
|
|
balancing is as follows:</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>The tenant creates a pool, which is initially empty</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The tenant creates one or several members in the pool</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The tenant create one or several health monitors</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The tenant associates the Health Monitors with the Pool</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>The tenant finally creates a VIP associated with the Pool</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip">
|
|
<title>VIP Operations</title>
|
|
<para>This section discusses operations for managing load balancer VIPs
|
|
through the Load balancing as a service extension.
|
|
</para>
|
|
|
|
<table rules="all">
|
|
<caption>VIP Attributes</caption>
|
|
<col width="20%"/>
|
|
<col width="8%"/>
|
|
<col width="10%"/>
|
|
<col width="7%"/>
|
|
<col width="15%"/>
|
|
<col width="15%"/>
|
|
<col width="25%"/>
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Type</th>
|
|
<th>Required</th>
|
|
<th>CRUD
|
|
<footnote xml:id="lbaas_vip_crud_note">
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">C</emphasis>. Use the attribute in create operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">R</emphasis>. This attribute is returned in response to show and list operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">U</emphasis>. You can update the value of this attribute.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">D</emphasis>. You can delete the value of this attribute.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</footnote>
|
|
</th>
|
|
<th>Default Value</th>
|
|
<th>Validation Constraints</th>
|
|
<th>Notes</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>id</td>
|
|
<td>uuid-str</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>generated</td>
|
|
<td>N/A</td>
|
|
<td>Unique identifier for the vip.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>tenant_id</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>Derived from Authentication token</td>
|
|
<td>N/A</td>
|
|
<td>Owner of the vip. Only admin users can specify a
|
|
tenant identifier other than its own</td>
|
|
</tr>
|
|
<tr>
|
|
<td>name</td>
|
|
<td>String</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>Human readable name for the vip.
|
|
Does not have to be unique
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>description</td>
|
|
<td>String</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>Human readable description for the vip.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>subnet_id</td>
|
|
<td>uuid-str</td>
|
|
<td>No</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>UUID Pattern</td>
|
|
<td>The subnet on which to allocate the vip address.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>address</td>
|
|
<td>IP</td>
|
|
<td>No</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>IP address or null</td>
|
|
<td>The IP address of the vip.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>protocol</td>
|
|
<td>String</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>{ "TCP" | "HTTP" | "HTTPS" }</td>
|
|
<td>The protocol of the vip address. .</td>
|
|
</tr>
|
|
<tr>
|
|
<td>protocol_port</td>
|
|
<td>Integer</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>[0..65535]</td>
|
|
<td>The port on which to listen to client traffic that is associated with the vip address.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>pool_id</td>
|
|
<td>uuid-str</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>UUID Pattern</td>
|
|
<td>The <literal>pool</literal> that the vip associated with.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>session_persistence</td>
|
|
<td>dict</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>
|
|
composite
|
|
<footnote xml:id="lbaas_vip_session_persistence_note">
|
|
<para>
|
|
Session persistence is a dictionary with the following attributes:
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">type</emphasis> -
|
|
any of <constant>APP_COOKIE</constant>,
|
|
<constant>HTTP_COOKIE</constant> or <constant>SOURCE_IP</constant></para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">cookie_name</emphasis> -
|
|
any string, required if type is <constant>APP_COOKIE</constant></para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</footnote>
|
|
</td>
|
|
<td>Session persistence parameters of the vip</td>
|
|
</tr>
|
|
<tr>
|
|
<td>connection_limit</td>
|
|
<td>Integer</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>-1</td>
|
|
<td>None</td>
|
|
<td>The maximum number of connections allowed for the vip or "-1" if the limit is not set</td>
|
|
</tr>
|
|
<tr>
|
|
<td>admin_state_up</td>
|
|
<td>Bool</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>true</td>
|
|
<td>{true | false }</td>
|
|
<td>Administrative state of the vip</td>
|
|
</tr>
|
|
<tr>
|
|
<td>status</td>
|
|
<td>String</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>N/A</td>
|
|
<td>N/A</td>
|
|
<td>Indicates whether a vip is currently operational or not</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip_list">
|
|
<title>List VIPs</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/vips</td>
|
|
<td>Lists vips.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Forbidden (<errorcode>403</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>List VIPs: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/vips.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>List VIPs: Response</title>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip_show">
|
|
<title>Show VIP</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/vips/<parameter>vip-id</parameter></td>
|
|
<td>Returns details about a specific vip.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Forbidden (<errorcode>403</errorcode>), Not Found (<errorcode>404</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Show VIP: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Show VIP: Response</title>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip_create">
|
|
<title>Create VIP</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&POST;</td>
|
|
<td>/lb/vips</td>
|
|
<td>Create a new load balancer vip.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>201</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>)</simpara>
|
|
<para>This operation requires a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Create VIP: Request</title>
|
|
<programlisting>
|
|
POST /v2.0/lb/vips.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create VIP: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip_update">
|
|
<title>Update VIP</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&PUT;</td>
|
|
<td>/lb/vips/<parameter>vip-id</parameter></td>
|
|
<td>Updates a load balancer vip.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>200</returnvalue></para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>), Not Found (<errorcode>404</errorcode>)</simpara>
|
|
<example>
|
|
<title>Update VIP: Request</title>
|
|
<programlisting>
|
|
PUT /v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update VIP: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_vip_delete">
|
|
<title>Delete VIP</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&DELETE;</td>
|
|
<td>/lb/vips/<parameter>vip-id</parameter></td>
|
|
<td>Removes a load balancer vip.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>204</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Not Found (<errorcode>404</errorcode>), Conflict
|
|
(<errorcode>409</errorcode>)</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation does not return a response body.</para>
|
|
<example>
|
|
<title>Delete VIP: Request</title>
|
|
<programlisting>
|
|
DELETE /v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2.json HTTP/1.1
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Delete VIP: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 204 No Content
|
|
Content-Length: 0
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
</section> <!-- end of vips section-->
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool">
|
|
<title>Pool Operations</title>
|
|
<para>This section discusses operations for managing load balancer
|
|
pools through the Load balancing as a service extension.
|
|
</para>
|
|
|
|
<table rules="all">
|
|
<caption>Pool Attributes</caption>
|
|
<col width="20%"/>
|
|
<col width="8%"/>
|
|
<col width="10%"/>
|
|
<col width="7%"/>
|
|
<col width="15%"/>
|
|
<col width="15%"/>
|
|
<col width="25%"/>
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Type</th>
|
|
<th>Required</th>
|
|
<th>CRUD
|
|
<footnote xml:id="lbaas_pool_crud_note">
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">C</emphasis>. Use the attribute in create operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">R</emphasis>. This attribute is returned in response to show and list operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">U</emphasis>. You can update the value of this attribute.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">D</emphasis>. You can delete the value of this attribute.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</footnote>
|
|
</th>
|
|
<th>Default Value</th>
|
|
<th>Validation Constraints</th>
|
|
<th>Notes</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>id</td>
|
|
<td>uuid-str</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>generated</td>
|
|
<td>N/A</td>
|
|
<td>Unique identifier for the pool.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>tenant_id</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>Derived from Authentication token</td>
|
|
<td>N/A</td>
|
|
<td>Owner of the pool. Only admin users can specify a
|
|
tenant identifier other than its own</td>
|
|
</tr>
|
|
<tr>
|
|
<td>vip_id</td>
|
|
<td>uuid-str</td>
|
|
<td>No</td>
|
|
<td>R</td>
|
|
<td>None</td>
|
|
<td>UUID Pattern</td>
|
|
<td>The <literal>vip</literal> that the pool associated with.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>name</td>
|
|
<td>String</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>Human readable name for the pool.
|
|
Does not have to be unique
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>description</td>
|
|
<td>String</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>Human readable description for the pool.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>subnet_id</td>
|
|
<td>uuid-str</td>
|
|
<td>No</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>UUID Pattern</td>
|
|
<td>The network that pool members belong to.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>protocol</td>
|
|
<td>String</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>{ "TCP" | "HTTP" | "HTTPS" }</td>
|
|
<td>The protocol of the pool.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>lb_method</td>
|
|
<td>String</td>
|
|
<td>Yes</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>None</td>
|
|
<td>The algorithm used to distribute load between the members of the pool.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>health_monitors</td>
|
|
<td>uuid-list</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>List of health monitors to associate with the pool</td>
|
|
</tr>
|
|
<tr>
|
|
<td>members</td>
|
|
<td>uuid-list</td>
|
|
<td>No</td>
|
|
<td>R</td>
|
|
<td>None</td>
|
|
<td>N/A</td>
|
|
<td>List of members that belong to the pool</td>
|
|
</tr>
|
|
<tr>
|
|
<td>admin_state_up</td>
|
|
<td>Bool</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>true</td>
|
|
<td>{true | false }</td>
|
|
<td>Administrative state of the pool</td>
|
|
</tr>
|
|
<tr>
|
|
<td>status</td>
|
|
<td>String</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>N/A</td>
|
|
<td>N/A</td>
|
|
<td>Indicates whether a pool is currently operational or not</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool_list">
|
|
<title>List Pools</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/pools</td>
|
|
<td>Lists pools.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized
|
|
(<errorcode>401</errorcode>), Forbidden
|
|
(<errorcode>403</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>List Pools: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/pools.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>List Pools: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool_show">
|
|
<title>Show Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/pools/<parameter>pool-id</parameter></td>
|
|
<td>Returns details about a specific pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Forbidden (<errorcode>403</errorcode>), Not Found (<errorcode>404</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Show Pool: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Show Pool: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool_create">
|
|
<title>Create Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&POST;</td>
|
|
<td>/lb/pools</td>
|
|
<td>Create a new load balancer pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>201</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>)</simpara>
|
|
<para>This operation requires a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Create Pool: Request</title>
|
|
<programlisting>
|
|
POST /v2.0/lb/pools.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create Pool: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool_update">
|
|
<title>Update Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&PUT;</td>
|
|
<td>/lb/pools/<parameter>pool-id</parameter></td>
|
|
<td>Updates a load balancer pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>200</returnvalue></para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>), Not Found (<errorcode>404</errorcode>)</simpara>
|
|
<example>
|
|
<title>Update Pool: Request</title>
|
|
<programlisting>
|
|
PUT /v2.0/lb/pools/61b1f87a-7a21-4ad3-9dda-7f81d249944f.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update Pool: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_pool_delete">
|
|
<title>Delete Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&DELETE;</td>
|
|
<td>/lb/pools/<parameter>pool-id</parameter></td>
|
|
<td>Removes a load balancer pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>204</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Not Found (<errorcode>404</errorcode>), Conflict
|
|
(<errorcode>409</errorcode>)</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation does not return a response body.</para>
|
|
<example>
|
|
<title>Delete Pool: Request</title>
|
|
<programlisting>
|
|
DELETE /v2.0/lb/pools/a224402b-794b-4c0c-9d08-d95640a6f5a1.json HTTP/1.1
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Delete Pool: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 204 No Content
|
|
Content-Length: 0
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
</section> <!-- end of pools section-->
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member">
|
|
<title>Member Operations</title>
|
|
<para>This section discusses operations for managing pool
|
|
members through the Load balancing as a service extension.
|
|
</para>
|
|
|
|
<table rules="all">
|
|
<caption>Member Attributes</caption>
|
|
<col width="20%"/>
|
|
<col width="8%"/>
|
|
<col width="10%"/>
|
|
<col width="7%"/>
|
|
<col width="15%"/>
|
|
<col width="15%"/>
|
|
<col width="25%"/>
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Type</th>
|
|
<th>Required</th>
|
|
<th>CRUD
|
|
<footnote xml:id="lbaas_member_crud_note">
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">C</emphasis>. Use the attribute in create operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">R</emphasis>. This attribute is returned in response to show and list operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">U</emphasis>. You can update the value of this attribute.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">D</emphasis>. You can delete the value of this attribute.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</footnote>
|
|
</th>
|
|
<th>Default Value</th>
|
|
<th>Validation Constraints</th>
|
|
<th>Notes</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>id</td>
|
|
<td>uuid-str</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>generated</td>
|
|
<td>N/A</td>
|
|
<td>Unique identifier for the member.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>tenant_id</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>Derived from Authentication token</td>
|
|
<td>N/A</td>
|
|
<td>Owner of the member. Only admin users can specify a
|
|
tenant identifier other than its own</td>
|
|
</tr>
|
|
<tr>
|
|
<td>pool_id</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>UUID Pattern</td>
|
|
<td>The <literal>pool</literal> that the member belongs to.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>address</td>
|
|
<td>IP</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>IP address or null</td>
|
|
<td>The IP address of the member.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>protocol_port</td>
|
|
<td>Integer</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>[0..65535]</td>
|
|
<td>The port on which the application is hosted.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>weight</td>
|
|
<td>Integer</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>1</td>
|
|
<td>[0..256]</td>
|
|
<td>The weight of a member determines the portion of requests or connections it services compared to the other members of the pool. A value of 0
|
|
means the member will not participate in load-balancing but will still accept
|
|
persistent connections.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>admin_state_up</td>
|
|
<td>Bool</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>true</td>
|
|
<td>{true | false }</td>
|
|
<td>Administrative state of the member</td>
|
|
</tr>
|
|
<tr>
|
|
<td>status</td>
|
|
<td>String</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>N/A</td>
|
|
<td>N/A</td>
|
|
<td>Indicates whether a member is currently operational or not</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member_list">
|
|
<title>List Members</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/members</td>
|
|
<td>Lists members.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized
|
|
(<errorcode>401</errorcode>), Forbidden
|
|
(<errorcode>403</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>List Members: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/members.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>List Members: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member_show">
|
|
<title>Show Member</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/members/<parameter>member-id</parameter></td>
|
|
<td>Returns details about a specific member.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Forbidden (<errorcode>403</errorcode>), Not Found (<errorcode>404</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Show Member: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/members/701b531b-111a-4f21-ad85-4795b7b12af6.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Show Member: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member_create">
|
|
<title>Create Member</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&POST;</td>
|
|
<td>/lb/members</td>
|
|
<td>Create a new load balancer member.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>201</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>)</simpara>
|
|
<para>This operation requires a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Create Member: Request</title>
|
|
<programlisting>
|
|
POST /v2.0/lb/members.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create Member: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member_update">
|
|
<title>Update Member</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&PUT;</td>
|
|
<td>/lb/members/<parameter>member-id</parameter></td>
|
|
<td>Updates a load balancer member.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>200</returnvalue></para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>), Not Found (<errorcode>404</errorcode>)</simpara>
|
|
<example>
|
|
<title>Update Member: Request</title>
|
|
<programlisting>
|
|
PUT /v2.0/lb/members/b9a7012a-1097-45b2-a973-6572973619bc.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update Member: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_member_delete">
|
|
<title>Delete Member</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&DELETE;</td>
|
|
<td>/lb/members/<parameter>member-id</parameter></td>
|
|
<td>Removes a load balancer member.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>204</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Not Found (<errorcode>404</errorcode>), Conflict
|
|
(<errorcode>409</errorcode>)</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation does not return a response body.</para>
|
|
<example>
|
|
<title>Delete Member: Request</title>
|
|
<programlisting>
|
|
DELETE /v2.0/lb/members/b9a7012a-1097-45b2-a973-6572973619bc.json HTTP/1.1
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Delete Member: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 204 No Content
|
|
Content-Length: 0
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
</section> <!-- end of members section-->
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor">
|
|
<title>Health Monitor Operations</title>
|
|
<para>This section discusses operations for managing load balancer
|
|
health monitors through the Load balancing as a service extension.
|
|
</para>
|
|
|
|
<table rules="all">
|
|
<caption>Health Monitor Attributes</caption>
|
|
<col width="20%"/>
|
|
<col width="8%"/>
|
|
<col width="10%"/>
|
|
<col width="7%"/>
|
|
<col width="15%"/>
|
|
<col width="15%"/>
|
|
<col width="25%"/>
|
|
<thead>
|
|
<tr>
|
|
<th>Attribute</th>
|
|
<th>Type</th>
|
|
<th>Required</th>
|
|
<th>CRUD
|
|
<footnote xml:id="lbaas_healthmonitor_crud_note">
|
|
<para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold">C</emphasis>. Use the attribute in create operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">R</emphasis>. This attribute is returned in response to show and list operations.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">U</emphasis>. You can update the value of this attribute.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold">D</emphasis>. You can delete the value of this attribute.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
</footnote>
|
|
</th>
|
|
<th>Default Value</th>
|
|
<th>Validation Constraints</th>
|
|
<th>Notes</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>id</td>
|
|
<td>uuid-str</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>generated</td>
|
|
<td>N/A</td>
|
|
<td>Unique identifier for the health monitor.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>tenant_id</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>Derived from Authentication token</td>
|
|
<td>N/A</td>
|
|
<td>Owner of the health monitor. Only admin users can specify a
|
|
tenant identifier other than its own</td>
|
|
</tr>
|
|
<tr>
|
|
<td>type</td>
|
|
<td>String</td>
|
|
<td>Yes</td>
|
|
<td>CR</td>
|
|
<td>None</td>
|
|
<td>{"PING" | "TCP" | "HTTP" | "HTTPS"}</td>
|
|
<td>The type of probe send by load balancer to verify member state</td>
|
|
</tr>
|
|
<tr>
|
|
<td>delay</td>
|
|
<td>Integer</td>
|
|
<td>Yes</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>non-negative</td>
|
|
<td>The time in seconds between sending probes to members.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>timeout</td>
|
|
<td>uuid-str</td>
|
|
<td>Yes</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>non-negative</td>
|
|
<td>The maximum number of seconds for a monitor to wait for a connection to be established before it times out. The value must be less than the delay value.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>max_retries</td>
|
|
<td>Integer</td>
|
|
<td>Yes</td>
|
|
<td>CRU</td>
|
|
<td>None</td>
|
|
<td>[1..10]</td>
|
|
<td>Number of allowed connection failures before changing the member's status to INACTIVE</td>
|
|
</tr>
|
|
<tr>
|
|
<td>http_method</td>
|
|
<td>String</td>
|
|
<td>No<footnote xml:id="lbaas_health_monitor_http_method">
|
|
<para>Required if <literal>type</literal> is <constant>HTTP</constant>
|
|
or <constant>HTTPS</constant></para>
|
|
</footnote></td>
|
|
<td>CRU</td>
|
|
<td>GET</td>
|
|
<td>None</td>
|
|
<td>The HTTP method used for requests by the monitor.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>url_path</td>
|
|
<td>String</td>
|
|
<td>No<footnoteref linkend="lbaas_health_monitor_http_method"/></td>
|
|
<td>CRU</td>
|
|
<td>/</td>
|
|
<td>None</td>
|
|
<td>The HTTP path of the request sent by the monitor to test a member's health. This must be a string beginning with a / (forward slash).</td>
|
|
</tr>
|
|
<tr>
|
|
<td>expected_codes</td>
|
|
<td>String</td>
|
|
<td>No<footnoteref linkend="lbaas_health_monitor_http_method"/></td>
|
|
<td>CRU</td>
|
|
<td>200</td>
|
|
<td>single value (e.g. 200), list (e.g. 200, 202) or range (e.g. 200-204)</td>
|
|
<td>The list of HTTP status codes expected in response from the member to declare it healthy.</td>
|
|
</tr>
|
|
<tr>
|
|
<td>admin_state_up</td>
|
|
<td>Bool</td>
|
|
<td>No</td>
|
|
<td>CRU</td>
|
|
<td>true</td>
|
|
<td>{true | false }</td>
|
|
<td>Administrative state of the health monitor</td>
|
|
</tr>
|
|
<tr>
|
|
<td>status</td>
|
|
<td>String</td>
|
|
<td>N/A</td>
|
|
<td>R</td>
|
|
<td>N/A</td>
|
|
<td>N/A</td>
|
|
<td>Indicates whether a health monitor is currently operational or not</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<section xml:id="lbaas_ext_ops_health_monitor_list">
|
|
<title>List Health Monitors</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/health_monitors</td>
|
|
<td>Lists health monitors.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized
|
|
(<errorcode>401</errorcode>), Forbidden
|
|
(<errorcode>403</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>List Health Monitors: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>List Health Monitors: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_show">
|
|
<title>Show Health Monitor</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&GET;
|
|
</td>
|
|
<td>/lb/health_monitors/<parameter>health_monitor-id</parameter></td>
|
|
<td>Returns details about a specific health monitor.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<simpara>Normal Response Code:
|
|
<returnvalue>200</returnvalue>
|
|
</simpara>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Forbidden (<errorcode>403</errorcode>), Not Found (<errorcode>404</errorcode>)
|
|
</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Show Health Monitor: Request</title>
|
|
|
|
<programlisting>
|
|
GET /v2.0/lb/health_monitors/701b531b-111a-4f21-ad85-4795b7b12af6.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Show Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_create">
|
|
<title>Create Health Monitor</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&POST;</td>
|
|
<td>/lb/health_monitors</td>
|
|
<td>Create a new load balancer health monitor.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>201</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>)</simpara>
|
|
<para>This operation requires a request body.</para>
|
|
<para>This operation returns a response body.</para>
|
|
<example>
|
|
<title>Create Health Monitor: Request</title>
|
|
<programlisting>
|
|
POST /v2.0/lb/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_update">
|
|
<title>Update Health Monitor</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&PUT;</td>
|
|
<td>/lb/health_monitors/<parameter>health_monitor-id</parameter></td>
|
|
<td>Updates a load balancer health monitor.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>200</returnvalue></para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>), Not Found (<errorcode>404</errorcode>)</simpara>
|
|
<example>
|
|
<title>Update Health Monitor: Request</title>
|
|
<programlisting>
|
|
PUT /v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_delete">
|
|
<title>Delete Health Monitor</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&DELETE;</td>
|
|
<td>/lb/health_monitors/<parameter>healthmonitor-id</parameter></td>
|
|
<td>Delete health monitor.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>204</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Not Found (<errorcode>404</errorcode>), Conflict
|
|
(<errorcode>409</errorcode>)</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation does not return a response body.</para>
|
|
<example>
|
|
<title>Delete Health Monitor: Request</title>
|
|
<programlisting>
|
|
DELETE /v2.0/lb/health_monitors/ada338f0-10d0-4326-b02e-cc123114f240.json HTTP/1.1
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Delete Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 204 No Content
|
|
Content-Length: 0
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_associate">
|
|
<title>Associate Health Monitor with a Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&POST;</td>
|
|
<td>/lb/pools/<parameter>pool-id</parameter>/health_monitors</td>
|
|
<td>Associate health monitor with the pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>200</returnvalue></para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Bad Request (<errorcode>400</errorcode>), Not Found (<errorcode>404</errorcode>)</simpara>
|
|
<example>
|
|
<title>Associate Health Monitor: Request</title>
|
|
<programlisting>
|
|
POST /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/healthmonitors-associate-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Associate Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8
|
|
</programlisting>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/healthmonitors-associate-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
<?hard-pagebreak?>
|
|
|
|
<section xml:id="lbaas_ext_ops_health_monitor_disassociate">
|
|
<title>Disassociate Health Monitor from a Pool</title>
|
|
<informaltable rules="all" width="100%">
|
|
<col width="20%"/>
|
|
<col width="20%"/>
|
|
<col width="60%"/>
|
|
<thead>
|
|
<tr>
|
|
<td>Verb</td>
|
|
<td>URI</td>
|
|
<td>Description</td>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>&DELETE;</td>
|
|
<td>/lb/pools/<parameter>pool-id</parameter>/health_monitors/<parameter>healthmonitor-id</parameter></td>
|
|
<td>Disassociate health monitor from the pool.</td>
|
|
</tr>
|
|
</tbody>
|
|
</informaltable>
|
|
<para>Normal Response Code: <returnvalue>204</returnvalue>
|
|
</para>
|
|
<simpara>Error Response Codes: Unauthorized (<errorcode>401</errorcode>),
|
|
Not Found (<errorcode>404</errorcode>), Conflict
|
|
(<errorcode>409</errorcode>)</simpara>
|
|
<para>This operation does not require a request body.</para>
|
|
<para>This operation does not return a response body.</para>
|
|
<example>
|
|
<title>Disassociate Health Monitor: Request</title>
|
|
<programlisting>
|
|
DELETE /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/ada338f0-10d0-4326-b02e-cc123114f240.json HTTP/1.1
|
|
Accept: application/json
|
|
</programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Disassociate Health Monitor: Response</title>
|
|
<programlisting>
|
|
HTTP/1.1 204 No Content
|
|
Content-Length: 0
|
|
</programlisting>
|
|
</example>
|
|
</section>
|
|
|
|
</section> <!-- end of health_monitors section-->
|
|
|
|
</section> <!-- end of lbaas section -->
|