Jump to: navigation, search

Neutron/LBaaS/APIRevisionProposals

< Neutron‎ | LBaaS

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