From a4faba5b7f5bb176c63e5aa649c27817f943122c Mon Sep 17 00:00:00 2001 From: David Shrewsbury Date: Tue, 25 Sep 2012 15:30:05 -0400 Subject: [PATCH] Worker supports getting job server list from command line options. --- libra/common/options.py | 8 ++++---- libra/worker/worker.py | 24 +++++++++++++++++++----- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/libra/common/options.py b/libra/common/options.py index 069dff8c..8f584a9d 100644 --- a/libra/common/options.py +++ b/libra/common/options.py @@ -103,7 +103,7 @@ class Options(object): # generated help from ArgumentParser. self.parser.add_argument( '-c', '--config', dest='config', default='/etc/libra/libra.ini', - metavar='FILE', help='Configuration file' + metavar='FILE', help='configuration file' ) self.parser.add_argument( @@ -112,11 +112,11 @@ class Options(object): ) self.parser.add_argument( '-d', '--debug', dest='debug', action='store_true', - help='Log debugging output' + help='log debugging output' ) self.parser.add_argument( '-v', '--verbose', dest='verbose', action='store_true', - help='Log more verbose output' + help='log more verbose output' ) self.parser.add_argument( '-p', '--pid', dest='pid', @@ -130,7 +130,7 @@ class Options(object): default='/var/log/libra/libra_{name}.log'.format( name=self.shortname ), - help='Log file to use (ignored with --nodaemon)' + help='log file to use (ignored with --nodaemon)' ) def run(self): diff --git a/libra/worker/worker.py b/libra/worker/worker.py index 55c892d7..f2c3b305 100644 --- a/libra/worker/worker.py +++ b/libra/worker/worker.py @@ -27,7 +27,13 @@ from libra.worker.utils import import_class def lbaas_task(worker, job): - """ Main Gearman worker task. """ + """ + Main Gearman worker task. + + This is the function executed by the Gearman worker for incoming requests + from the Gearman job server. It will be executed once per request. Data + comes in as a JSON object, and a JSON object is returned in response. + """ NODE_OK = "ENABLED" NODE_ERR = "DISABLED" @@ -146,7 +152,12 @@ def main(): options.parser.add_argument( '--driver', dest='driver', choices=known_drivers.keys(), default='haproxy', - help='Type of device to use' + help='type of device to use' + ) + options.parser.add_argument( + '--server', dest='server', action='append', metavar='HOST:PORT', + default=[], + help='add a Gearman job server to the connection list' ) args = options.run() @@ -156,12 +167,15 @@ def main(): # along to the Gearman task that will use it to communicate with # the device. - logger.debug("Using driver %s=%s" % (args.driver, - known_drivers[args.driver])) + logger.debug("Selected driver: %s" % args.driver) driver_class = import_class(known_drivers[args.driver]) driver = driver_class() - server = Server(['localhost:4730'], args.reconnect_sleep) + if not args.server: + args.server.append('localhost:4730') + + logger.debug("Job server list: %s" % args.server) + server = Server(args.server, args.reconnect_sleep) server.logger = logger server.driver = driver