X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/29f6779747be3cf47b7f9cfb22beba51b4958c58..0c53ada0b541823dea1cec479d4cd5dbd7abce5b:/sdk/cwl/arvados_cwl/arvtool.py diff --git a/sdk/cwl/arvados_cwl/arvtool.py b/sdk/cwl/arvados_cwl/arvtool.py index 8917692351..b66e8ad3aa 100644 --- a/sdk/cwl/arvados_cwl/arvtool.py +++ b/sdk/cwl/arvados_cwl/arvtool.py @@ -6,6 +6,7 @@ from cwltool.command_line_tool import CommandLineTool, ExpressionTool from .arvcontainer import ArvadosContainer from .pathmapper import ArvPathMapper from .runner import make_builder +from ._version import __version__ from functools import partial from schema_salad.sourceline import SourceLine from cwltool.errors import WorkflowException @@ -19,9 +20,15 @@ def validate_cluster_target(arvrunner, runtimeContext): if runtimeContext.project_uuid: cluster_target = runtimeContext.submit_runner_cluster or arvrunner.api._rootDesc["uuidPrefix"] if not runtimeContext.project_uuid.startswith(cluster_target): - raise WorkflowException("Project uuid '%s' must be for target cluster '%s'" % (runtimeContext.project_uuid, cluster_target)) + raise WorkflowException("Project uuid '%s' should start with id of target cluster '%s'" % (runtimeContext.project_uuid, cluster_target)) + try: - arvrunner.api.groups().get(uuid=runtimeContext.project_uuid).execute() + if runtimeContext.project_uuid[5:12] == '-tpzed-': + arvrunner.api.users().get(uuid=runtimeContext.project_uuid).execute() + else: + proj = arvrunner.api.groups().get(uuid=runtimeContext.project_uuid).execute() + if proj["group_class"] != "project": + raise Exception("not a project, group_class is '%s'" % (proj["group_class"])) except Exception as e: raise WorkflowException("Invalid project uuid '%s': %s" % (runtimeContext.project_uuid, e)) @@ -51,6 +58,12 @@ class ArvadosCommandTool(CommandLineTool): def __init__(self, arvrunner, toolpath_object, loadingContext): super(ArvadosCommandTool, self).__init__(toolpath_object, loadingContext) + + (docker_req, docker_is_req) = self.get_requirement("DockerRequirement") + if not docker_req: + self.hints.append({"class": "DockerRequirement", + "dockerPull": "arvados/jobs:"+__version__}) + self.arvrunner = arvrunner def make_job_runner(self, runtimeContext):