From: Zack Cerza Date: Fri, 25 Jul 2014 22:07:59 +0000 (-0600) Subject: Correctly find both internal and external tasks X-Git-Tag: 1.1.0~1289 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=a677b4f2a9cfdbffd422fde2811f8da7c39ded29;p=teuthology.git Correctly find both internal and external tasks Signed-off-by: Zack Cerza --- diff --git a/teuthology/run_tasks.py b/teuthology/run_tasks.py index ada99d0256..7fdf217fad 100644 --- a/teuthology/run_tasks.py +++ b/teuthology/run_tasks.py @@ -8,6 +8,19 @@ from copy import deepcopy log = logging.getLogger(__name__) +def import_task(name): + internal_pkg = __import__('teuthology.task', globals(), locals(), + [name], 0) + if hasattr(internal_pkg, name): + return getattr(internal_pkg, name) + else: + external_pkg = __import__('tasks', globals(), locals(), + [name], 0) + if hasattr(external_pkg, name): + return getattr(external_pkg, name) + raise ImportError("Could not find task '%'" % name) + + def run_one_task(taskname, **kwargs): submod = taskname subtask = 'task' @@ -17,14 +30,9 @@ def run_one_task(taskname, **kwargs): # Teuthology configs may refer to modules like ceph_deploy as ceph-deploy submod = submod.replace('-', '_') - parent = __import__('teuthology.task', globals(), locals(), [submod], 0) - try: - mod = getattr(parent, submod) - except AttributeError: - log.error("No task named %s was found", submod) - raise + task = import_task(submod) try: - fn = getattr(mod, subtask) + fn = getattr(task, subtask) except AttributeError: log.error("No subtask of %s named %s was found", mod, subtask) raise