From e4effcb3426023a4e2fab90c559521d9ca49d3b0 Mon Sep 17 00:00:00 2001 From: Josh Durgin Date: Tue, 29 Mar 2016 15:19:38 -0700 Subject: [PATCH] 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 --- teuthology/task/parallel.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/teuthology/task/parallel.py b/teuthology/task/parallel.py index 4cfb67879e..c5ea85a55a 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: -- 2.39.5