import arvados_cwl
import arvados.collection
import arvados.util
-from cwltool.process import shortname
import cwltool.main
import logging
import os
import json
import argparse
+import re
+import functools
+
from arvados.api import OrderedJsonModel
-from cwltool.process import adjustFileObjs
+from cwltool.process import shortname, adjustFileObjs, adjustDirObjs, getListing, normalizeFilesDirs
from cwltool.load_tool import load_tool
# Print package versions
try:
job_order_object = arvados.current_job()['script_parameters']
+ pdh_path = re.compile(r'^[0-9a-f]{32}\+\d+(/.+)?$')
+
def keeppath(v):
- if arvados.util.keep_locator_pattern.match(v):
+ if pdh_path.match(v):
return "keep:%s" % v
else:
return v
}
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)))
runner = arvados_cwl.ArvCwlRunner(api_client=arvados.api('v1', model=OrderedJsonModel()))
- t = load_tool(job_order_object, runner.arvMakeTool)
+ t = load_tool(job_order_object, runner.arv_make_tool)
args = argparse.Namespace()
args.project_uuid = arvados.current_job()["owner_uuid"]
args.ignore_docker_for_reuse = False
args.basedir = os.getcwd()
args.cwl_runner_job={"uuid": arvados.current_job()["uuid"], "state": arvados.current_job()["state"]}
- outputObj = runner.arvExecutor(t, job_order_object, **vars(args))
+ outputObj = runner.arv_executor(t, job_order_object, **vars(args))
files = {}
def capture(fileobj):