X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/233e184eaf40febfbc9b083bdfdd45a438cc350f..35658af99f09f2f6768583d65246429f789fc5a2:/sdk/cwl/arvados_cwl/arvcontainer.py diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index 6aa9a34067..aa3388d00b 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -123,6 +123,8 @@ class ArvadosContainer(JobBase): "kind": "collection", "portable_data_hash": pdh } + if pdh in self.pathmapper.pdh_to_uuid: + mounts[targetdir]["uuid"] = self.pathmapper.pdh_to_uuid[pdh] if len(sp) == 2: if tp == "Directory": path = sp[1] @@ -153,7 +155,7 @@ class ArvadosContainer(JobBase): vwd.mkdirs(p.target) else: source, path = self.arvrunner.fs_access.get_collection(p.resolved) - vwd.copy(path, p.target, source_collection=source) + vwd.copy(path or ".", p.target, source_collection=source) elif p.type == "CreateFile": if self.arvrunner.secret_store.has_secret(p.resolved): secret_mounts["%s/%s" % (self.outdir, p.target)] = { @@ -223,6 +225,10 @@ class ArvadosContainer(JobBase): runtimeContext.pull_image, runtimeContext.project_uuid) + network_req, _ = self.get_requirement("NetworkAccess") + if network_req: + runtime_constraints["API"] = network_req["networkAccess"] + api_req, _ = self.get_requirement("http://arvados.org/cwl#APIRequirement") if api_req: runtime_constraints["API"] = True @@ -254,7 +260,7 @@ class ArvadosContainer(JobBase): if self.output_ttl < 0: raise WorkflowException("Invalid value %d for output_ttl, cannot be less than zero" % container_request["output_ttl"]) - if self.timelimit is not None: + if self.timelimit is not None and self.timelimit > 0: scheduling_parameters["max_run_time"] = self.timelimit extra_submit_params = {} @@ -270,6 +276,9 @@ class ArvadosContainer(JobBase): enable_reuse = runtimeContext.enable_reuse if enable_reuse: + reuse_req, _ = self.get_requirement("WorkReuse") + if reuse_req: + enable_reuse = reuse_req["enableReuse"] reuse_req, _ = self.get_requirement("http://arvados.org/cwl#ReuseRequirement") if reuse_req: enable_reuse = reuse_req["enableReuse"] @@ -483,6 +492,9 @@ class RunnerContainer(Runner): if self.arvrunner.project_uuid: command.append("--project-uuid="+self.arvrunner.project_uuid) + if self.enable_dev: + command.append("--enable-dev") + command.extend([workflowpath, "/var/lib/cwl/cwl.input.json"]) container_req["command"] = command @@ -525,6 +537,7 @@ class RunnerContainer(Runner): container = self.arvrunner.api.containers().get( uuid=record["container_uuid"] ).execute(num_retries=self.arvrunner.num_retries) + container["log"] = record["log_uuid"] except Exception: logger.exception("%s while getting runner container", self.arvrunner.label(self)) self.arvrunner.output_callback({}, "permanentFail")