Add set_algorithm() method to driver API.

HAProxy driver can now be given an algorithm to use for load
balancing.
This commit is contained in:
David Shrewsbury
2012-10-10 16:50:41 -04:00
parent abb1af8706
commit 294ef7d849
3 changed files with 39 additions and 1 deletions

View File

@@ -13,6 +13,7 @@
# under the License.
from libra.common.faults import BadRequest
from libra.worker.drivers.base import LoadBalancerDriver
class LBaaSController(object):
@@ -91,6 +92,26 @@ class LBaaSController(object):
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
return self.msg
if 'algorithm' in self.msg:
algo = self.msg['algorithm'].upper()
if algo == 'ROUND_ROBIN':
algo = LoadBalancerDriver.ROUNDROBIN
elif algo == 'LEAST_CONNECTIONS':
algo = LoadBalancerDriver.LEASTCONN
try:
self.driver.set_algorithm(algo)
except NotImplementedError:
self.logger.error(
"Selected driver does not support setting algorithm."
)
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
return self.msg
except Exception as e:
self.logger.error("Selected driver failed setting algorithm.")
self.msg[self.RESPONSE_FIELD] = self.RESPONSE_FAILURE
return self.msg
for lb_node in self.msg['nodes']:
port, address = None, None