For the purpose of examples, assume there is an Octavia API server running at the URL http://octavia.example.com on the default port 80.
Note: Requests to update any resource on a load balancer in an immutable state will fail with a response code 409.
Status type | Statuses |
Operating Status | ONLINE, OFFLINE, DEGRADED, ERROR, NO_MONITOR |
Provisioning Status | ACTIVE, DELETED, ERROR, PENDING_DELETE, PENDING_UPDATE, PENDING_CREATE |
Fully Populated Load Balancer Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | Load Balancer ID |
vip | VIP Object | JSON VIP object below |
project_id | UUID | UUID for project |
name | String | String for load balancer name |
description | String | String detailing information about the load balancer |
enabled | Boolean | Whether or not the load balancer should be online immediately |
operating_status | String | Network status of a load balancer |
provisioning_status | String | Physical status of a load balancer |
The following table lists the attributes of a VIP. If only port_id is provided then the network_id will be populated. If only network_id is provided then a port will be created and the port_id will be returned. If an ip_address is provided then that IP will be attempted to be assigned to the VIP as long as port_id or network_id is provided as well.
Fully Populated VIP Object | ||
---|---|---|
Parameters | Type | Description |
ip_address | IPv(4|6) | Frontend IP of load balancer |
port_id | UUID | UUID for port (equivalent to neutron port) |
network_id | UUID | UUID for network (equivalent to neutron subnet) |
Retrieve a list of load balancers.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers | |
Response Codes | Success | 200 |
Error | 400, 401, 404, 500 |
Response Example:
[
{
'id': 'uuid',
'vip': {
'port_id': 'uuid',
'network_id': 'uuid',
'ip_address': '192.0.2.1'
},
'name': 'lb_name',
'description': 'lb_description',
'enabled': true,
'provisioning_status': 'ACTIVE',
'operating_status': 'ONLINE'
}
]
Retrieve details of a load balancer.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id} | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'id': 'uuid',
'vip':{
'port_id': 'uuid',
'network_id': 'uuid',
'ip_address': '192.0.2.1'
},
'name': 'lb_name',
'description': 'lb_description',
'enabled': true,
'provisioning_status': 'ACTIVE',
'operating_status': 'ONLINE'
}
Create a load balancer.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Request Parameters | |
---|---|
Parameters | Required |
vip | yes |
project_id | no |
name | no |
description | no |
enabled | no |
Request Example:
{
'vip': {
'subnet_id': 'uuid'
},
'name': 'lb_name',
'description': 'lb_description',
}
Response Example:
{
'id': 'uuid',
'vip':{
'port_id': 'uuid',
'subnet_id': 'uuid',
'ip_address': '192.0.2.1'
},
'name': 'lb_name',
'description': 'lb_description',
'enabled': true,
'provisioning_status': 'PENDING_CREATE',
'operating_status': 'OFFLINE'
}
Create a load balancer including listeners, sni containers, pools, health monitors, l7 policies, and l7 rules.
Refer to the appropriate objects details for available attributes.
Request Example:
{
'vip': {
'subnet_id': 'uuid'
},
'name': 'lb_name',
'description': 'lb_description',
'listeners': [{
'protocol': 'HTTP',
'protocol_port': 80,
'connection_limit': 10,
'name': 'listener_name',
'description': 'listener_description',
'enabled': true,
'l7policies': [{
'action': 'REDIRECT_TO_POOL',
'redirect_pool': {
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'redirect_pool',
'description': 'redirect_pool_description',
'enabled': true
}
}],
'default_pool': {
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'pool_name',
'description': 'pool_description',
'enabled': true,
'members': [{
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true
}],
'health_monitor':{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
}
}]
}
Response Example:
{
'description': 'lb_description',
'provisioning_status': 'PENDING_CREATE',
'enabled': true,
'listeners': [{
'tls_certificate_id': null,
'protocol': 'HTTP',
'description': 'listener_description',
'provisioning_status': 'PENDING_CREATE',
'default_pool': {
'lb_algorithm': 'ROUND_ROBIN',
'protocol': 'HTTP',
'description': 'pool_description',
'health_monitor': {
'project_id': null,
'expected_codes': '200',
'enabled': true,
'delay': 10,
'fall_threshold': 10,
'http_method': 'GET',
'rise_threshold': 10,
'timeout': 10,
'url_path': '/some/custom/path',
'type': 'HTTP'
},
'enabled': true,
'session_persistence': {
'cookie_name': 'cookie_name',
'type': 'HTTP_COOKIE'
},
'members': [{
'project_id': null,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true,
'protocol_port': 80,
'ip_address': '10.0.0.1',
'id': 'uuid',
'operating_status': 'OFFLINE'
}],
'project_id': null,
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'pool_name'
},
'connection_limit': 10,
'enabled': true,
'project_id': null,
'default_pool_id': 'uuid',
'l7policies': [{
'redirect_pool_id': 'uuid',
'description': null,
'redirect_pool': {
'lb_algorithm': 'ROUND_ROBIN',
'protocol': 'HTTP',
'description': 'redirect_pool_description',
'enabled': true,
'session_persistence': {
'cookie_name': 'cookie_name',
'type': 'HTTP_COOKIE'
},
'members': [],
'project_id': null,
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'redirect_pool'
},
'l7rules': [],
'enabled': true,
'redirect_url': null,
'action': 'REDIRECT_TO_POOL',
'position': 1,
'id': 'uuid',
'name': null
}],
'sni_containers': [],
'protocol_port': 80,
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'listener_name'
}],
'vip': {
'subnet_id': 'uuid',
'port_id': null,
'ip_address': null
},
'project_id': null,
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'lb_name'
}
Modify mutable fields of a load balancer.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id} | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
name | no |
description | no |
enabled | no |
Request Example:
{
'name': 'diff_lb_name',
'description': 'diff_lb_description',
'enabled': false
}
Response Example:
{
'id': 'uuid',
'vip':{
'port_id': 'uuid',
'network_id': 'uuid',
'ip_address': '192.0.2.1'
},
'name': 'diff_lb_name',
'description': 'diff_lb_description',
'enabled': true,
'provisioning_status': 'PENDING_CREATE',
'operating_status': 'OFFLINE'
}
Delete a load balancer.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id} | |
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
No request/response body
Delete a load balancer and all the underlying resources (e.g. listener, pool).
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/delete_cascade | |
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
No request/response body
Fully Populated Listener Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | Listener ID |
protocol | String | Network protocol from the following: TCP, HTTP, HTTPS |
protocol_port | UUID | Port the protocol will listen on |
connection_limit | String | Number of connections allowed at any given time |
default_tls_container_id | String | Barbican UUID for TLS container |
default_pool_id | UUID | UUID of the pool to which requests will be routed by default |
project_id | String | UUID for project |
name | String | String detailing the name of the listener |
description | String | String detailing information about the listener |
enabled | Boolean | Whether or not the listener should be online immediately |
operating_status | String | Network status of a listener |
provisioning_status | String | Physical status of a listener |
insert_headers | Dictionary | Dictionary of additional headers insertion into HTTP header |
Retrieve a list of listeners.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
[
{
'tls_certificate_id': null,
'protocol': 'HTTP',
'description': 'listener_description',
'provisioning_status': 'ACTIVE',
'connection_limit': 10,
'enabled': true,
'sni_containers': [],
'protocol_port': 80,
'id': 'uuid',
'operating_status': 'ONLINE',
'name': 'listener_name',
'default_pool_id': 'uuid'
}
]
Retrieve details of a listener.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id} | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'tls_certificate_id': null,
'protocol': 'HTTP',
'description': 'listener_description',
'provisioning_status': 'ACTIVE',
'connection_limit': 10,
'enabled': true,
'sni_containers': [],
'protocol_port': 80,
'id': 'uuid',
'operating_status': 'ONLINE',
'name': 'listener_name',
'default_pool_id': 'uuid'
}
Retrieve the stats of a listener.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/stats | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'bytes_in': 1000,
'bytes_out': 1000,
'active_connections': 1,
'total_connections': 1
}
Create a listener.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners | |
Response Codes | Success | 202 |
Error | 400, 401, 404,409,500 |
Parameters | Required |
---|---|
protocol | yes |
protocol_port | yes |
connection_limit | no |
default_tls_container_id | no |
project_id | no |
name | no |
description | no |
default_pool_id | no |
enabled | no |
insert_headers | no |
Request Example:
{
'protocol': 'HTTPS',
'protocol_port': 88,
'connection_limit': 10,
'default_tls_container_id': 'uuid',
'name': 'listener_name',
'description': 'listener_description',
'default_pool_id': 'uuid',
'enabled': true,
'insert_headers': {'X-Forwarded-For': 'true', 'X-Forwarded-Port': 'true'}
}
Response Example:
{
'tls_certificate_id': null,
'protocol': 'HTTPS',
'description': 'listener_description',
'provisioning_status': 'PENDING_CREATE',
'connection_limit': 10,
'enabled': true,
'sni_containers': [],
'protocol_port': 88,
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'listener_name',
'default_pool_id': 'uuid'
}
Modify mutable fields of a listener.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id} | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
protocol | no |
protocol_port | no |
connection_limit | no |
default_tls_container_id | no |
name | no |
description | no |
default_pool_id | no |
enabled | no |
Request Example:
{
'protocol': 'HTTPS',
'protocol_port': 88,
'connection_limit': 10,
'default_tls_container_id': 'uuid',
'name': 'listener_name',
'description': 'listener_description',
'default_pool_id': 'uuid',
'enabled': true
}
Response Example:
{
'tls_certificate_id': null,
'protocol': 'HTTPS',
'description': 'listener_description',
'provisioning_status': 'ACTIVE',
'connection_limit': 10,
'enabled': true,
'sni_containers': [],
'protocol_port': 88,
'id': 'uuid',
'operating_status': 'ONLINE',
'name': 'listener_name',
'default_pool_id': 'uuid'
}
Delete a listener.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id} | |
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
No request/reponse body
Fully Populated Pool Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | Pool ID |
protocol | String | Network protocol from the following: TCP, HTTP, HTTPS |
lb_algorithm | UUID | Load balancing algorithm from the following: LEAST_CONNECTIONS, SOURCE_IP, ROUND_ROBIN |
session_persistence | Session Persistence Object | JSON Session Persistence object (see below) |
name | String | String for pool name |
description | String | String detailing information about the pool |
enabled | Boolean | Whether or not the pool should be online immediately |
Fully Populated Session Persistence Object | ||
Parameters | Type | Description |
type | String | Type of session persistence from the following: HTTP_COOKIE, SOURCE_IP |
cookie_name | String | The name of the cookie. (Only required for HTTP_COOKIE) |
Retrieve a list of pools on a loadbalancer. This API endpoint will list all pools on a loadbalancer or optionally all the active pools on a listener, depending on whether the listener_id query string is appended below.
Request Type | GET | |
Endpoints | URL/v1/loadbalancers/{lb_id}/pools[?listener_id={listener_id}] DEPRECATED URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools |
|
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
[
{
'id': 'uuid',
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'pool_name',
'description': 'pool_description',
'enabled': true,
'operating_status': 'ONLINE'
}
]
Retrieve details of a pool.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id} |
|
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'id': 'uuid',
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'pool_name',
'description': 'pool_description',
'enabled': true,
'operating_status': 'ONLINE'
}
Create a pool.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Parameters | Required |
---|---|
protocol | yes |
lb_algorithm | yes |
session_persistence | no |
name | no |
description | no |
enabled | no |
Request Example:
{
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'pool_name',
'description': 'pool_description',
'enabled': true
}
Response Example:
{
'lb_algorithm': 'ROUND_ROBIN',
'protocol': 'HTTP',
'description': 'pool_description',
'enabled': true,
'session_persistence': {
'cookie_name': 'cookie_name',
'type': 'HTTP_COOKIE'
},
'id': 'uuid',
'operating_status': 'OFFLINE',
'name': 'pool_name'
}
Modify mutable attributes of a pool.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id} |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
protocol | no |
lb_algorithm | yes |
session_persistence | no |
name | no |
description | no |
enabled | no |
Request Example:
{
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'diff_pool_name',
'description': 'pool_description',
'enabled': true
}
Response Example:
{
'id': 'uuid',
'protocol': 'HTTP',
'lb_algorithm': 'ROUND_ROBIN',
'session_persistence': {
'type': 'HTTP_COOKIE',
'cookie_name': 'cookie_name'
},
'name': 'diff_pool_name',
'description': 'pool_description',
'enabled': true,
'operating_status': 'ONLINE'
}
Delete a pool.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id} |
|
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
No request/reponse body
Fully Populated Health Monitor Object | ||
---|---|---|
Parameters | Type | Description |
type | String | Type of health monitoring from the following: PING, TCP, HTTP, HTTPS |
delay | Integer | Delay between health checks |
timeout | Integer | Timeout to decide whether or not a health check fails |
fall_threshold | Integer | Number of health checks that can fail before the pool member is moved from ONLINE to OFFLINE |
rise_threshold | Integer | Number of health checks that can pass before the pool member is moved from OFFLINE to ONLINE |
http_method | String | HTTP protocol method to use for the health check request |
url_path | String | URL endpoint to hit for the health check request |
expected_codes | String | Comma separated list of expected response codes during the health check |
enabled | Boolean | Enable/Disable health monitoring |
Retrieve details of a health monitor.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/healthmonitor DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/healthmonitor |
|
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
Create a health monitor.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/healthmonitor DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/healthmonitor |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Parameters | Required |
---|---|
type | yes |
delay | yes |
timeout | yes |
fall_threshold | yes |
rise_threshold | yes |
http_method | no |
url_path | no |
expected_codes | no |
enabled | no |
Request Example:
{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
Response Example:
{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
Modify mutable attributes of a health monitor.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/healthmonitor DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/healthmonitor |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
type | no |
delay | no |
timeout | no |
fall_threshold | no |
rise_threshold | no |
http_method | no |
url_path | no |
expected_codes | no |
enabled | no |
Request Example:
{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
Response Example:
{
'type': 'HTTP',
'delay': 10,
'timeout': 10,
'fall_threshold': 10,
'rise_threshold': 10,
'http_method': 'GET',
'url_path': '/some/custom/path',
'expected_codes': '200',
'enabled': true
}
Delete a health monitor.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/healthmonitor DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/healthmonitor |
|
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
Fully Populated Pool Member Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | Pool member ID |
ip_address | String | IP address of the pool member |
protocol_port | String | Port for the protocol to listen on |
weight | String | Weight of the pool member |
subnet_id | UUID | UUID of the subnet this pool member lives on |
enabled | Boolean | Whether or not the pool member should be online immediately |
operating_status | String | Network status of the pool member |
Retrieve a list of pool members.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/members DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/members |
|
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
[
{
'id': 'uuid',
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true,
'operating_status': 'ONLINE'
}
]
Retrieve details of a pool member.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/members/{member_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/members/{member_id} |
|
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'id': 'uuid',
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true,
'operating_status': 'ONLINE'
}
Create a pool member.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/members DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/members |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Parameters | Required |
---|---|
ip_address | yes |
protocol_port | yes |
weight | yes |
subnet_id | no |
enabled | no |
Request Example:
{
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true
}
Response Example:
{
'id': 'uuid',
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true,
'operating_status': 'ONLINE'
}
Modify mutable attributes of a pool member.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/members/{member_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/members/{member_id} |
|
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
protocol_port | no |
weight | no |
enabled | no |
Request Example:
{
'protocol_port': 80,
'weight': 10,
'enabled': true
}
Response Example:
{
'id': 'uuid',
'ip_address': '10.0.0.1',
'protocol_port': 80,
'weight': 10,
'subnet_id': 'uuid',
'enabled': true,
'operating_status': 'ONLINE'
}
Delete a pool member.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/pools/{pool_id}/members/{member_id} DEPRECATED: URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/pools/{pool_id}/members/{member_id} |
|
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
Layer 7 policies can be used to alter the behavior of the load balancing service such that some action can be taken other than sending requests to the listener’s default_pool. If a given request matches all the layer 7 rules associated with a layer 7 policy, that layer 7 policy’s action will be taken instead of the default behavior.
Fully Populated L7Policy Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | L7 Policy ID |
name | String | String detailing the name of the l7policy |
description | String | String detailing information about the l7policy |
action | String | What action to take if the l7policy is matched |
redirect_pool_id | UUID | ID of the pool to which requests should be sent if action is REDIRECT_TO_POOL |
redirect_url | String | URL to which requests should be redirected if action is REDIRECT_TO_URL |
position | Integer | Sequence number of this L7 Policy. L7 Policies are evaluated in order starting with 1. |
enabled | Boolean | Whether or not the l7policy should be online immediately |
Layer 7 Policy actions
L7 policy action | Description |
---|---|
REJECT | Requests matching this policy will be blocked. |
REDIRECT_TO_POOL | Requests matching this policy will be sent to the pool referenced by redirect_pool_id |
REDIRECT_TO_URL | Requests matching this policy will be redirected to the URL referenced by redirect_url |
Retrieve a list of layer 7 policies.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
[
{
'id': 'uuid',
'name': 'Policy Name',
'description': 'Policy Description',
'action': 'REDIRECT_TO_POOL',
'redirect_pool_id': 'uuid',
'redirect_url': None,
'position': 1,
'enabled': True,
},
{
'id': 'uuid',
'name': 'Policy Name 2',
'description': 'Policy Description 2',
'action': 'REDIRECT_TO_URL',
'redirect_pool_id': None,
'redirect_url': 'http://www.example.com',
'position': 2,
'enabled': True,
}
]
Retrieve details of a layer 7 policy.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'id': 'uuid',
'name': 'Policy Name',
'description': 'Policy Description',
'action': 'REDIRECT_TO_POOL',
'redirect_pool_id': 'uuid',
'redirect_url': None,
'position': 1,
'enabled': True,
}
Create a layer 7 policy.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Parameters | Required |
---|---|
name | no |
description | no |
action | yes |
redirect_pool_id | only if action == REDIRECT_TO_POOL |
redirect_url | only if action == REDIRECT_TO_URL |
position | no (defaults to append to list) |
enabled | no (defaults to True) |
Request Example:
{
'action': 'REDIRECT_TO_POOL',
'redirect_pool_id': 'uuid'
}
Response Example:
{
'id': 'uuid',
'name': None,
'description': None,
'action': 'REDIRECT_TO_POOL',
'redirect_pool_id': 'uuid',
'redirect_url': None,
'position': 1,
'enabled': True
}
Modify mutable attributes of a layer 7 policy.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
name | no |
description | no |
action | no |
redirect_pool_id | only if action == REDIRECT_TO_POOL |
redirect_url | only if action == REDIRECT_TO_URL |
position | no |
enabled | no |
Request Example:
{
'action': 'REDIRECT_TO_URL',
'redirect_url': 'http://www.example.com',
'enabled': True
}
Response Example:
{
'id': 'uuid',
'name': None,
'description': None,
'action': 'REDIRECT_TO_URL',
'redirect_pool_id': None,
'redirect_url': 'http://www.example.com',
'position': 1,
'enabled': True
}
Delete a layer 7 policy.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} | |
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |
Layer 7 rules are individual statements of logic which match parts of an HTTP request, session, or other protocol-specific data for any given client request. All the layer 7 rules associated with a given layer 7 policy are logically ANDed together to see wether the policy matches a given client request. If logical OR behavior is desired instead, the user should instead create multiple layer 7 policies with rules which match each of the components of the logical OR statement.
Fully Populated L7Rule Object | ||
---|---|---|
Parameters | Type | Description |
id | UUID | L7 Rule ID |
type | String | type of L7 rule (see chart below) |
compare_type | String | comparison type to be used with the value in this L7 rule (see chart below) |
key | String | Header or cookie name to match if rule type is HEADER or COOKIE |
value | String | value to be compared with |
invert | Boolean | inverts the logic of the rule if True (ie. perform a logical NOT on the rule) |
Layer 7 rule types
L7 rule type | Description | Valid comparisons |
---|---|---|
HOST_NAME | Matches against the http Host: header in the request. | REGEX, STARTS_WITH, ENDS_WITH, CONTAINS, EQUAL_TO |
PATH | Matches against the path portion of the URL requested | REGEX, STARTS_WITH, ENDS_WITH, CONTAINS, EQUAL_TO |
FILE_TYPE | Matches against the file name extension in the URL requested | REGEX, EQUAL_TO |
HEADER | Matches against a specified header in the request | REGEX, STARTS_WITH, ENDS_WITH, CONTAINS, EQUAL_TO |
COOKIE | Matches against a specified cookie in the request | REGEX, STARTS_WITH, ENDS_WITH, CONTAINS, EQUAL_TO |
Layer 7 rule comparison types
L7 rule compare type | Description |
---|---|
REGEX | string will be evaluated against regular expression stored in value |
STARTS_WITH | start of string will be compared against value |
ENDS_WITH | end of string will be compared against value |
CONTAINS | string contains value |
EQUAL_TO | string is exactly equal to value |
Retrieve a list of layer 7 rules.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} /l7rules | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
[
{
'id': 'uuid',
'type': 'PATH',
'compare_type': 'STARTS_WITH',
'key': None,
'value': '/api',
'invert': False
},
{
'id': 'uuid',
'type': 'COOKIE',
'compare_type': 'REGEX',
'key': 'my-cookie',
'value': 'some-value',
'invert': True
}
]
Retrieve details of a layer 7 rule.
Request Type | GET | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} /l7rules/{l7rule_id} | |
Response Codes | Success | 200 |
Error | 401, 404, 500 |
Response Example:
{
'id': 'uuid',
'type': 'PATH',
'compare_type': 'STARTS_WITH',
'key': None,
'value': '/api',
'invert': False
}
Create a layer 7 rule.
Request Type | POST | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} /l7rules | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 500 |
Parameters | Required |
---|---|
type | yes |
compare_type | yes |
key | only if type is HEADER or COOKIE |
value | yes |
invert | no (Defaults to False) |
Request Example:
{
'type': 'HOST_NAME',
'compare_type': 'ENDS_WITH',
'value': '.example.com'
}
Response Example:
{
'id': 'uuid',
'type': 'HOST_NAME',
'compare_type': 'ENDS_WITH',
'key': None,
'value': '.example.com',
'invert': False
}
Modify mutable attributes of a layer 7 rule.
Request Type | PUT | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} /l7rules/{l7rule_id} | |
Response Codes | Success | 202 |
Error | 400, 401, 404, 409, 500 |
Parameters | Required |
---|---|
type | no |
compare_type | no |
key | only if type is HEADER or COOKIE |
value | no |
invert | no |
Request Example:
{
'type': 'HEADER',
'compare_type': 'CONTAINS',
'key': 'X-My-Header',
'value': 'sample_substring'
}
Response Example:
{
'id': 'uuid',
'type': 'HEADER',
'compare_type': 'CONTAINS',
'key': 'X-My-Header',
'value': 'sample_substring',
'invert': False
}
Delete a layer 7 rule.
Request Type | DELETE | |
Endpoint | URL/v1/loadbalancers/{lb_id}/listeners/{listener_id}/l7policies/{l7policy_id} /l7rules/{l7rule_id} | |
Response Codes | Success | 202 |
Error | 401, 404, 409, 500 |