X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/90209af8fa35bc99c9821db0c815404d1234ef31..19da21ab8e56154d7db15c2643524cb8348a7a8a:/sdk/cwl/arvados_cwl/crunch_script.py diff --git a/sdk/cwl/arvados_cwl/crunch_script.py b/sdk/cwl/arvados_cwl/crunch_script.py index 9ea4824557..bf940eca4b 100644 --- a/sdk/cwl/arvados_cwl/crunch_script.py +++ b/sdk/cwl/arvados_cwl/crunch_script.py @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + # Crunch script integration for running arvados-cwl-runner (importing # arvados_cwl module) inside a crunch job. # @@ -19,7 +23,8 @@ import re import functools from arvados.api import OrderedJsonModel -from cwltool.process import shortname, adjustFileObjs, adjustDirObjs, normalizeFilesDirs +from cwltool.process import shortname +from cwltool.pathmapper import adjustFileObjs, adjustDirObjs, normalizeFilesDirs from cwltool.load_tool import load_tool from cwltool.errors import WorkflowException @@ -52,7 +57,8 @@ def run(): return v def keeppathObj(v): - v["location"] = keeppath(v["location"]) + if "location" in v: + v["location"] = keeppath(v["location"]) for k,v in job_order_object.items(): if isinstance(v, basestring) and arvados.util.keep_locator_pattern.match(v): @@ -69,6 +75,8 @@ def run(): output_tags = None enable_reuse = True on_error = "continue" + debug = False + if "arv:output_name" in job_order_object: output_name = job_order_object["arv:output_name"] del job_order_object["arv:output_name"] @@ -85,7 +93,12 @@ def run(): on_error = job_order_object["arv:on_error"] del job_order_object["arv:on_error"] - runner = arvados_cwl.ArvCwlRunner(api_client=arvados.api('v1', model=OrderedJsonModel()), + if "arv:debug" in job_order_object: + debug = job_order_object["arv:debug"] + del job_order_object["arv:debug"] + + runner = arvados_cwl.ArvCwlRunner(api_client=arvados.safeapi.ThreadSafeApiCache( + api_params={"model": OrderedJsonModel()}, keep_params={"num_retries": 4}), output_name=output_name, output_tags=output_tags) make_fs_access = functools.partial(CollectionFsAccess, @@ -97,18 +110,28 @@ def run(): fs_access=make_fs_access(""), num_retries=runner.num_retries)) + if debug: + logger.setLevel(logging.DEBUG) + logging.getLogger('arvados').setLevel(logging.DEBUG) + logging.getLogger("cwltool").setLevel(logging.DEBUG) + args = argparse.Namespace() args.project_uuid = arvados.current_job()["owner_uuid"] args.enable_reuse = enable_reuse args.on_error = on_error args.submit = False - args.debug = False + args.debug = debug args.quiet = False args.ignore_docker_for_reuse = False args.basedir = os.getcwd() args.name = None args.cwl_runner_job={"uuid": arvados.current_job()["uuid"], "state": arvados.current_job()["state"]} args.make_fs_access = make_fs_access + args.trash_intermediate = False + args.intermediate_output_ttl = 0 + args.priority = arvados_cwl.DEFAULT_PRIORITY + args.do_validate = True + args.disable_js_validation = False runner.arv_executor(t, job_order_object, **vars(args)) except Exception as e: