b25358ebacddaabfd3a01eee19a3f636413c5bf8
Change-Id: I2b5eed29c7029e37a3ba052192a512bc0d10c213
Description
-----------
A Python-based Gearman worker that handles work for the job queue named
'lbaas-<IP>'. It receives JSON data describing a load balancer, and
returns this same JSON object, but with status fields added to describe
the state of the LB.
Running Tests
-------------
Tox is the best way to run the tests. Tox, if unavailable, can be installed
via the Python pip command:
$ pip install tox
Once it is installed, run the tests:
$ tox
Installing the Tools
--------------------
You must have Python setuptools installed. On Ubuntu:
$ sudo apt-get install python-setuptools
Now you may install the Libra toolset:
$ sudo python setup.py install
Edit /etc/sudoers
-----------------
The worker needs to be able to run some commands as root without being
prompted for a password. It is suggested that you run the worker as
the `haproxy` user and `haproxy` group on Ubuntu systems. Then add the
following line to /etc/sudoers:
%haproxy ALL = NOPASSWD: /usr/sbin/service, /bin/cp, /bin/mv, /bin/rm
The above lets everyone in the `haproxy` group run those commands
as root without being prompted for a password.
Running the Worker
------------------
The worker can run in either daemon or non-daemon mode. Daemon mode requires
escalated privileges so that it can behave like a proper daemon. Non-daemon
mode (--nodaemon option) is useful for testing.
Basic commands:
# Getting help
$ libra_worker -h
# Start up as a daemon running as the `haproxy` user and
# connecting to the local Gearman job server.
$ sudo libra_worker --user haproxy --group haproxy --server 127.0.0.1:4730
# Start up with debugging output in non-daemon mode
$ libra_worker --debug --nodaemon
You can verify that the worker is running by using the sample Gearman
client in the bin/ directory:
$ bin/client.py
Configuration File
------------------
It can be easier to give options via a configuration file. See the sample
configuration file etc/sample_libra.cfg for an example and further
documentation. Use the -c/--config option to specify the configuration
file to read.
Description