Neutron/LBaaS/APIRevisionProposals
Proposal 1
Use Cases
SSL Termination
Single Create LB Call
Request:
POST /loadbalancers
{
"loadbalancer":
{
"name": "Single Call LB",
"port":443,
"protocol": "HTTPS",
"ssl_decryption":
{
"certificate": "CERTIFICATE",
"private_key": "PRIVATE_KEY",
"intermediate_certificate": "INTERMEDIATE_CERTIFICATE"
},
"vips":[
{
"type":"IPv4",
"subnet_id":"SUBNET_UUID"
}
],
"pool":{
"name": "pool1”,
“subnet_id”: “SUBNET_UUID”,
"algorithm": "ROUNDROBIN",
"session_persistence": "COOKIE",
"members": [{
"ip": "10.1.1.1",
"port": 80,
"enabled": true
}],
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
}
}
Response:
{
"loadbalancer":
{
"id": "LB_UUID",
"name": "Single Call LB",
"port":443,
"protocol": "HTTPS",
"ssl_decryption":
{
"id": SSL_DECRYPTION_UUID",
"certificate": "CERTIFICATE",
"private_key": "PRIVATE_KEY",
"intermediate_certificate": "INTERMEDIATE_CERTIFICATE"
},
"vips":[
{
"id": "VIP_UUID",
"address": "12.1.1.1",
"type":"IPv4",
"subnet_id":"SUBNET_UUID"
}
],
"pool":{
"id": "POOL_UUID",
"name": "pool1”,
“subnet_id”: “SUBNET_UUID”,
"algorithm": "ROUNDROBIN",
"session_persistence": "COOKIE",
"members": [{
"id": "MEMBER_UUID",
"ip": "10.1.1.1",
"port": 80,
"enabled": true
}],
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
}
}
Create by Each Primitive
1. Create VIP
Request:
POST /vips
{
"vip":
{
"type": "IPv4",
"subnet_id": "SUBNET_UUID"
}
}
Response:
{
"vip":
{
"id": "VIP_UUID",
"address": "12.1.1.1",
"type": "IPv4",
"subnet_id": "SUBNET_UUID"
}
}
2. Create Pool
Request:
POST /pools
{
"pool": {
"name": "pool1",
"algorithm": "ROUNDROBIN",
"session_persistence": "SOURCE_IP",
"subnet_id": "SUBNET_UUID",
"members": [
{
"ip": "10.1.1.1",
"port": 80
}
]
}
}
Response:
{
"pool": {
"id": "POOL_UUID",
"name": "pool1",
"algorithm": "ROUNDROBIN",
"session_persistence": "SOURCE_IP",
"subnet_id": "SUBNET_UUID",
"members": [
{
"id": "MEMBER_UUID",
"ip": "10.1.1.1",
"port": 80
}
]
}
}
3. Create Health Monitor On Pool
Request:
POST /pools/{pool_uuid}/health_monitor
{
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
Response:
{
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
4. Create SSL Decryption
Request:
POST /ssl_decryption
{
"ssl_decryption":
{
"certificate": "CERTIFICATE",
"private_key": "PRIVATE_KEY",
"intermediate_certificate": "INTERMEDIATE_CERTIFICATE"
}
}
Response:
{
"ssl_decryption":
{
"id": "SSL_DECRYPTION_UUID",
"certificate": "CERTIFICATE",
"private_key": "PRIVATE_KEY",
"intermediate_certificate": "INTERMEDIATE_CERTIFICATE"
}
}
5. Create Load Balancer
Request:
POST /loadbalancers
{
"loadbalancer":
{
"name": "Single Call LB",
"port":443,
"protocol": "HTTPS",
"ssl_decryption":
{
"id": "SSL_DECRYPTION_UUID"
},
"vips":[
{
"id": "VIP_UUID"
}
],
"pool":{
"id": "POOL_UUID"
}
}
}
L7 Switching/Content Switching
Single Create LB Call
In this example, the multiple pools are defined in a content_switching object that is attached to the load balancer object. The rules are to be defined for each pool defined in the content_switching object.
Request:
POST /loadbalancers
{
"loadbalancer":
{
"name": "Single Call LB",
"port":443,
"protocol": "HTTPS",
"content_switching":
{
"enabled": true,
"pools": [
{
"name": "pool2",
"subnet_id": "SUBNET_UUID",
"algorithm": "ROUNDROBIN",
"session_persistence": "COOKIE",
"members": [
{
"ip":"10.1.1.2",
"port": 80,
"enabled": true
},
"rules":[
{
"type": "path",
"match": "/index.html"
}]
}]
},
"vips":[
{
"type":"IPv4",
"subnet_id":"SUBNET_UUID"
}
],
"pool":{
"name": "pool1”,
“subnet_id”: “SUBNET_UUID”,
"algorithm": "ROUNDROBIN",
"session_persistence": "COOKIE",
"members": [{
"ip": "10.1.1.1",
"port": 80,
"enabled": true
}],
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
}
}
Response:
{
"loadbalancer":
{
"id": "LB_UUID",
"name": "Single Call LB",
"port":443,
"protocol": "HTTPS",
"ssl_decryption":
{
"id": SSL_DECRYPTION_UUID",
"certificate": "CERTIFICATE",
"private_key": "PRIVATE_KEY",
"intermediate_certificate": "INTERMEDIATE_CERTIFICATE"
},
"vips":[
{
"id": "VIP_UUID",
"address": "12.1.1.1",
"type":"IPv4",
"subnet_id":"SUBNET_UUID"
}
],
"pool":{
"id": "POOL_UUID",
"name": "pool1”,
“subnet_id”: “SUBNET_UUID”,
"algorithm": "ROUNDROBIN",
"session_persistence": "COOKIE",
"members": [{
"id": "MEMBER_UUID",
"ip": "10.1.1.1",
"port": 80,
"enabled": true
}],
"health_monitor": {
"type": "HTTPS",
"delay": 1,
"timeout": 10,
"interval": 1
}
}
}
}
Create by Each Primitive