]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
scheduler: Simplify DependencyTaskGroup interface
authorZane Bitter <zbitter@redhat.com>
Thu, 13 Jun 2013 18:03:27 +0000 (20:03 +0200)
committerZane Bitter <zbitter@redhat.com>
Mon, 17 Jun 2013 16:00:54 +0000 (18:00 +0200)
Instead of passing a function that takes one argument and returns a task
that takes no arguments, simply pass a task that takes one argument.

Change-Id: I73d5f137d5db492c09e6887f80e7e759734c211f

heat/engine/parser.py
heat/engine/scheduler.py
heat/tests/test_scheduler.py

index 974b8eb1c0b5bf66c73e8f564d7954bf45b4b4ae..05341c58210fe1edbc95e966757c88e0bcfabe03 100644 (file)
@@ -294,7 +294,7 @@ class Stack(object):
         res = None
 
         def resource_create(r):
-            return r.create
+            return r.create()
 
         create_task = scheduler.DependencyTaskGroup(self.dependencies,
                                                     resource_create)
index 6857c9bb446385081ac517c2f9cfc0abb0bf6448..ab98748273b6714a0a35f0c63885a5b5d20d5538 100644 (file)
@@ -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
 
index b7c54f6ed30b7207147477b43fead94cec14ab46..7d12c912f21de7c1871a7591b2188604086c0e88 100644 (file)
@@ -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')