@@ -0,0 +1,986 @@
+%22%22%22%0ATask sequencer - full%0A%22%22%22%0Aimport sys%0Aimport logging%0A%0Afrom teuthology import run_tasks%0A%0Alog = logging.getLogger(__name__)%0A%0A%0Adef task(ctx, config):%0A    %22%22%22%0A    Run a set of tasks to completion in order.  __exit__ is called on a task%0A    before __enter__ on the next%0A%0A    example:%0A    - full_sequential:%0A       - tasktest:%0A       - tasktest:%0A%0A    :param ctx: Context%0A    :param config: Configuration%0A    %22%22%22%0A    for entry in config:%0A        if not isinstance(entry, dict):%0A            entry = ctx.config.get(entry, %7B%7D)%0A        ((taskname, confg),) = entry.iteritems()%0A        log.info('In full_sequential, running task %25s...' %25 taskname)%0A        mgr = run_tasks.run_one_task(taskname, ctx=ctx, config=confg)%0A        if hasattr(mgr, '__enter__'):%0A            try:%0A                mgr.__enter__()%0A            finally:%0A                try:%0A                    exc_info = sys.exc_info()%0A                    mgr.__exit__(*exc_info)%0A                finally:%0A                    del exc_info%0A

add full_sequential