You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2011/11/19 21:56:47 UTC
svn commit: r1204075 - in /libcloud/trunk: CHANGES
libcloud/loadbalancer/drivers/rackspace.py
test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json
test/loadbalancer/test_rackspace.py
Author: tomaz
Date: Sat Nov 19 20:56:47 2011
New Revision: 1204075
URL: http://svn.apache.org/viewvc?rev=1204075&view=rev
Log:
Add ex_member_address argument to the Rackspace LoadBalancer driver
list_balancers method.
Added:
libcloud/trunk/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
libcloud/trunk/test/loadbalancer/test_rackspace.py
Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1204075&r1=1204074&r2=1204075&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sat Nov 19 20:56:47 2011
@@ -12,6 +12,13 @@ Changes with Apache Libcloud in developm
ex_stop_node.
[Suvish Vt]
+ *) Load-baancer:
+
+ - Add ex_member_address argument to the Rackspace driver list_balancers
+ method. If this argument is provided, only loadbalancers which have a
+ member with the provided IP address attached are returned.
+ [Tomaz Muraus]
+
Changes with Apache Libcloud 0.6.2:
*) General
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py?rev=1204075&r1=1204074&r2=1204075&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py Sat Nov 19 20:56:47 2011
@@ -87,9 +87,21 @@ class RackspaceLBDriver(Driver):
return self._to_protocols(
self.connection.request('/loadbalancers/protocols').object)
- def list_balancers(self):
+ def list_balancers(self, ex_member_address=None):
+ """
+ @param ex_member_address: Optional IP address of the attachment member.
+ If provided, only the load balancers which
+ have this member attached will be returned.
+ @type ex_member_address: C{str}
+ """
+ params = {}
+
+ if ex_member_address:
+ params['nodeaddress'] = ex_member_address
+
return self._to_balancers(
- self.connection.request('/loadbalancers').object)
+ self.connection.request('/loadbalancers', params=params)
+ .object)
def create_balancer(self, name, members, protocol='http',
port=80, algorithm=DEFAULT_ALGORITHM):
@@ -163,12 +175,21 @@ class RackspaceLBDriver(Driver):
return [ self._to_balancer(el) for el in object["loadBalancers"] ]
def _to_balancer(self, el):
+ ip = None
+ port = None
+
+ if 'virtualIps' in el:
+ ip = el["virtualIps"][0]["address"]
+
+ if 'port' in el:
+ port = el["port"]
+
lb = LoadBalancer(id=el["id"],
name=el["name"],
state=self.LB_STATE_MAP.get(
el["status"], State.UNKNOWN),
- ip=el["virtualIps"][0]["address"],
- port=el["port"],
+ ip=ip,
+ port=port,
driver=self.connection.driver)
return lb
Added: libcloud/trunk/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json?rev=1204075&view=auto
==============================================================================
--- libcloud/trunk/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json (added)
+++ libcloud/trunk/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_nodeaddress.json Sat Nov 19 20:56:47 2011
@@ -0,0 +1,18 @@
+{"loadBalancers": [
+ {
+ "name": "First Loadbalancer",
+ "id": 1,
+ "status": "ACTIVE"
+ },
+ {
+ "name": "Second Loadbalancer",
+ "id": 2,
+ "status": "PENDING_UPDATE"
+ },
+ {
+ "name": "Third Loadbalancer",
+ "id": 8,
+ "status": "ERROR"
+ }
+ ]
+}
Modified: libcloud/trunk/test/loadbalancer/test_rackspace.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/loadbalancer/test_rackspace.py?rev=1204075&r1=1204074&r2=1204075&view=diff
==============================================================================
--- libcloud/trunk/test/loadbalancer/test_rackspace.py (original)
+++ libcloud/trunk/test/loadbalancer/test_rackspace.py Sat Nov 19 20:56:47 2011
@@ -49,9 +49,24 @@ class RackspaceLBTests(unittest.TestCase
self.assertEquals(len(balancers), 2)
self.assertEquals(balancers[0].name, "test0")
self.assertEquals(balancers[0].id, "8155")
+ self.assertEquals(balancers[0].port, 80)
+ self.assertEquals(balancers[0].ip, "1.1.1.25")
self.assertEquals(balancers[1].name, "test1")
self.assertEquals(balancers[1].id, "8156")
+ def test_list_balancers_ex_member_address(self):
+ RackspaceLBMockHttp.type = 'EX_MEMBER_ADDRESS'
+ balancers = self.driver.list_balancers(ex_member_address='127.0.0.1')
+
+ self.assertEquals(len(balancers), 3)
+ self.assertEquals(balancers[0].name, "First Loadbalancer")
+ self.assertEquals(balancers[0].id, "1")
+ self.assertEquals(balancers[1].name, "Second Loadbalancer")
+ self.assertEquals(balancers[1].id, "2")
+ self.assertEquals(balancers[2].name, "Third Loadbalancer")
+ self.assertEquals(balancers[2].id, "8")
+
+
def test_create_balancer(self):
balancer = self.driver.create_balancer(name='test2',
port=80,
@@ -140,6 +155,11 @@ class RackspaceLBMockHttp(MockHttpTestCa
raise NotImplementedError
+ def _v1_0_slug_loadbalancers_EX_MEMBER_ADDRESS(self, method, url, body, headers):
+ body = self.fixtures.load('v1_slug_loadbalancers_nodeaddress.json')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+
def _v1_0_slug_loadbalancers_8155(self, method, url, body, headers):
if method == "DELETE":
return (httplib.ACCEPTED, "", {}, httplib.responses[httplib.ACCEPTED])