X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/aace3aa52c1b9fe3b2e907f43e8d6801ceeb28f9..1010c9e519409f0eb36971df6c382fc7cc0e2732:/sdk/cwl/arvados_cwl/arvworkflow.py diff --git a/sdk/cwl/arvados_cwl/arvworkflow.py b/sdk/cwl/arvados_cwl/arvworkflow.py index 94b8568db7..ae90625102 100644 --- a/sdk/cwl/arvados_cwl/arvworkflow.py +++ b/sdk/cwl/arvados_cwl/arvworkflow.py @@ -52,13 +52,24 @@ def upload_workflow(arvRunner, tool, job_order, project_uuid, uuid=None, upload_dependencies(arvRunner, name, tool.doc_loader, packed, tool.tool["id"], False) - # TODO nowhere for submit_runner_ram to go. + if submit_runner_ram: + hints = main.get("hints", []) + found = False + for h in hints: + if h["class"] == "http://arvados.org/cwl#WorkflowRunnerResources": + h["ramMin"] = submit_runner_ram + found = True + break + if not found: + hints.append({"class": "http://arvados.org/cwl#WorkflowRunnerResources", + "ramMin": submit_runner_ram}) + main["hints"] = hints body = { "workflow": { "name": name, "description": tool.tool.get("doc", ""), - "definition":yaml.round_trip_dump(packed) + "definition":json.dumps(packed, sort_keys=True, indent=4, separators=(',',': ')) }} if project_uuid: body["workflow"]["owner_uuid"] = project_uuid @@ -143,11 +154,10 @@ class ArvadosWorkflow(Workflow): packed = pack(document_loader, workflowobj, uri, self.metadata) - builder = Builder() - builder.job = joborder - builder.requirements = workflowobj["requirements"] - builder.hints = workflowobj["hints"] - builder.resources = {} + builder = Builder(joborder, + requirements=workflowobj["requirements"], + hints=workflowobj["hints"], + resources={}) def visit(item): for t in ("hints", "requirements"): @@ -188,11 +198,10 @@ class ArvadosWorkflow(Workflow): if self.dynamic_resource_req: - builder = Builder() - builder.job = joborder - builder.requirements = self.requirements - builder.hints = self.hints - builder.resources = {} + builder = Builder(joborder, + requirements=self.requirements, + hints=self.hints, + resources={}) # Evaluate dynamic resource requirements using current builder rs = copy.copy(self.static_resource_req) @@ -259,14 +268,12 @@ class ArvadosWorkflow(Workflow): "outputs": self.tool["outputs"], "stdout": "cwl.output.json", "requirements": self.requirements+job_res_reqs+[ + {"class": "InlineJavascriptRequirement"}, { "class": "InitialWorkDirRequirement", "listing": [{ "entryname": "workflow.cwl", - "entry": { - "class": "File", - "location": "keep:%s/workflow.cwl" % self.wf_pdh - } + "entry": '$({"class": "File", "location": "keep:%s/workflow.cwl"})' % self.wf_pdh }, { "entryname": "cwl.input.yml", "entry": json.dumps(joborder_keepmount, indent=2, sort_keys=True, separators=(',',': ')).replace("\\", "\\\\").replace('$(', '\$(').replace('${', '\${')