X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c40389e0f064d4ea379d5f5471116936239a467a..60d986b8908487c086eb4e402ac69669cb26108b:/sdk/cwl/arvados_cwl/arvcontainer.py diff --git a/sdk/cwl/arvados_cwl/arvcontainer.py b/sdk/cwl/arvados_cwl/arvcontainer.py index a3a26aae0a..14513c7c32 100644 --- a/sdk/cwl/arvados_cwl/arvcontainer.py +++ b/sdk/cwl/arvados_cwl/arvcontainer.py @@ -6,14 +6,14 @@ import ruamel.yaml as yaml from cwltool.errors import WorkflowException from cwltool.process import get_feature, UnsupportedRequirement, shortname -from cwltool.pathmapper import adjustFiles +from cwltool.pathmapper import adjustFiles, adjustDirObjs from cwltool.utils import aslist import arvados.collection from .arvdocker import arv_docker_get_image from . import done -from .runner import Runner, arvados_jobs_image +from .runner import Runner, arvados_jobs_image, packed_workflow, trim_listing from .fsaccess import CollectionFetcher logger = logging.getLogger('arvados.cwl-runner') @@ -190,7 +190,9 @@ class RunnerContainer(Runner): the +body+ argument to container_requests().create(). """ - workflowmapper = super(RunnerContainer, self).arvados_job_spec(dry_run=dry_run, pull_image=pull_image, **kwargs) + packed = packed_workflow(self.arvrunner, self.tool) + + adjustDirObjs(self.job_order, trim_listing) container_req = { "owner_uuid": self.arvrunner.project_uuid, @@ -222,27 +224,13 @@ class RunnerContainer(Runner): "properties": {} } - workflowcollection = workflowmapper.mapper(self.tool.tool["id"])[1] - if workflowcollection.startswith("keep:"): - workflowcollection = workflowcollection[5:workflowcollection.index('/')] - workflowname = os.path.basename(self.tool.tool["id"]) - workflowpath = "/var/lib/cwl/workflow/%s" % workflowname - container_req["mounts"]["/var/lib/cwl/workflow"] = { - "kind": "collection", - "portable_data_hash": "%s" % workflowcollection - } - elif workflowcollection.startswith("arvwf:"): - workflowpath = "/var/lib/cwl/workflow.json#main" - wfuuid = workflowcollection[6:workflowcollection.index("#")] - wfrecord = self.arvrunner.api.workflows().get(uuid=wfuuid).execute(num_retries=self.arvrunner.num_retries) - wfobj = yaml.safe_load(wfrecord["definition"]) - if container_req["name"].startswith("arvwf:"): - container_req["name"] = wfrecord["name"] - container_req["mounts"]["/var/lib/cwl/workflow.json"] = { - "kind": "json", - "json": wfobj - } - container_req["properties"]["template_uuid"] = wfuuid + workflowpath = "/var/lib/cwl/workflow.json#main" + container_req["mounts"]["/var/lib/cwl/workflow.json"] = { + "kind": "json", + "json": packed + } + if self.tool.tool.get("id", "").startswith("arvwf:"): + container_req["properties"]["template_uuid"] = self.tool.tool["id"][6:33] command = ["arvados-cwl-runner", "--local", "--api=containers", "--no-log-timestamps"] if self.output_name: