Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>
max_res_pars = ("coresMin", "coresMax", "ramMin", "ramMax", "tmpdirMin", "tmpdirMax")
sum_res_pars = ("outdirMin", "outdirMax")
max_res_pars = ("coresMin", "coresMax", "ramMin", "ramMax", "tmpdirMin", "tmpdirMax")
sum_res_pars = ("outdirMin", "outdirMax")
-def make_wrapper_workflow(arvRunner, main, packed, project_uuid, name):
+def make_wrapper_workflow(arvRunner, main, packed, project_uuid, name, git_info, tool):
col = arvados.collection.Collection(api_client=arvRunner.api,
keep_client=arvRunner.keep_client)
col = arvados.collection.Collection(api_client=arvRunner.api,
keep_client=arvRunner.keep_client)
pdh = col.portable_data_hash()
pdh = col.portable_data_hash()
+ toolname = tool.tool.get("label") or tool.metadata.get("label") or os.path.basename(tool.tool["id"])
+ if git_info and git_info.get("http://arvados.org/cwl#gitDescribe"):
+ toolname = "%s (%s)" % (toolname, git_info.get("http://arvados.org/cwl#gitDescribe"))
+
existing = arvRunner.api.collections().list(filters=[["portable_data_hash", "=", pdh], ["owner_uuid", "=", project_uuid]]).execute(num_retries=arvRunner.num_retries)
if len(existing["items"]) == 0:
existing = arvRunner.api.collections().list(filters=[["portable_data_hash", "=", pdh], ["owner_uuid", "=", project_uuid]]).execute(num_retries=arvRunner.num_retries)
if len(existing["items"]) == 0:
- col.save_new(name=name, owner_uuid=project_uuid, ensure_unique_name=True)
+ col.save_new(name=toolname, owner_uuid=project_uuid, ensure_unique_name=True)
# now construct the wrapper
step = {
# now construct the wrapper
step = {
+ "id": "#main/" + toolname,
"in": [],
"out": [],
"run": "keep:%s/workflow.json#main" % pdh,
"in": [],
"out": [],
"run": "keep:%s/workflow.json#main" % pdh,
if main.get("hints"):
wrapper["hints"] = main["hints"]
if main.get("hints"):
wrapper["hints"] = main["hints"]
- return json.dumps({"cwlVersion": "v1.2", "$graph": [wrapper]}, sort_keys=True, indent=4, separators=(',',': '))
+ doc = {"cwlVersion": "v1.2", "$graph": [wrapper]}
+
+ if git_info:
+ for g in git_info:
+ doc[g] = git_info[g]
+
+ return json.dumps(doc, sort_keys=True, indent=4, separators=(',',': '))
def upload_workflow(arvRunner, tool, job_order, project_uuid,
runtimeContext, uuid=None,
def upload_workflow(arvRunner, tool, job_order, project_uuid,
runtimeContext, uuid=None,
- wrapper = make_wrapper_workflow(arvRunner, main, packed, project_uuid, name)
+ wrapper = make_wrapper_workflow(arvRunner, main, packed, project_uuid, name, git_info, tool)