summaryrefslogtreecommitdiff
path: root/taskflow/conductors
diff options
context:
space:
mode:
authorDan Krause <dan.krause@rackspace.com>2015-03-09 14:09:55 -0500
committerDan Krause <dan.krause@rackspace.com>2015-03-11 10:13:56 -0500
commit8e624839c07553931d39567e4e778838bc55d7a1 (patch)
tree36814a62bfe628d21c1d1cbe2328763863669352 /taskflow/conductors
parentc4414a733d4b97f9f12db5d27c64e713b8466b75 (diff)
downloadtaskflow-8e624839c07553931d39567e4e778838bc55d7a1.tar.gz
add _listeners_from_job method to Conductor base
Change-Id: I4a58c2fd5a0c648ffe3f81e2170a622b6b0b43f0
Diffstat (limited to 'taskflow/conductors')
-rw-r--r--taskflow/conductors/base.py26
1 files changed, 22 insertions, 4 deletions
diff --git a/taskflow/conductors/base.py b/taskflow/conductors/base.py
index 48344c5..33c4441 100644
--- a/taskflow/conductors/base.py
+++ b/taskflow/conductors/base.py
@@ -88,10 +88,28 @@ class Conductor(object):
store = dict(job.details["store"])
else:
store = {}
- return engines.load_from_detail(flow_detail, store=store,
- engine=self._engine,
- backend=self._persistence,
- **self._engine_options)
+ engine = engines.load_from_detail(flow_detail, store=store,
+ engine=self._engine,
+ backend=self._persistence,
+ **self._engine_options)
+ for listener in self._listeners_from_job(job, engine):
+ listener.register()
+ return engine
+
+ def _listeners_from_job(self, job, engine):
+ """Returns a list of listeners to be attached to an engine.
+
+ This method should be overridden in order to attach listeners to
+ engines. It will be called once for each job, and the list returned
+ listeners will be added to the engine for this job.
+
+ :param job: A job instance that is about to be run in an engine.
+ :param engine: The engine that listeners will be attached to.
+ :returns: a list of (unregistered) listener instances.
+ """
+ # TODO(dkrause): Create a standard way to pass listeners or
+ # listener factories over the jobboard
+ return []
@lock_utils.locked
def connect(self):