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/05/14 15:31:38 UTC
svn commit: r1103109 - in /incubator/libcloud/trunk:
libcloud/loadbalancer/drivers/gogrid.py
libcloud/loadbalancer/drivers/rackspace.py test/loadbalancer/test_gogrid.py
test/loadbalancer/test_rackspace.py
Author: tomaz
Date: Sat May 14 13:31:38 2011
New Revision: 1103109
URL: http://svn.apache.org/viewvc?rev=1103109&view=rev
Log:
Update create_balancer method in the GoGrid driver.
Modified:
incubator/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py
incubator/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
incubator/libcloud/trunk/test/loadbalancer/test_gogrid.py
incubator/libcloud/trunk/test/loadbalancer/test_rackspace.py
Modified: incubator/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py?rev=1103109&r1=1103108&r2=1103109&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py (original)
+++ incubator/libcloud/trunk/libcloud/loadbalancer/drivers/gogrid.py Sat May 14 13:31:38 2011
@@ -19,7 +19,7 @@ from libcloud.common.types import Libclo
from libcloud.utils import reverse_dict
from libcloud.common.gogrid import GoGridConnection, BaseGoGridDriver
from libcloud.loadbalancer.base import LoadBalancer, Member, Driver, Algorithm
-from libcloud.loadbalancer.base import DEFAULT_ALGORITHM
+from libcloud.loadbalancer.base import DEFAULT_ALGORITHM
from libcloud.loadbalancer.types import Provider, State, LibcloudLBImmutableError
@@ -37,15 +37,17 @@ class GoGridLBDriver(BaseGoGridDriver, D
}
_ALGORITHM_TO_VALUE_MAP = reverse_dict(_VALUE_TO_ALGORITHM_MAP)
+ def list_protocols(self):
+ # GoGrid only supports http
+ return [ 'http' ]
+
def list_balancers(self):
return self._to_balancers(
self.connection.request('/api/grid/loadbalancer/list').object)
- def ex_create_balancer_nowait(self, name, port, algorithm, members):
- if not algorithm:
- algorithm = DEFAULT_ALGORITHM
- else:
- algorithm = self._algorithm_to_value(algorithm)
+ def ex_create_balancer_nowait(self, name, members, protocol='http', port=80,
+ algorithm=Algorithm.ROUND_ROBIN):
+ algorithm = self._algorithm_to_value(algorithm)
params = {'name': name,
'loadbalancer.type': algorithm,
@@ -58,8 +60,10 @@ class GoGridLBDriver(BaseGoGridDriver, D
params=params)
return self._to_balancers(resp.object)[0]
- def create_balancer(self, name, port, algorithm, members):
- balancer = self.ex_create_balancer_nowait(name, port, algorithm, members)
+ def create_balancer(self, name, members, protocol='http', port=80,
+ algorithm=Algorithm.ROUND_ROBIN):
+ balancer = self.ex_create_balancer_nowait(name, members, protocol,
+ port, algorithm)
timeout = 60 * 20
waittime = 0
Modified: incubator/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py?rev=1103109&r1=1103108&r2=1103109&view=diff
==============================================================================
--- incubator/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py (original)
+++ incubator/libcloud/trunk/libcloud/loadbalancer/drivers/rackspace.py Sat May 14 13:31:38 2011
@@ -20,8 +20,9 @@ try:
except ImportError:
import simplejson as json
+from libcloud.utils import reverse_dict
from libcloud.common.base import Response
-from libcloud.loadbalancer.base import LoadBalancer, Member, Driver
+from libcloud.loadbalancer.base import LoadBalancer, Member, Driver, Algorithm
from libcloud.loadbalancer.types import Provider, State
from libcloud.common.rackspace import (AUTH_HOST_US,
RackspaceBaseConnection)
@@ -71,19 +72,27 @@ class RackspaceLBDriver(Driver):
LB_STATE_MAP = { 'ACTIVE': State.RUNNING,
'BUILD': State.PENDING }
+ _VALUE_TO_ALGORITHM_MAP = {
+ 'RANDOM': Algorithm.RANDOM,
+ 'ROUND_ROBIN': Algorithm.ROUND_ROBIN,
+ 'LEAST_CONNECTIONS': Algorithm.LEAST_CONNECTIONS
+ }
+ _ALGORITHM_TO_VALUE_MAP = reverse_dict(_VALUE_TO_ALGORITHM_MAP)
def list_balancers(self):
return self._to_balancers(
self.connection.request('/loadbalancers').object)
- def create_balancer(self, **kwargs):
- name = kwargs['name']
- port = kwargs['port']
- members = kwargs['members']
+ def create_balancer(self, name, port, algorithm, members):
+ if not algorithm:
+ algorithm = DEFAULT_ALGORITHM
+ else:
+ algorithm = self._algorithm_to_value(algorithm)
balancer_object = {"loadBalancer":
{"name": name,
"port": port,
+ "algorithm": algorithm,
"protocol": "HTTP",
"virtualIps": [{"type": "PUBLIC"}],
"nodes": [{"address": member.ip,
Modified: incubator/libcloud/trunk/test/loadbalancer/test_gogrid.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/test/loadbalancer/test_gogrid.py?rev=1103109&r1=1103108&r2=1103109&view=diff
==============================================================================
--- incubator/libcloud/trunk/test/loadbalancer/test_gogrid.py (original)
+++ incubator/libcloud/trunk/test/loadbalancer/test_gogrid.py Sat May 14 13:31:38 2011
@@ -17,6 +17,12 @@ class GoGridTests(unittest.TestCase):
GoGridLBMockHttp.type = None
self.driver = GoGridLBDriver('user', 'key')
+ def test_list_protocols(self):
+ protocols = self.driver.list_protocols()
+
+ self.assertEqual(len(protocols), 1)
+ self.assertEqual(protocols[0], 'http')
+
def test_list_balancers(self):
balancers = self.driver.list_balancers()
@@ -29,9 +35,10 @@ class GoGridTests(unittest.TestCase):
def test_create_balancer(self):
balancer = self.driver.create_balancer(name='test2',
port=80,
+ protocol='http',
algorithm=Algorithm.ROUND_ROBIN,
members=(Member(None, '10.1.0.10', 80),
- Member(None, '10.1.0.11', 80))
+ Member(None, '10.1.0.11', 80))
)
self.assertEquals(balancer.name, 'test2')
Modified: incubator/libcloud/trunk/test/loadbalancer/test_rackspace.py
URL: http://svn.apache.org/viewvc/incubator/libcloud/trunk/test/loadbalancer/test_rackspace.py?rev=1103109&r1=1103108&r2=1103109&view=diff
==============================================================================
--- incubator/libcloud/trunk/test/loadbalancer/test_rackspace.py (original)
+++ incubator/libcloud/trunk/test/loadbalancer/test_rackspace.py Sat May 14 13:31:38 2011
@@ -3,7 +3,7 @@ import os.path
import sys
import unittest
-from libcloud.loadbalancer.base import Member
+from libcloud.loadbalancer.base import Member, Algorithm
from libcloud.loadbalancer.drivers.rackspace import RackspaceLBDriver
from test import MockHttp, MockRawResponse
@@ -29,6 +29,7 @@ class RackspaceLBTests(unittest.TestCase
def test_create_balancer(self):
balancer = self.driver.create_balancer(name='test2',
port=80,
+ algorithm=Algorithm.ROUND_ROBIN,
members=(Member(None, '10.1.0.10', 80),
Member(None, '10.1.0.11', 80))
)