X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/863280201573355f380c59226015373885b50617..5d00ecb0932f86e4d2aced3d9258b96522ef38bd:/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 f33619391d..65ef50826e 100644 --- a/sdk/cwl/arvados_cwl/crunch_script.py +++ b/sdk/cwl/arvados_cwl/crunch_script.py @@ -19,11 +19,11 @@ import re import functools from arvados.api import OrderedJsonModel -from cwltool.process import shortname, adjustFileObjs, adjustDirObjs, getListing, normalizeFilesDirs +from cwltool.process import shortname, adjustFileObjs, adjustDirObjs, normalizeFilesDirs from cwltool.load_tool import load_tool from cwltool.errors import WorkflowException -from .fsaccess import CollectionFetcher +from .fsaccess import CollectionFetcher, CollectionFsAccess logger = logging.getLogger('arvados.cwl-runner') @@ -52,7 +52,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): @@ -64,7 +65,6 @@ def run(): adjustFileObjs(job_order_object, keeppathObj) adjustDirObjs(job_order_object, keeppathObj) normalizeFilesDirs(job_order_object) - adjustDirObjs(job_order_object, functools.partial(getListing, arvados_cwl.fsaccess.CollectionFsAccess("", api_client=api))) output_name = None output_tags = None @@ -89,10 +89,14 @@ def run(): runner = arvados_cwl.ArvCwlRunner(api_client=arvados.api('v1', model=OrderedJsonModel()), output_name=output_name, output_tags=output_tags) + make_fs_access = functools.partial(CollectionFsAccess, + collection_cache=runner.collection_cache) + t = load_tool(toolpath, runner.arv_make_tool, fetcher_constructor=functools.partial(CollectionFetcher, - api_client=api, - keep_client=arvados.keep.KeepClient(api_client=api, num_retries=4))) + api_client=runner.api, + fs_access=make_fs_access(""), + num_retries=runner.num_retries)) args = argparse.Namespace() args.project_uuid = arvados.current_job()["owner_uuid"] @@ -105,6 +109,8 @@ def run(): 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 + runner.arv_executor(t, job_order_object, **vars(args)) except Exception as e: if isinstance(e, WorkflowException):