X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/765604b096c464b242e60860ace75bd6645fd4e7..936ed3a6a7484917fc10636b3dc2c5fdd9578643:/sdk/cwl/arvados_cwl/arvcontainer.py diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index be8e557bd8..84b98378f4 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -459,6 +459,7 @@ class ArvadosContainer(JobBase): def done(self, record): outputs = {} retried = False + rcode = None try: container = self.arvrunner.api.containers().get( uuid=record["container_uuid"] @@ -499,7 +500,7 @@ class ArvadosContainer(JobBase): label = self.arvrunner.label(self) done.logtail( logc, logger.error, - "%s (%s) error log:" % (label, record["uuid"]), maxlen=40) + "%s (%s) error log:" % (label, record["uuid"]), maxlen=40, include_crunchrun=(rcode is None or rcode > 127)) if record["output_uuid"]: if self.arvrunner.trash_intermediate or self.arvrunner.intermediate_output_ttl: @@ -559,13 +560,19 @@ class RunnerContainer(Runner): } self.job_order[param] = {"$include": mnt} + container_image = arvados_jobs_image(self.arvrunner, self.jobs_image, runtimeContext) + + workflow_runner_req, _ = self.embedded_tool.get_requirement("http://arvados.org/cwl#WorkflowRunnerResources") + if workflow_runner_req and workflow_runner_req.get("acrContainerImage"): + container_image = workflow_runner_req.get("acrContainerImage") + container_req = { "name": self.name, "output_path": "/var/spool/cwl", "cwd": "/var/spool/cwl", "priority": self.priority, "state": "Committed", - "container_image": arvados_jobs_image(self.arvrunner, self.jobs_image, runtimeContext), + "container_image": container_image, "mounts": { "/var/lib/cwl/cwl.input.json": { "kind": "json", @@ -586,7 +593,7 @@ class RunnerContainer(Runner): "ram": 1024*1024 * (math.ceil(self.submit_runner_ram) + math.ceil(self.collection_cache_size)), "API": True }, - "use_existing": False, # Never reuse the runner container - see #15497. + "use_existing": self.reuse_runner, "properties": {} } @@ -610,6 +617,8 @@ class RunnerContainer(Runner): "content": packed } container_req["properties"]["template_uuid"] = self.embedded_tool.tool["id"][6:33] + elif self.embedded_tool.tool.get("id", "").startswith("file:"): + raise WorkflowException("Tool id '%s' is a local file but expected keep: or arvwf:" % self.embedded_tool.tool.get("id")) else: main = self.loadingContext.loader.idx["_:main"] if main.get("id") == "_:main": @@ -730,14 +739,9 @@ class RunnerContainer(Runner): logger.info("%s submitted container_request %s", self.arvrunner.label(self), response["uuid"]) - workbench1 = self.arvrunner.api.config()["Services"]["Workbench1"]["ExternalURL"] workbench2 = self.arvrunner.api.config()["Services"]["Workbench2"]["ExternalURL"] - url = "" if workbench2: url = "{}processes/{}".format(workbench2, response["uuid"]) - elif workbench1: - url = "{}container_requests/{}".format(workbench1, response["uuid"]) - if url: logger.info("Monitor workflow progress at %s", url)