diff --git a/heat/engine/parser.py b/heat/engine/parser.py index 1266fd16c0..f51246a945 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -295,7 +295,7 @@ class Stack(object): res = None def resource_create(r): - return r.create + return r.create() create_task = scheduler.DependencyTaskGroup(self.dependencies, resource_create) diff --git a/heat/engine/scheduler.py b/heat/engine/scheduler.py index 6857c9bb44..ab98748273 100644 --- a/heat/engine/scheduler.py +++ b/heat/engine/scheduler.py @@ -263,19 +263,22 @@ class DependencyTaskGroup(object): A task which manages a group of subtasks that have ordering dependencies. """ - def __init__(self, dependencies, make_task=lambda o: o, + def __init__(self, dependencies, task=lambda o: o(), reverse=False, name=None): """ - Initialise with the task dependencies and (optionally) a function for - creating a task from each dependency object. + Initialise with the task dependencies and (optionally) a task to run on + each. + + If no task is supplied, it is assumed that the tasks are stored + directly in the dependency tree. If a task is supplied, the object + stored in the dependency tree is passed as an argument. """ - self._runners = dict((o, TaskRunner(make_task(o))) - for o in dependencies) + self._runners = dict((o, TaskRunner(task, o)) for o in dependencies) self._graph = dependencies.graph(reverse=reverse) if name is None: - name = '(%s) %s' % (getattr(make_task, '__name__', - task_description(make_task)), + name = '(%s) %s' % (getattr(task, '__name__', + task_description(task)), str(dependencies)) self.name = name diff --git a/heat/tests/test_scheduler.py b/heat/tests/test_scheduler.py index b7c54f6ed3..7d12c912f2 100644 --- a/heat/tests/test_scheduler.py +++ b/heat/tests/test_scheduler.py @@ -166,19 +166,9 @@ class DependencyTaskGroupTest(mox.MoxTestBase): def _dep_test(self, *edges): dummy = DummyTask(getattr(self, 'steps', 3)) - class TaskMaker(object): - def __init__(self, name): - self.name = name - - def __repr__(self): - return 'Dummy task "%s"' % self.name - - def __call__(self, *args, **kwargs): - return dummy(self.name, *args, **kwargs) - deps = dependencies.Dependencies(edges) - tg = scheduler.DependencyTaskGroup(deps, TaskMaker) + tg = scheduler.DependencyTaskGroup(deps, dummy) self.mox.StubOutWithMock(dummy, 'do_step')