X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e34ddeba03a6a9b4a1f9913ff5871938e83ee1d2..f82ee19a440e31f05381511cf6c0d7932d804b9d:/sdk/cwl/arvados_cwl/arvjob.py diff --git a/sdk/cwl/arvados_cwl/arvjob.py b/sdk/cwl/arvados_cwl/arvjob.py index 33ce86c7ea..a688469634 100644 --- a/sdk/cwl/arvados_cwl/arvjob.py +++ b/sdk/cwl/arvados_cwl/arvjob.py @@ -12,6 +12,7 @@ import arvados.collection from .arvdocker import arv_docker_get_image from .runner import Runner +from .pathmapper import InitialWorkDirPathMapper from . import done logger = logging.getLogger('arvados.cwl-runner') @@ -37,28 +38,20 @@ class ArvadosJob(object): if self.generatefiles["listing"]: vwd = arvados.collection.Collection() script_parameters["task.vwd"] = {} - for f, p in self.generatefiles["listing"]: - if p.type == "File": - pass - if p.type == "File" or "WritableFile": - pass - elif p.type == "CreateFile": - with open(p.target, "w") as n: + generatemapper = InitialWorkDirPathMapper([self.generatefiles], "", "", + separateDirs=False) + for f, p in generatemapper.items(): + if p.type == "CreateFile": + with vwd.open(p.target, "w") as n: n.write(p.resolved.encode("utf-8")) + vwd.save_new() + for f, p in generatemapper.items(): + if p.type == "File": + script_parameters["task.vwd"][p.target] = p.resolved + if p.type == "CreateFile": + script_parameters["task.vwd"][p.target] = "$(task.keep)/%s/%s" % (vwd.portable_data_hash(), p.target) - # if self.generatefiles: - # for t in self.generatefiles: - # if isinstance(self.generatefiles[t], dict): - # src, rest = self.arvrunner.fs_access.get_collection(self.generatefiles[t]["path"].replace("$(task.keep)/", "keep:")) - # vwd.copy(rest, t, source_collection=src) - # else: - # with vwd.open(t, "w") as f: - # f.write(t.encode('utf-8')) - # vwd.save_new() - # for t in self.generatefiles: - # script_parameters["task.vwd"][t] = "$(task.keep)/%s/%s" % (vwd.portable_data_hash(), t) - - script_parameters["task.env"] = {"TMPDIR": "$(task.tmpdir)"} + script_parameters["task.env"] = {"TMPDIR": self.tmpdir, "HOME": self.outdir} if self.environment: script_parameters["task.env"].update(self.environment) @@ -71,6 +64,13 @@ class ArvadosJob(object): if self.stderr: script_parameters["task.stderr"] = self.stderr + if self.successCodes: + script_parameters["task.successCodes"] = self.successCodes + if self.temporaryFailCodes: + script_parameters["task.temporaryFailCodes"] = self.temporaryFailCodes + if self.permanentFailCodes: + script_parameters["task.permanentFailCodes"] = self.permanentFailCodes + (docker_req, docker_is_req) = get_feature(self, "DockerRequirement") if docker_req and kwargs.get("use_container") is not False: runtime_constraints["docker_image"] = arv_docker_get_image(self.arvrunner.api, docker_req, pull_image, self.arvrunner.project_uuid) @@ -95,7 +95,7 @@ class ArvadosJob(object): "owner_uuid": self.arvrunner.project_uuid, "script": "crunchrunner", "repository": "arvados", - "script_version": "9570-cwl-v1.0", + "script_version": "master", "minimum_script_version": "9e5b98e8f5f4727856b53447191f9c06e3da2ba6", "script_parameters": {"tasks": [script_parameters]}, "runtime_constraints": runtime_constraints @@ -227,7 +227,7 @@ class RunnerJob(Runner): logger.info("Submitted job %s", response["uuid"]) if kwargs.get("submit"): - self.pipeline = self.arvrunner.api.pipeline_instances().create( + self.arvrunner.pipeline = self.arvrunner.api.pipeline_instances().create( body={ "owner_uuid": self.arvrunner.project_uuid, "name": shortname(self.tool.tool["id"]), @@ -297,7 +297,7 @@ class RunnerTemplate(object): # Title and description... title = param.pop('label', '') - descr = param.pop('description', '').rstrip('\n') + descr = param.pop('doc', '').rstrip('\n') if title: param['title'] = title if descr: @@ -310,8 +310,8 @@ class RunnerTemplate(object): pass elif not isinstance(value, dict): param['value'] = value - elif param.get('dataclass') == 'File' and value.get('path'): - param['value'] = value['path'] + elif param.get('dataclass') == 'File' and value.get('location'): + param['value'] = value['location'] spec['script_parameters'][param_id] = param spec['script_parameters']['cwl:tool'] = job_params['cwl:tool']