X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/55e73facf08cc8651eb71529a2ab4e0657d3c870..9f42cb85807ebad098aaf6e0ab3218f763b712e2:/sdk/cwl/arvados_cwl/arvcontainer.py diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index e0ee7285a8..742906c616 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -17,7 +17,7 @@ import uuid import math import arvados_cwl.util -import ruamel.yaml as yaml +import ruamel.yaml from cwltool.errors import WorkflowException from cwltool.process import UnsupportedRequirement, shortname @@ -250,11 +250,7 @@ class ArvadosContainer(JobBase): container_request["container_image"] = arv_docker_get_image(self.arvrunner.api, docker_req, runtimeContext.pull_image, - runtimeContext.project_uuid, - runtimeContext.force_docker_pull, - runtimeContext.tmp_outdir_prefix, - runtimeContext.match_local_docker, - runtimeContext.copy_deps) + runtimeContext) network_req, _ = self.get_requirement("NetworkAccess") if network_req: @@ -536,10 +532,11 @@ class RunnerContainer(Runner): "portable_data_hash": "%s" % workflowcollection } elif self.embedded_tool.tool.get("id", "").startswith("arvwf:"): - workflowpath = "/var/lib/cwl/workflow.json#main" - #record = self.arvrunner.api.workflows().get(uuid=self.embedded_tool.tool["id"][6:33]).execute(num_retries=self.arvrunner.num_retries) - #packed = yaml.safe_load(record["definition"]) - packed = self.loadingContext.loader.idx[self.embedded_tool.tool["id"]] + uuid, frg = urllib.parse.urldefrag(self.embedded_tool.tool["id"]) + workflowpath = "/var/lib/cwl/workflow.json#" + frg + packedtxt = self.loadingContext.loader.fetch_text(uuid) + yaml = ruamel.yaml.YAML(typ='safe', pure=True) + packed = yaml.load(packedtxt) container_req["mounts"]["/var/lib/cwl/workflow.json"] = { "kind": "json", "content": packed @@ -547,6 +544,8 @@ class RunnerContainer(Runner): container_req["properties"]["template_uuid"] = self.embedded_tool.tool["id"][6:33] else: main = self.loadingContext.loader.idx["_:main"] + if main.get("id") == "_:main": + del main["id"] workflowpath = "/var/lib/cwl/workflow.json#main" container_req["mounts"]["/var/lib/cwl/workflow.json"] = { "kind": "json",