{ "info": { "author": "Chmouel Boudjnah", "author_email": "chmouel@chmouel.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Internet :: WWW/HTTP", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Distributed Computing", "Topic :: Utilities" ], "description": "==================================================================\n Python interface to Rackspace Cloud Load Balancers \n==================================================================\n\n:Homepage: https://github.com/chmouel/python-cloudlb\n:Credits: Copyright 2011 Chmouel Boudjnah \n:Licence: BSD\n\n\nUsage\n=====\n\nNot much documentation at the moment but just some quick typical usage\nscripts you can do with this library. This is based on the latest version from :\n\nhttp://docs.rackspacecloud.com/loadbalancers/api/clb-devguide-latest.pdf\n\nCreate a LoadBalancer::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n node1 = cloudlb.Node(address=\"10.180.160.131\",\n port=80,\n condition=\"ENABLED\")\n\n\n virtualIP1 = cloudlb.VirtualIP(\n type=\"PUBLIC\") \n\n clb.loadbalancers.create(name=\"mytestinglb\",\n port=80,\n protocol=\"HTTP\",\n nodes=[node1],\n virtualIps=[virtualIp1])\n \n\nList LoadBalancers::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n lbs = clb.loadbalancers.list()\n for lb in lbs:\n print \"%s has %s node attached with IP addresses:\" % (lb.name, len(lb.nodes))\n for ip in lb.virtualIps:\n print \"%s/%s\" % (ip.ipVersion, ip.address)\n\nList LoadBalancers who have nodes that belong to it::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n ip = '10.1.1.1'\n lbs = clb.loadbalancers.search(ip)\n for lb in lbs:\n print \"%s has %s node attached\" % (lb.name, ip))\n\nGet LB by ID::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n clb.authenticate()\n\n lb = clb.loadbalancers.get(LoadBalancerID)\n\nDelete LB::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n lb = clb.loadbalancers.get(LoadBalancerID)\n lb.delete()\n\nList nodes of a LB::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n lbs = clb.loadbalancers.list()\n lb = lbs[0] #get the first one\n nodes=lb.nodes.filter(status='ENABLED')\n for node in nodes:\n print node.address\n\nFilter nodes via condition of a LB::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n lbs = clb.loadbalancers.list()\n lb = lbs[0] #get the first one\n for node in lb.nodes:\n print node.address\n\nAdd a node to a LB::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n newnode = cloudlb.Node(address=\"10.180.160.131\",\n port=80,\n condition=\"ENABLED\")\n\n lbs = clb.loadbalancers.list()\n lb = lbs[0] #add to the first one\n\n lb.add_nodes([newnode])\n \n\nDelete a node from a LB::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n lb = lbs[0] #add to the first one\n\n node = lb.nodes[0] #get the first node\n\n node.delete() #delete it\n\nUpdate attributes of a node::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #add to the first one\n\n nodeid = 14106\n nodes = mylb.nodes \n node = mylb.nodes.get(nodeid)\n toggle_status = node.condition == \"ENABLED\" and \"DISABLED\" or \"ENABLED\"\n node.condition = toggle_status\n node.update()\n\nGet weight of a node by using .get()::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #add to the first one\n\n nodeid = 14106\n nodes = mylb.nodes \n node = mylb.nodes.get(nodeid)\n print node.weight\n\nUpdate attributes on LoadBalancer::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n\n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n mylb.protocol = \"FTP\"\n mylb.name = \"APrettyNewName\"\n\n mylb.update()\n\nGet usage statistics on all LoadBalancers::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n print clb.get_usage()\n\nGet usage statistics on a specfic LoadBalancer::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n print mylb.get_usage()\n\nGet real-time statistics on a specific LoadBalancer::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n print mylb.get_stats()\n\nGet limits on all LoadBalancers::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n print clb.get_limits()\n\nGet Load Balancing Algorithms::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n print clb.get_algorithms()\n\nGet Load Balancing Protocols::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n print clb.get_protocols()\n\nGet current Health Monitor::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n hm_monitor = mylb.healthmonitor()\n print hm_monitor.get()\n\nMonitor loadbalancer using simple TCP Connect::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n hm_monitor = mylb.healthmonitor()\n hm = cloudlb.healthmonitor.HealthMonitor(\n type=\"CONNECT\",\n delay=10,\n timeout=10,\n attemptsBeforeDeactivation=3)\n \n hm_monitor.add(hm)\n\nMonitor loadbalancer using HTTP(s)::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n hm_monitor = mylb.healthmonitor()\n hm = cloudlb.healthmonitor.HealthMonitor(\n type=\"HTTP\", #or HTTPS\n delay=10,\n timeout=10,\n attemptsBeforeDeactivation=3,\n path=\"/\",\n statusRegex=\"^[234][0-9][0-9]$\",\n bodyRegex=\"testing\")\n hm_monitor.add(hm)\n\nDelete Health Monitor rule::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n hm_monitor = mylb.healthmonitor()\n hm_monitor.delete()\n\nAdd http cookie session persistence::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n ss = cloudlb.sessionpersistence.SessionPersistence(persistenceType=\"HTTP_COOKIE\")\n\n ssp = mylb.session_persistence()\n ssp.add(ss)\n\nGet session persistence::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n ssp = mylb.session_persistence()\n print ssp.get()\n\nDelete session persistence configuration::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n\n ssp = mylb.session_persistence()\n ssp.delete()\n\nEnable/Disable Connection Logging::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n cl = mylb.connection_logging()\n \n #Get connection logging status\n print cl.get()\n\n #Enable connection logging\n cl.enable()\n \n #Disable connection logging\n cl.disable()\n\nAccess Lists::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n accesslist = mylb.accesslist()\n\n networkItem1 = cloudlb.accesslist.NetworkItem(\n address=\"10.20.30.40\", type=\"ALLOW\")\n\n networkItem2 = cloudlb.accesslist.NetworkItem(\n address=\"0.0.0.0/0\", type=\"DENY\")\n \n # Allow only 10.20.30.40\n accesslist.add([networkItem1, networkItem2])\n\n # List accesslists\n print accesslist.list()\n\n # Delete all accesslist\n accesslist.delete()\n\n # Delete accesslist by ID\n accesslist.delete(id=62) \n\nCustom Error Page::\n\n #!/usr/bin/python\n import cloudlb\n clb = cloudlb.CloudLoadBalancer(\"username\", \"apikey\",\"chicago\")\n \n lbs = clb.loadbalancers.list()\n mylb = lbs[0] #first lb\n errorpage = mylb.errorpage()\n\n # Display current error page\n print errorpage.get()\n\n # Change the error page\n errorpage.add('

Error

')\n\n # Revert to the default error page\n errorpage.delete() \n\n\nLICENSE\n=======\n\nSee COPYING for license information. Copyright \u00a9 2011, Rackspace US, Inc.\n\nAuthor\n======\n\nChmouel Boudjnah ", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/rackerlabs/python-cloudlb/zipball/0.6.2", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/rackerlabs/python-cloudlb", "keywords": null, "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "python-cloudlb", "package_url": "https://pypi.org/project/python-cloudlb/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/python-cloudlb/", "project_urls": { "Download": "https://github.com/rackerlabs/python-cloudlb/zipball/0.6.2", "Homepage": "https://github.com/rackerlabs/python-cloudlb" }, "release_url": "https://pypi.org/project/python-cloudlb/0.6.2/", "requires_dist": null, "requires_python": null, "summary": "Python interface to Rackspace Load Balancer as a Service product", "version": "0.6.2" }, "last_serial": 1116028, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "69906f0ee9d9d9221f25ebd73d5a195d", "sha256": "e0fad1b1f57e217fb8d5595707f53562f7b52ec8652841be8e78d3dab2a7ebcc" }, "downloads": -1, "filename": "python-cloudlb-0.1.tar.gz", "has_sig": false, "md5_digest": "69906f0ee9d9d9221f25ebd73d5a195d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17027, "upload_time": "2011-03-28T12:32:23", "url": "https://files.pythonhosted.org/packages/4e/7b/a41029a9c93517bfb367d8c8102949c950c9925a53a0729642e9b5603f39/python-cloudlb-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "68dd9094a9afe5123e6112c3403cfef7", "sha256": "344bed84adb71cb9fbf9bfdcc8d213c2a6d2bdda77905fc10ce56733dbe66fc7" }, "downloads": -1, "filename": "python-cloudlb-0.2.tar.gz", "has_sig": false, "md5_digest": "68dd9094a9afe5123e6112c3403cfef7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17040, "upload_time": "2011-03-28T12:34:06", "url": "https://files.pythonhosted.org/packages/10/ee/1d2c6e153e7ea33cc6ecf0b81ee7d9cd0508d34f5691c430a7a3461b13a2/python-cloudlb-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "9c3d143af1967cfe029662db5e1bade8", "sha256": "9b03cf47e18799627b2a35f1d0ef67e1a709aaa3f90dc7b6fbba80ec39556a3d" }, "downloads": -1, "filename": "python-cloudlb-0.3.tar.gz", "has_sig": false, "md5_digest": "9c3d143af1967cfe029662db5e1bade8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17060, "upload_time": "2011-05-06T13:31:04", "url": "https://files.pythonhosted.org/packages/12/22/d95622f5e0de274fefa38f26aabb5ec795018513e4f201dbaad6f634a425/python-cloudlb-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "c7ce7f0730e572c731f006b66fc2a80a", "sha256": "49e36cc6827ba491141fa8dfe06bede005b217c8cc1a42d46a6405b4caa7c1b3" }, "downloads": -1, "filename": "python-cloudlb-0.4.tar.gz", "has_sig": false, "md5_digest": "c7ce7f0730e572c731f006b66fc2a80a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20821, "upload_time": "2012-05-14T03:22:30", "url": "https://files.pythonhosted.org/packages/c3/94/6495c23b802fde29a23432d0c8e68be0597b6dfbccf2dd6c2b248cc03bfe/python-cloudlb-0.4.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "801b92dd993897068a8ec71e93bf9a4d", "sha256": "4af33931de92e9aea95972ee95888a85442752fcddc193ac3b91b0b15a006241" }, "downloads": -1, "filename": "python-cloudlb-0.5.1.tar.gz", "has_sig": false, "md5_digest": "801b92dd993897068a8ec71e93bf9a4d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21421, "upload_time": "2012-06-03T02:48:42", "url": "https://files.pythonhosted.org/packages/8c/89/2abd0f20c50112d644cc2630d0861064d446ab133327895618b1a7036f44/python-cloudlb-0.5.1.tar.gz" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "25caf7fa8989dc5f8efcbb0267f0fca3", "sha256": "1acea49182093f3c3f60c646fb19c232ffb81c1e6f0c5af02673a13ccbfbba0a" }, "downloads": -1, "filename": "python-cloudlb-0.6.1.tar.gz", "has_sig": false, "md5_digest": "25caf7fa8989dc5f8efcbb0267f0fca3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20343, "upload_time": "2014-06-05T20:21:12", "url": "https://files.pythonhosted.org/packages/97/24/1f52875500d1cbe5595e6aa628e8d4d4157440da363e3b2804654e03eb4f/python-cloudlb-0.6.1.tar.gz" } ], "0.6.2": [ { "comment_text": "", "digests": { "md5": "baf2e91417f68d508cff816e97ee0142", "sha256": "0ed95fbd32b345c564945e52bd6f853303d5dec096beab12756ea957fd1d462e" }, "downloads": -1, "filename": "python-cloudlb-0.6.2.tar.gz", "has_sig": false, "md5_digest": "baf2e91417f68d508cff816e97ee0142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20361, "upload_time": "2014-06-05T20:23:19", "url": "https://files.pythonhosted.org/packages/41/d5/eb4f6637f25e116c8a951151771858322b750be4591b2a6a0e7cea41deb7/python-cloudlb-0.6.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "baf2e91417f68d508cff816e97ee0142", "sha256": "0ed95fbd32b345c564945e52bd6f853303d5dec096beab12756ea957fd1d462e" }, "downloads": -1, "filename": "python-cloudlb-0.6.2.tar.gz", "has_sig": false, "md5_digest": "baf2e91417f68d508cff816e97ee0142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20361, "upload_time": "2014-06-05T20:23:19", "url": "https://files.pythonhosted.org/packages/41/d5/eb4f6637f25e116c8a951151771858322b750be4591b2a6a0e7cea41deb7/python-cloudlb-0.6.2.tar.gz" } ] }