X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/dfe0ec7bfec3fd72cd40d3962e5c8af08d2413d2..0e1522f8e0cbe5d1626a7f66dc4c28b7b1bf0efc:/sdk/cwl/arvados_cwl/arvworkflow.py diff --git a/sdk/cwl/arvados_cwl/arvworkflow.py b/sdk/cwl/arvados_cwl/arvworkflow.py index 8eb8fe6fee..f425ae8df9 100644 --- a/sdk/cwl/arvados_cwl/arvworkflow.py +++ b/sdk/cwl/arvados_cwl/arvworkflow.py @@ -18,7 +18,7 @@ from .perf import Perf logger = logging.getLogger('arvados.cwl-runner') metrics = logging.getLogger('arvados.cwl-runner.metrics') -def upload_workflow(arvRunner, tool, job_order, project_uuid, update_uuid): +def upload_workflow(arvRunner, tool, job_order, project_uuid, uuid=None): upload_docker(arvRunner, tool) document_loader, workflowobj, uri = (tool.doc_loader, tool.doc_loader.fetch(tool.tool["id"]), tool.tool["id"]) @@ -39,16 +39,18 @@ def upload_workflow(arvRunner, tool, job_order, project_uuid, update_uuid): body = { "workflow": { - "owner_uuid": project_uuid, "name": tool.tool.get("label", name), "description": tool.tool.get("doc", ""), "definition":yaml.safe_dump(packed) }} + if project_uuid: + body["workflow"]["owner_uuid"] = project_uuid - if update_uuid: - return arvRunner.api.workflows().update(uuid=update_uuid, body=body).execute(num_retries=arvRunner.num_retries)["uuid"] + if uuid: + call = arvRunner.api.workflows().update(uuid=uuid, body=body) else: - return arvRunner.api.workflows().create(body=body).execute(num_retries=arvRunner.num_retries)["uuid"] + call = arvRunner.api.workflows().create(body=body) + return call.execute(num_retries=arvRunner.num_retries)["uuid"] class ArvadosWorkflow(Workflow): """Wrap cwltool Workflow to override selected methods.""" @@ -87,6 +89,8 @@ class ArvadosWorkflow(Workflow): joborder_keepmount = copy.deepcopy(joborder) def keepmount(obj): + if "location" not in obj: + raise WorkflowException("%s object is missing required 'location' field: %s" % (obj["class"], obj)) if obj["location"].startswith("keep:"): obj["location"] = "/keep/" + obj["location"][5:] if "listing" in obj: