Author: tomaz
Date: Sat Aug 11 06:25:46 2012
New Revision: 1371873
URL: http://svn.apache.org/viewvc?rev=1371873&view=rev
Log:
Add 'balancer' attribute to the Member instance. This attribute refers to
the LoadBalancer instance this member belongs to.
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/loadbalancer/base.py
libcloud/trunk/libcloud/loadbalancer/drivers/brightbox.py
libcloud/trunk/libcloud/loadbalancer/drivers/cloudstack.py
libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py
libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
libcloud/trunk/libcloud/test/loadbalancer/test_brightbox.py
libcloud/trunk/libcloud/test/loadbalancer/test_cloudstack.py
libcloud/trunk/libcloud/test/loadbalancer/test_gogrid.py
libcloud/trunk/libcloud/test/loadbalancer/test_rackspace.py
Modified: libcloud/trunk/CHANGES
URL:
http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Sat Aug 11 06:25:46 2012
@@ -13,6 +13,12 @@ Changes with Apache Libcloud in developm
ex_set_account_metadata_temp_url_key, ex_get_object_temp_url. ; GITHUB-72
[Shawn Smith]
+ *) Load-balancer
+
+ - Add 'balancer' attribute to the Member instance. This attribute refers to
+ the LoadBalancer instance this member belongs to.
+ [Tomaz Muraus]
+
Changes with Apache Libcloud 0.11.1:
*) General
Modified: libcloud/trunk/libcloud/loadbalancer/base.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/base.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/base.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/base.py Sat Aug 11 06:25:46 2012
@@ -26,10 +26,11 @@ __all__ = [
class Member(object):
- def __init__(self, id, ip, port, extra=None):
+ def __init__(self, id, ip, port, balancer=None, extra=None):
self.id = str(id) if id else None
self.ip = ip
self.port = port
+ self.balancer = balancer
self.extra = extra or {}
def __repr__(self):
@@ -210,9 +211,9 @@ class Driver(BaseDriver):
@rtype: L{Member}
"""
- return self.balancer_attach_member(balancer, Member(None,
- node.public_ips[0],
- balancer.port))
+ return self.balancer_attach_member(balancer, Member(id=None,
+
ip=node.public_ips[0],
+
port=balancer.port))
def balancer_attach_member(self, balancer, member):
"""
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/brightbox.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/brightbox.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/brightbox.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/brightbox.py Sat Aug 11
06:25:46 2012
@@ -102,7 +102,8 @@ class BrightboxLBDriver(Driver):
data = self.connection.request(path).object
- return list(map(self._node_to_member, data['nodes']))
+ func = lambda data: self._node_to_member(data, balancer)
+ return list(map(func, data['nodes']))
def _post(self, path, data={}):
headers = {'Content-Type': 'application/json'}
@@ -123,8 +124,8 @@ class BrightboxLBDriver(Driver):
def _member_to_node(self, member):
return {'node': member.id}
- def _node_to_member(self, data):
- return Member(data['id'], None, None)
+ def _node_to_member(self, data, balancer):
+ return Member(id=data['id'], ip=None, port=None, balancer=balancer)
def _public_ip(self, data):
if len(data['cloud_ips']) > 0:
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/cloudstack.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/cloudstack.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/cloudstack.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/cloudstack.py Sat Aug 11
06:25:46 2012
@@ -122,7 +122,8 @@ class CloudStackLBDriver(CloudStackDrive
members = self._sync_request('listLoadBalancerRuleInstances',
id=balancer.id)
members = members['loadbalancerruleinstance']
- return [self._to_member(m, balancer.ex_private_port) for m in members]
+ return [self._to_member(m, balancer.ex_private_port, balancer) \
+ for m in members]
def _to_balancer(self, obj):
balancer = LoadBalancer(
@@ -137,9 +138,10 @@ class CloudStackLBDriver(CloudStackDrive
balancer.ex_public_ip_id = obj['publicipid']
return balancer
- def _to_member(self, obj, port):
+ def _to_member(self, obj, port, balancer):
return Member(
id=obj['id'],
ip=obj['nic'][0]['ipaddress'],
- port=port
+ port=port,
+ balancer=balancer
)
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py Sat Aug 11 06:25:46
2012
@@ -164,8 +164,8 @@ class GoGridLBDriver(BaseGoGridDriver, D
resp = self._update_balancer(params)
return [m for m in
- self._to_members(resp.object["list"][0]["realiplist"])
- if m.ip == member.ip][0]
+ self._to_members(resp.object["list"][0]["realiplist"], balancer)
+ if m.ip == member.ip][0]
def balancer_detach_member(self, balancer, member):
members = self.balancer_list_members(balancer)
@@ -182,7 +182,7 @@ class GoGridLBDriver(BaseGoGridDriver, D
def balancer_list_members(self, balancer):
resp = self.connection.request('/api/grid/loadbalancer/get',
params={'id': balancer.id})
- return self._to_members(resp.object["list"][0]["realiplist"])
+ return self._to_members(resp.object["list"][0]["realiplist"], balancer)
def _update_balancer(self, params):
try:
@@ -227,11 +227,12 @@ class GoGridLBDriver(BaseGoGridDriver, D
driver=self.connection.driver)
return lb
- def _to_members(self, object):
- return [self._to_member(el) for el in object]
+ def _to_members(self, object, balancer=None):
+ return [self._to_member(el, balancer) for el in object]
- def _to_member(self, el):
+ def _to_member(self, el, balancer=None):
member = Member(id=el["ip"]["id"],
ip=el["ip"]["ip"],
- port=el["port"])
+ port=el["port"],
+ balancer=balancer)
return member
Modified: libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py (original)
+++ libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py Sat Aug 11
06:25:46 2012
@@ -474,7 +474,7 @@ class RackspaceLBDriver(Driver, OpenStac
uri = '/loadbalancers/%s/nodes' % (balancer.id)
resp = self.connection.request(uri, method='POST',
data=json.dumps(member_object))
- return self._to_members(resp.object)[0]
+ return self._to_members(resp.object, balancer)[0]
def ex_balancer_attach_members(self, balancer, members):
"""
@@ -494,7 +494,7 @@ class RackspaceLBDriver(Driver, OpenStac
uri = '/loadbalancers/%s/nodes' % (balancer.id)
resp = self.connection.request(uri, method='POST',
data=json.dumps(member_objects))
- return self._to_members(resp.object)
+ return self._to_members(resp.object, balancer)
def balancer_detach_member(self, balancer, member):
# Loadbalancer always needs to have at least 1 member.
@@ -550,8 +550,8 @@ class RackspaceLBDriver(Driver, OpenStac
def balancer_list_members(self, balancer):
uri = '/loadbalancers/%s/nodes' % (balancer.id)
- return self._to_members(
- self.connection.request(uri).object)
+ data = self.connection.request(uri).object
+ return self._to_members(data, balancer)
def update_balancer(self, balancer, **kwargs):
attrs = self._kwargs_to_mutable_attrs(**kwargs)
@@ -1383,10 +1383,10 @@ class RackspaceLBDriver(Driver, OpenStac
driver=self.connection.driver,
extra=extra)
- def _to_members(self, object):
- return [self._to_member(el) for el in object["nodes"]]
+ def _to_members(self, object, balancer=None):
+ return [self._to_member(el, balancer) for el in object["nodes"]]
- def _to_member(self, el):
+ def _to_member(self, el, balancer=None):
extra = {}
if 'weight' in el:
extra['weight'] = el["weight"]
@@ -1402,6 +1402,7 @@ class RackspaceLBDriver(Driver, OpenStac
lbmember = Member(id=el["id"],
ip=el["address"],
port=el["port"],
+ balancer=balancer,
extra=extra)
return lbmember
Modified: libcloud/trunk/libcloud/test/loadbalancer/test_brightbox.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/loadbalancer/test_brightbox.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/loadbalancer/test_brightbox.py (original)
+++ libcloud/trunk/libcloud/test/loadbalancer/test_brightbox.py Sat Aug 11
06:25:46 2012
@@ -74,6 +74,7 @@ class BrightboxLBTests(unittest.TestCase
members = balancer.list_members()
self.assertEquals(len(members), 1)
+ self.assertEquals(members[0].balancer, balancer)
self.assertEquals('srv-lv426', members[0].id)
def test_balancer_attach_member(self):
Modified: libcloud/trunk/libcloud/test/loadbalancer/test_cloudstack.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/loadbalancer/test_cloudstack.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/loadbalancer/test_cloudstack.py (original)
+++ libcloud/trunk/libcloud/test/loadbalancer/test_cloudstack.py Sat Aug 11
06:25:46 2012
@@ -68,6 +68,7 @@ class CloudStackLBTests(unittest.TestCas
members = balancer.list_members()
for member in members:
self.assertTrue(isinstance(member, Member))
+ self.assertEquals(member.balancer, balancer)
class CloudStackMockHttp(MockHttpTestCase):
fixtures = LoadBalancerFileFixtures('cloudstack')
Modified: libcloud/trunk/libcloud/test/loadbalancer/test_gogrid.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/loadbalancer/test_gogrid.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/loadbalancer/test_gogrid.py (original)
+++ libcloud/trunk/libcloud/test/loadbalancer/test_gogrid.py Sat Aug 11
06:25:46 2012
@@ -115,6 +115,7 @@ class GoGridTests(unittest.TestCase):
self.assertEquals(len(members2), 3)
self.assertEquals(expected_members,
set(["%s:%s" % (member.ip, member.port) for member in
members1]))
+ self.assertEquals(members1[0].balancer, balancer)
def test_balancer_attach_compute_node(self):
balancer = LoadBalancer(23530, None, None, None, None, self.driver)
Modified: libcloud/trunk/libcloud/test/loadbalancer/test_rackspace.py
URL:
http://svn.apache.org/viewvc/libcloud/trunk/libcloud/test/loadbalancer/test_rackspace.py?rev=1371873&r1=1371872&r2=1371873&view=diff
==============================================================================
--- libcloud/trunk/libcloud/test/loadbalancer/test_rackspace.py (original)
+++ libcloud/trunk/libcloud/test/loadbalancer/test_rackspace.py Sat Aug 11
06:25:46 2012
@@ -667,6 +667,7 @@ class RackspaceLBTests(unittest.TestCase
members = balancer.list_members()
self.assertEquals(len(members), 3)
+ self.assertEquals(members[0].balancer, balancer)
self.assertEquals(expected, set(["%s:%s" % (member.ip, member.port) for
member in members]))