Python interface to Rackspace Cloud Load Balancers
- 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.
Metadata
Release files for python-cloudlb 0.6.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| python-cloudlb-0.6.2.tar.gz | 20.4 kB | Without provenance | Details for python-cloudlb-0.6.2.tar.gz |
Release files / python-cloudlb-0.6.2.tar.gz
| Download URL | python-cloudlb-0.6.2.tar.gz |
|---|---|
| Size | 20.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0ed95fbd32b345c564945e52bd6f853303d5dec096beab12756ea957fd1d462e
|
|
BLAKE2b-256 checksum How to use checksums |
41d5eb4f6637f25e116c8a951151771858322b750be4591b2a6a0e7cea41deb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for python-cloudlb 0.6.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.