netconn-api/v2.0/section_neutron-loadbalancer-ext.xml
Diane Fleming 49a00ab385 Update LBaaS extension to include session persistence info
Clean up code samples and formatting

Closes-Bug: #1231905

Change-Id: If00c9ae698803323ac8331a9d09650e61f64a8ba
author: diane fleming
2014-04-04 10:02:40 -05:00

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 -->