# README
Portal
An api-driven, in-kernel layer 2/3 load balancer.
Routes:
Route | Description | payload | output |
---|---|---|---|
Get /services | List all services | nil | json array of service objects |
Post /services | Add a service | json service object | json service object |
Put /services | Reset the list of services | json array of service objects | json array of service objects |
Put /services/:service_id | Reset the specified service | nil | json service object |
Get /services/:service_id | Get information about a service | nil | json service object |
Delete /services/:service_id | Delete a service | nil | success message or an error |
Get /services/:service_id/servers | List all servers on a service | nil | json array of server objects |
Post /services/:service_id/servers | Add new server to a service | json server object | json server object |
Put /services/:service_id/servers | Reset the list of servers on a service | json array of server objects | json array of server objects |
Get /services/:service_id/servers/:server_id | Get information about a server on a service | nil | json server object |
Delete /services/:service_id/servers/:server_id | Delete a server from a service | nil | success message or an error |
Delete /routes | Delete a route | subdomain, domain, and path (json or query) | success message or an error |
Get /routes | List all routes | nil | json array of route objects |
Post /routes | Add new route | json route object | json route object |
Put /routes | Reset the list of routes | json array of route objects | json array of route objects |
Delete /certs | Delete a cert | json cert object | success message or an error |
Get /certs | List all certs | nil | json array of cert objects |
Post /certs | Add new cert | json cert object | json cert object |
Put /certs | Reset the list of certs | json array of cert objects | json array of cert objects |
Delete /vips | Delete a vip | json vip object | success message or an error |
Get /vips | List all vips | nil | json array of vip objects |
Post /vips | Add new vip | json vip object | json vip object |
Put /vips | Reset the list of vips | json array of vip objects | json array of vip objects |
Usage Example:
add service
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services -d \
'{"host":"127.0.0.3", "port":1234, "type":"tcp", "scheduler": "rr", "persistence":0, "netmask":""}'
{"id":"tcp-127_0_0_3-1234","host":"127.0.0.3","port":1234,"type":"tcp","scheduler":"rr","persistence":0,"netmask":""}
list services
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services
[{"id":"tcp-127_0_0_3-1234","host":"127.0.0.3","port":1234,"type":"tcp","scheduler":"rr","persistence":0,"netmask":""}]
get service
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234
{"id":"tcp-127_0_0_3-1234","host":"127.0.0.3","port":1234,"type":"tcp","scheduler":"rr","persistence":0,"netmask":""}
add server
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers \
-d '{"host":"192.168.0.1", "port":8080, "forwarder": "m", "weight": 5, "upper_threshold": 10, "lower_threshold": 1}'
{"id":"192_168_0_1-8080","host":"192.168.0.1","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1}
list servers
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers
[{"id":"192_168_0_1-8080","host":"192.168.0.1","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1}]
get server
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers/192_168_0_1-8080
{"id":"192_168_0_1-8080","host":"192.168.0.1","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1}
delete server
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers/192_168_0_1-8080 -X DELETE
{"msg":"Success"}
list servers
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers
[]
delete service
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234 -X DELETE
{"msg":"Success"}
list services
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services
[]
reset services
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services -d \
'[{"host":"127.0.0.3", "port":1234, "type":"tcp", "scheduler": "rr", "persistence":0, "netmask":"", "servers":[
{"host":"192.168.0.3", "port":8080, "forwarder": "m", "weight": 5, "upper_threshold": 10, "lower_threshold": 1},
{"host":"192.168.0.4", "port":8080, "forwarder": "m", "weight": 4, "upper_threshold": 10, "lower_threshold": 1}]}]' \
-X PUT
[{"id":"tcp-127_0_0_3-1234","host":"127.0.0.3","port":1234,"type":"tcp","scheduler":"rr","persistence":0,"netmask":"","servers":[{"id":"192_168_0_3-8080","host":"192.168.0.3","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1},{"id":"192_168_0_4-8080","host":"192.168.0.4","port":8080,"forwarder":"m","weight":4,"upper_threshold":10,"lower_threshold":1}]}]
reset servers
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services/tcp-127_0_0_3-1234/servers -d \
'[{"host":"192.168.0.5", "port":8080, "forwarder": "m", "weight": 5, "upper_threshold": 10, "lower_threshold": 1},
{"host":"192.168.0.6", "port":8080, "forwarder": "m", "weight": 4, "upper_threshold": 10, "lower_threshold": 1}]' \
-X PUT
[{"id":"192_168_0_5-8080","host":"192.168.0.5","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1},{"id":"192_168_0_6-8080","host":"192.168.0.6","port":8080,"forwarder":"m","weight":4,"upper_threshold":10,"lower_threshold":1}]
list services
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/services
[{"id":"tcp-127_0_0_3-1234","host":"127.0.0.3","port":1234,"type":"tcp","scheduler":"rr","persistence":0,"netmask":"","servers":[{"id":"192_168_0_5-8080","host":"192.168.0.5","port":8080,"forwarder":"m","weight":5,"upper_threshold":10,"lower_threshold":1},{"id":"192_168_0_6-8080","host":"192.168.0.6","port":8080,"forwarder":"m","weight":4,"upper_threshold":10,"lower_threshold":1}]}]
add route
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/routes \
-d '{"domain":"portal.test", "page":"portal works\n"}'
{"subdomain":"","domain":"portal.test","path":"","targets":null,"fwdpath":"","page":"portal works\n"}
delete route
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/routes?domain=portal.test \
-X DELETE
{"msg":"Success"}
## OR
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/routes \
-d '{"domain":"portal.test"}' \
-X DELETE
{"msg":"Success"}
list routes
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/routes
[]
reset routes
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/routes \
-d '[{"domain":"portal.test", "page":"portal works\n"}]' \
-X PUT
[{"subdomain":"","domain":"portal.test","path":"","targets":null,"fwdpath":"","page":"portal works\n"}]
add cert
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/certs \
-d '{"key":"-----BEGIN PRIVATE KEY-----\nMII.../J8\n-----END PRIVATE KEY-----",
"cert":"-----BEGIN CERTIFICATE-----\nMII...aI=\n-----END CERTIFICATE-----"}'
{"key":"-----BEGIN PRIVATE KEY-----\nMII.../J8\n-----END PRIVATE KEY-----", "cert":"-----BEGIN CERTIFICATE-----\nMII...aI=\n-----END CERTIFICATE-----"}
delete cert
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/certs \
-d '{"key":"-----BEGIN PRIVATE KEY-----\nMII.../J8\n-----END PRIVATE KEY-----",
"cert":"-----BEGIN CERTIFICATE-----\nMII...aI=\n-----END CERTIFICATE-----"}' \
-X DELETE
{"msg":"Success"}
list certs
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/certs
[]
reset certs
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/certs \
-d '[{"key":"-----BEGIN PRIVATE KEY-----\nMII.../J8\n-----END PRIVATE KEY-----",
"cert":"-----BEGIN CERTIFICATE-----\nMII...aI=\n-----END CERTIFICATE-----"}]' \
-X PUT
[{"key":"-----BEGIN PRIVATE KEY-----\nMII.../J8\n-----END PRIVATE KEY-----", "cert":"-----BEGIN CERTIFICATE-----\nMII...aI=\n-----END CERTIFICATE-----"}]
add vip
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/vips \
-d '{"ip":"192.168.0.100","interface":"eth0","alias":"eth0:1"}'
[{"ip":"192.168.0.100","interface":"eth0","alias":"eth0:1"}]
delete vip
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/vips \
-d '{"ip":"192.168.0.100","interface":"eth0"}'
-X DELETE
{"msg":"Success"}
list vips
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/vips
[]
reset vips
$ curl -k -H "X-AUTH-TOKEN:" https://127.0.0.1:8443/vips \
-d [{"ip":"192.168.0.100","interface":"eth0","alias":"eth0:1"}]
-X PUT
[{"ip":"192.168.0.100","interface":"eth0","alias":"eth0:1"}]
# Functions
No description provided by the author
# Variables
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author