49a00ab385
Clean up code samples and formatting Closes-Bug: #1231905 Change-Id: If00c9ae698803323ac8331a9d09650e61f64a8ba author: diane fleming
1842 lines
78 KiB
XML
1842 lines
78 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE section [
|
|
<!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>'>
|
|
]>
|
|
<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 enables OpenStack tenants to
|
|
load-balance their VM traffic. The extension enables you
|
|
to:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>Load-balance client traffic from one network to
|
|
application services, such as VMs, on the same or a
|
|
different network.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Load-balance several protocols, such as TCP and
|
|
HTTP.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Monitor the health of application services.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Support session persistence.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<section xml:id="lbaas_ext_concepts">
|
|
<title>Concepts</title>
|
|
<para>This extension introduces these concepts:</para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term>VIP</term>
|
|
<listitem>
|
|
<para>The primary load balancing configuration
|
|
object. Specifies the virtual IP address and
|
|
port where client traffic is received. Also
|
|
defines other details such as the load
|
|
balancing method to be used, protocol, and so
|
|
on.</para>
|
|
<para>This entity is sometimes known in
|
|
load-balancing products as a
|
|
<firstterm>virtual server</firstterm>,
|
|
<firstterm>vserver</firstterm>, or
|
|
<firstterm>listener</firstterm>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>pool</term>
|
|
<listitem>
|
|
<para>A logical set of devices, such as web
|
|
servers, that you group together to receive
|
|
and process traffic.</para>
|
|
<para>The load balancing function chooses which
|
|
member of the pool handles the new requests or
|
|
connections received on the VIP address. Each
|
|
VIP has one pool.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>pool member</term>
|
|
<listitem>
|
|
<para>The application that runs on the back-end
|
|
server.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>health monitor</term>
|
|
<listitem>
|
|
<para>Determines whether or not back-end members
|
|
of the VIP pool can process a request. A pool
|
|
can have several health monitors associated
|
|
with it.</para>
|
|
<para>The LBaaS extension supports these types of
|
|
health monitors:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>PING</emphasis>. Pings the members
|
|
by using ICMP.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>TCP</emphasis>. Connects to the
|
|
members by using TCP.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>HTTP</emphasis>. Sends an HTTP
|
|
request to the member.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>HTTPS</emphasis>. Sends a secure
|
|
HTTP request to the member.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>When a pool has several monitors associated
|
|
with it, all monitors check each member of the
|
|
pool. If any monitor declares a member as
|
|
unhealthy, the member status is changed to
|
|
<emphasis role="bold">inactive</emphasis>
|
|
and the member does not participate in the
|
|
load balancing for the pool.</para>
|
|
<para>All monitors must declare the member to be
|
|
healthy for it to stay <emphasis role="bold"
|
|
>active</emphasis>.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term>session persistence</term>
|
|
<listitem>
|
|
<para>Forces connections or requests in the same
|
|
session to be processed by the same member as
|
|
long as it is active.</para>
|
|
<para>The LBaaS extension supports these types of
|
|
persistence:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>SOURCE_IP</emphasis>. All
|
|
connections that originate from the
|
|
same source IP address are handled by
|
|
the same member of the pool.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>HTTP_COOKIE</emphasis>. The load
|
|
balancing function creates a cookie on
|
|
the first request from a client.
|
|
Subsequent requests that contain the
|
|
same cookie value are handled by the
|
|
same member of the pool.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para><emphasis role="bold"
|
|
>APP_COOKIE</emphasis>. The load
|
|
balancing function relies on a cookie
|
|
established by the back-end
|
|
application. All requests with the
|
|
same cookie value are handled by the
|
|
same member of the pool.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<para>Absence of <code>session_persistence</code>
|
|
attribute means no session persistence
|
|
mechanism is used.</para>
|
|
<para>When no session persistence is used, the
|
|
<code>session_persistence</code> attribute
|
|
does not appear in the API response, instead
|
|
of returning null.</para>
|
|
<para>You can clear session persistence for the
|
|
VIP by sending <code>null</code> in
|
|
<code>session_persistence</code> attribute
|
|
in a VIP update request.</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</section>
|
|
<section xml:id="lbaas_ext_flow">
|
|
<title>High-level task flow</title>
|
|
<para>To use the LBaaS extension to configure load balancing,
|
|
you must complete these high-level tasks:</para>
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>Create a pool, which is initially empty.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Create one or several members in the
|
|
pool.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Create one or several health monitors.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Associate the health monitors with the
|
|
pool.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Create a VIP that is associated with the
|
|
pool.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
</section>
|
|
<section xml:id="lbaas_ext_ops_vip">
|
|
<title>VIP operations</title>
|
|
<para>This section discusses operations for managing load
|
|
balancer VIPs through the LBaaS 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">
|
|
<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>
|
|
</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 an admin user 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:</para>
|
|
<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>
|
|
</footnote></td>
|
|
<td><para>Session persistence parameters of the
|
|
VIP.</para>
|
|
<para>Absence of
|
|
<code>session_persistence</code>
|
|
attribute means no session persistence
|
|
mechanism is used.</para>
|
|
<para>When no session persistence is used, the
|
|
<code>session_persistence</code>
|
|
attribute does not appear in the API
|
|
response, instead of returning
|
|
null.</para>
|
|
<para>You can clear session persistence for
|
|
the VIP by sending <code>null</code> in
|
|
<code>session_persistence</code>
|
|
attribute in a VIP update
|
|
request.</para></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 <code>-1</code> 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.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/vips.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>List VIPs: JSON response</title>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<section xml:id="lbaas_ext_ops_vip_show">
|
|
<title>Show VIP details</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>Shows details for a specified 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 details: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/vips/4ec89087-d057-4e2c-911f-60a3b47ee304.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Show VIP details: JSON response</title>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Creates a 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: HTTP and JSON request</title>
|
|
<literallayout>POST /v2.0/lb/vips.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create VIP: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP and JSON request</title>
|
|
<literallayout>PUT /v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update VIP: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/vips-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>DELETE /v2.0/lb/vips/c987d2be-9a3c-4ac9-a046-e8716b1350e2.json HTTP/1.1
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Delete VIP: HTTP response</title>
|
|
<literallayout>HTTP/1.1 204 No Content
|
|
Content-Length: 0</literallayout>
|
|
</example>
|
|
</section>
|
|
</section>
|
|
<!-- end of vips section-->
|
|
<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">
|
|
<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>
|
|
</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 an admin user 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>
|
|
<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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/pools.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>List pools: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Show pool: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>POST /v2.0/lb/pools.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create pool: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP and JSON request</title>
|
|
<literallayout>PUT /v2.0/lb/pools/61b1f87a-7a21-4ad3-9dda-7f81d249944f.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update pool: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/pools-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>DELETE /v2.0/lb/pools/a224402b-794b-4c0c-9d08-d95640a6f5a1.json HTTP/1.1
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Delete pool: HTTP response</title>
|
|
<literallayout>HTTP/1.1 204 No Content
|
|
Content-Length: 0</literallayout>
|
|
</example>
|
|
</section>
|
|
</section>
|
|
<!-- end of pools section-->
|
|
<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">
|
|
<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>
|
|
</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 an admin user 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 does not
|
|
participate in load-balancing but still
|
|
accepts 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 or not a member is currently
|
|
operational.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/members.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>List members: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/members/701b531b-111a-4f21-ad85-4795b7b12af6.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Show member: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Creates a 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: HTTP and JSON request</title>
|
|
<literallayout>POST /v2.0/lb/members.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create member: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP and JSON request</title>
|
|
<literallayout>PUT /v2.0/lb/members/b9a7012a-1097-45b2-a973-6572973619bc.json
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update member: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/members-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP request</title>
|
|
<literallayout>DELETE /v2.0/lb/members/b9a7012a-1097-45b2-a973-6572973619bc.json HTTP/1.1
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Delete member: HTTP and JSON response</title>
|
|
<literallayout>HTTP/1.1 204 No Content
|
|
Content-Length: 0</literallayout>
|
|
</example>
|
|
</section>
|
|
</section>
|
|
<!-- end of members section-->
|
|
<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 LBaaS
|
|
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">
|
|
<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>
|
|
</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 ID 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 an admin
|
|
user 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, such as 200, list, such as 200,
|
|
202, or range, such as 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 or not a health monitor is
|
|
currently operational.</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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>List health monitors: HTTP and JSON
|
|
response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-list-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Show details for a specified 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: HTTP request</title>
|
|
<literallayout>GET /v2.0/lb/health_monitors/701b531b-111a-4f21-ad85-4795b7b12af6.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Show health monitor: HTTP and JSON
|
|
response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-show-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Creates a 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: HTTP and JSON
|
|
request</title>
|
|
<literallayout>POST /v2.0/lb/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-create-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Create health monitor: HTTP and JSON
|
|
response</title>
|
|
<literallayout>HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-create-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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: HTTP and JSON
|
|
request</title>
|
|
<literallayout>PUT /v2.0/lb/health_monitors/466c8345-28d8-4f84-a246-e04380b0461d.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-update-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Update health monitor: HTTP and JSON
|
|
response</title>
|
|
<literallayout>HTTP/1.1 200 OK
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/health_monitors-update-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Deletes a specified 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: HTTP request</title>
|
|
<literallayout>DELETE /v2.0/lb/health_monitors/ada338f0-10d0-4326-b02e-cc123114f240.json HTTP/1.1
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Delete health monitor: HTTP response</title>
|
|
<literallayout>HTTP/1.1 204 No Content
|
|
Content-Length: 0</literallayout>
|
|
</example>
|
|
</section>
|
|
<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: HTTP and JSON
|
|
request</title>
|
|
<literallayout>POST /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors.json HTTP/1.1
|
|
User-Agent: python-neutronclient
|
|
Accept: application/json</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/healthmonitors-associate-req.json" parse="text"/></programlisting>
|
|
</example>
|
|
<example>
|
|
<title>Associate health monitor: HTTP and JSON
|
|
response</title>
|
|
<literallayout>HTTP/1.1 201 Created
|
|
Content-Type: application/json; charset=UTF-8</literallayout>
|
|
<programlisting language="json"><xi:include href="samples/loadbalancer/healthmonitors-associate-res.json" parse="text"/></programlisting>
|
|
</example>
|
|
</section>
|
|
<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>Disassociates a 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: HTTP
|
|
request</title>
|
|
<literallayout>DELETE /v2.0/lb/pools/72741b06-df4d-4715-b142-276b6bce75ab/health_monitors/ada338f0-10d0-4326-b02e-cc123114f240.json HTTP/1.1
|
|
Accept: application/json</literallayout>
|
|
</example>
|
|
<example>
|
|
<title>Disassociate health monitor: HTTP
|
|
response</title>
|
|
<literallayout>HTTP/1.1 204 No Content
|
|
Content-Length: 0</literallayout>
|
|
</example>
|
|
</section>
|
|
</section>
|
|
<!-- end of health_monitors section-->
|
|
</section>
|
|
<!-- end of lbaas section -->
|