Python interface to Rackspace Load Balancer as a Service product
Project description
- Homepage:
- Credits:
Copyright 2011 Chmouel Boudjnah <chmouel@chmouel.com>
- Licence:
BSD
Usage
Not much documentation at the moment but just some quick typical usage scripts you can do with this library. This is based on the latest version from :
http://docs.rackspacecloud.com/loadbalancers/api/clb-devguide-latest.pdf
Create a LoadBalancer:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
node1 = cloudlb.Node(address="10.180.160.131",
port=80,
condition="ENABLED")
virtualIP1 = cloudlb.VirtualIP(
type="PUBLIC")
clb.loadbalancers.create(name="mytestinglb",
port=80,
protocol="HTTP",
nodes=[node1],
virtualIps=[virtualIp1])
List LoadBalancers:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
for lb in lbs:
print "%s has %s node attached with IP addresses:" % (lb.name, len(lb.nodes))
for ip in lb.virtualIps:
print "%s/%s" % (ip.ipVersion, ip.address)
List LoadBalancers who have nodes that belong to it:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
ip = '10.1.1.1'
lbs = clb.loadbalancers.search(ip)
for lb in lbs:
print "%s has %s node attached" % (lb.name, ip))
Get LB by ID:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
clb.authenticate()
lb = clb.loadbalancers.get(LoadBalancerID)
Delete LB:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lb = clb.loadbalancers.get(LoadBalancerID)
lb.delete()
List nodes of a LB:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
lb = lbs[0] #get the first one
nodes=lb.nodes.filter(status='ENABLED')
for node in nodes:
print node.address
Filter nodes via condition of a LB:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
lb = lbs[0] #get the first one
for node in lb.nodes:
print node.address
Add a node to a LB:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
newnode = cloudlb.Node(address="10.180.160.131",
port=80,
condition="ENABLED")
lbs = clb.loadbalancers.list()
lb = lbs[0] #add to the first one
lb.add_nodes([newnode])
Delete a node from a LB:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
lb = lbs[0] #add to the first one
node = lb.nodes[0] #get the first node
node.delete() #delete it
Update attributes of a node:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #add to the first one
nodeid = 14106
nodes = mylb.nodes
node = mylb.nodes.get(nodeid)
toggle_status = node.condition == "ENABLED" and "DISABLED" or "ENABLED"
node.condition = toggle_status
node.update()
Get weight of a node by using .get():
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #add to the first one
nodeid = 14106
nodes = mylb.nodes
node = mylb.nodes.get(nodeid)
print node.weight
Update attributes on LoadBalancer:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
mylb.protocol = "FTP"
mylb.name = "APrettyNewName"
mylb.update()
Get usage statistics on all LoadBalancers:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
print clb.get_usage()
Get usage statistics on a specfic LoadBalancer:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
print mylb.get_usage()
Get real-time statistics on a specific LoadBalancer:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
print mylb.get_stats()
Get limits on all LoadBalancers:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
print clb.get_limits()
Get Load Balancing Algorithms:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
print clb.get_algorithms()
Get Load Balancing Protocols:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
print clb.get_protocols()
Get current Health Monitor:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
hm_monitor = mylb.healthmonitor()
print hm_monitor.get()
Monitor loadbalancer using simple TCP Connect:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
hm_monitor = mylb.healthmonitor()
hm = cloudlb.healthmonitor.HealthMonitor(
type="CONNECT",
delay=10,
timeout=10,
attemptsBeforeDeactivation=3)
hm_monitor.add(hm)
Monitor loadbalancer using HTTP(s):
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
hm_monitor = mylb.healthmonitor()
hm = cloudlb.healthmonitor.HealthMonitor(
type="HTTP", #or HTTPS
delay=10,
timeout=10,
attemptsBeforeDeactivation=3,
path="/",
statusRegex="^[234][0-9][0-9]$",
bodyRegex="testing")
hm_monitor.add(hm)
Delete Health Monitor rule:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
hm_monitor = mylb.healthmonitor()
hm_monitor.delete()
Add http cookie session persistence:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
ss = cloudlb.sessionpersistence.SessionPersistence(persistenceType="HTTP_COOKIE")
ssp = mylb.session_persistence()
ssp.add(ss)
Get session persistence:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
ssp = mylb.session_persistence()
print ssp.get()
Delete session persistence configuration:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
ssp = mylb.session_persistence()
ssp.delete()
Enable/Disable Connection Logging:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
cl = mylb.connection_logging()
#Get connection logging status
print cl.get()
#Enable connection logging
cl.enable()
#Disable connection logging
cl.disable()
Access Lists:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
accesslist = mylb.accesslist()
networkItem1 = cloudlb.accesslist.NetworkItem(
address="10.20.30.40", type="ALLOW")
networkItem2 = cloudlb.accesslist.NetworkItem(
address="0.0.0.0/0", type="DENY")
# Allow only 10.20.30.40
accesslist.add([networkItem1, networkItem2])
# List accesslists
print accesslist.list()
# Delete all accesslist
accesslist.delete()
# Delete accesslist by ID
accesslist.delete(id=62)
Custom Error Page:
#!/usr/bin/python
import cloudlb
clb = cloudlb.CloudLoadBalancer("username", "apikey","chicago")
lbs = clb.loadbalancers.list()
mylb = lbs[0] #first lb
errorpage = mylb.errorpage()
# Display current error page
print errorpage.get()
# Change the error page
errorpage.add('<html><body><h1>Error</h1></body></html>')
# Revert to the default error page
errorpage.delete()
LICENSE
See COPYING for license information. Copyright © 2011, Rackspace US, Inc.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file python-cloudlb-0.6.2.tar.gz.
File metadata
- Download URL: python-cloudlb-0.6.2.tar.gz
- Upload date:
- Size: 20.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ed95fbd32b345c564945e52bd6f853303d5dec096beab12756ea957fd1d462e
|
|
| MD5 |
baf2e91417f68d508cff816e97ee0142
|
|
| BLAKE2b-256 |
41d5eb4f6637f25e116c8a951151771858322b750be4591b2a6a0e7cea41deb7
|