Source code for ewoksserver.app.routes.tasks.discovery

from typing import Optional, Dict, List
from ewoksjob.client import discover_all_tasks
from ewoksjob.client.local import discover_all_tasks as discover_all_tasks_local
from ewoksjob.client import discover_tasks_from_modules
from ewoksjob.client.local import (
    discover_tasks_from_modules as discover_tasks_from_modules_local,
)

from ...config import EwoksSettings


[docs]def discover_tasks( settings: EwoksSettings, modules: Optional[List[str]] = None, reload: Optional[bool] = None, worker_options: Optional[Dict] = None, ) -> List[Dict[str, str]]: if worker_options is None: kwargs = dict() else: kwargs = dict(worker_options) # Task discovery: position arguments if modules: kwargs["args"] = modules # Task discovery: named arguments kwargs["kwargs"] = dict() if reload is not None: kwargs["kwargs"]["reload"] = reload if settings.celery is None: if modules: future = discover_tasks_from_modules_local(**kwargs) else: future = discover_all_tasks_local(**kwargs) tasks = future.result() else: if modules: future = discover_tasks_from_modules(**kwargs) else: future = discover_all_tasks(**kwargs) tasks = future.get() for task in tasks: _set_default_task_properties(task) return tasks
def _set_default_task_properties(task: dict) -> None: if not task.get("icon"): task["icon"] = "default.png" if not task.get("label"): task_identifier = task.get("task_identifier") if task_identifier: task["label"] = task_identifier.split(".")[-1]