diff options
author | Joshua Hesketh <josh@nitrotech.org> | 2014-03-05 16:49:22 +1100 |
---|---|---|
committer | Joshua Hesketh <josh@nitrotech.org> | 2014-03-05 16:49:26 +1100 |
commit | 9cd2f933a43f888227c2e1b72cec2158e120aaa2 (patch) | |
tree | 932f3d53036a7bbe4aa07476f488cbac9ce1c063 | |
parent | 38a1718c5015104eedb132be7fe5d800771d29b0 (diff) | |
download | turbo-hipster-9cd2f933a43f888227c2e1b72cec2158e120aaa2.tar.gz |
Register worker functions once we are connected
This also re-registers once a server appears ensuring reconnection is
properly set up.
Change-Id: I9b915482494d1b273991cb8bdd1b6ad963cf25f2
-rw-r--r-- | turbo_hipster/lib/models.py | 2 | ||||
-rw-r--r-- | turbo_hipster/worker_manager.py | 7 | ||||
-rwxr-xr-x | turbo_hipster/worker_server.py | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/turbo_hipster/lib/models.py b/turbo_hipster/lib/models.py index be3f1d9..cd73a73 100644 --- a/turbo_hipster/lib/models.py +++ b/turbo_hipster/lib/models.py @@ -23,7 +23,7 @@ from turbo_hipster.lib import utils class Task(object): - + """ A base object for running a job (aka Task) """ log = logging.getLogger("lib.models.Task") def __init__(self, global_config, plugin_config, job_name): diff --git a/turbo_hipster/worker_manager.py b/turbo_hipster/worker_manager.py index 0dcdaaf..3923d35 100644 --- a/turbo_hipster/worker_manager.py +++ b/turbo_hipster/worker_manager.py @@ -47,6 +47,9 @@ class ZuulManager(threading.Thread): self.config['zuul_server']['gearman_host'], self.config['zuul_server']['gearman_port'] ) + + def register_functions(self): + hostname = os.uname()[1] self.gearman_worker.registerFunction( 'stop:turbo-hipster-manager-%s' % hostname) @@ -67,6 +70,8 @@ class ZuulManager(threading.Thread): self.gearman_worker.waitForServer() if (not self.stopped() and self.gearman_worker.running and self.gearman_worker.active_connections): + self.register_functions() + self.gearman_worker.waitForServer() logging.debug("Waiting for job") self.current_step = 0 job = self.gearman_worker.getJob() @@ -145,6 +150,8 @@ class ZuulClient(threading.Thread): self.gearman_worker.waitForServer() if (not self.stopped() and self.gearman_worker.running and self.gearman_worker.active_connections): + self.register_functions() + self.gearman_worker.waitForServer() self.log.debug("Waiting for job") self.job = self.gearman_worker.getJob() self._handle_job() diff --git a/turbo_hipster/worker_server.py b/turbo_hipster/worker_server.py index fa6f7c0..d2edf18 100755 --- a/turbo_hipster/worker_server.py +++ b/turbo_hipster/worker_server.py @@ -42,6 +42,7 @@ class Server(threading.Thread): self.zuul_manager = None self.zuul_client = None self.plugins = [] + self.services_started = False # TODO: Make me unique (random?) and we should be able to run multiple # instances of turbo-hipster on the one host @@ -94,7 +95,6 @@ class Server(threading.Thread): self.zuul_client.add_function(plugin['plugin_config']['function'], self.tasks[job_name]) - self.zuul_client.register_functions() self.zuul_client.start() def start_zuul_manager(self): @@ -113,5 +113,6 @@ class Server(threading.Thread): def run(self): self.start_zuul_client() self.start_zuul_manager() + self.services_started = True while not self.stopped(): self._stop.wait() |