From: Josh Durgin Date: Tue, 29 Mar 2016 22:19:38 +0000 (-0700) Subject: task/parallel: accept lists of tasks in referenced sections X-Git-Tag: 1.1.0~637^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F831%2Fhead;p=teuthology.git task/parallel: accept lists of tasks in referenced sections This syntax is consistent with task configuration everywhere else. The subtley of different syntax for this task made modifying suites error-prone. Keep the existing syntax so we don't have to change all the upgrade suites in each ceph-qa-suite branch. Signed-off-by: Josh Durgin --- diff --git a/teuthology/task/parallel.py b/teuthology/task/parallel.py index 4cfb67879..c5ea85a55 100644 --- a/teuthology/task/parallel.py +++ b/teuthology/task/parallel.py @@ -19,14 +19,23 @@ def task(ctx, config): - tasktest: - tasktest: - You can also reference the job from elsewhere: + You can also define tasks in a top-level section outside of + 'tasks:', and reference them here. + + The referenced section must contain a list of tasks to run + sequentially, or a single task as a dict. The latter is only + available for backwards compatibility with existing suites: - foo: - tasktest: tasks: - parallel: - - foo - - tasktest: + - tasktest: # task inline + - foo # reference to top-level 'foo' section + - bar # reference to top-level 'bar' section + foo: + - tasktest1: + - tasktest2: + bar: + tasktest: # note the list syntax from 'foo' is preferred That is, if the entry is not a dict, we will look it up in the top-level config. @@ -39,10 +48,14 @@ def task(ctx, config): for entry in config: if not isinstance(entry, dict): entry = ctx.config.get(entry, {}) + # support the usual list syntax for tasks + if isinstance(entry, list): + entry = dict(sequential=entry) ((taskname, confg),) = entry.iteritems() p.spawn(_run_spawned, ctx, confg, taskname) -def _run_spawned(ctx,config,taskname): + +def _run_spawned(ctx, config, taskname): """Run one of the tasks (this runs in parallel with others)""" mgr = {} try: