python-cloudlb 0.6.2

Creator: railscoder56

Last updated:

Add to Cart

Description:

pythoncloudlb 0.6.2

Homepage:
https://github.com/chmouel/python-cloudlb

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.


Author
Chmouel Boudjnah <chmouel@chmouel.com>

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.