X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/b478b8a0b4263b0e54060e3fecaab9b6ecdcb085..873fcf181c037cc1e42419bfeaf5bb70c9d9e239:/sdk/cwl/arvados_cwl/util.py diff --git a/sdk/cwl/arvados_cwl/util.py b/sdk/cwl/arvados_cwl/util.py index 98a2a89a1d..299f854ec2 100644 --- a/sdk/cwl/arvados_cwl/util.py +++ b/sdk/cwl/arvados_cwl/util.py @@ -5,6 +5,8 @@ import datetime from arvados.errors import ApiError +collectionUUID = "http://arvados.org/cwl#collectionUUID" + def get_intermediate_collection_info(workflow_step_name, current_container, intermediate_output_ttl): if workflow_step_name: name = "Intermediate collection for step %s" % (workflow_step_name) @@ -14,9 +16,9 @@ def get_intermediate_collection_info(workflow_step_name, current_container, inte if intermediate_output_ttl > 0: trash_time = datetime.datetime.utcnow() + datetime.timedelta(seconds=intermediate_output_ttl) container_uuid = None + props = {"type": "intermediate"} if current_container: - container_uuid = current_container['uuid'] - props = {"type": "intermediate", "container": container_uuid} + props["container_uuid"] = current_container['uuid'] return {"name" : name, "trash_at" : trash_time, "properties" : props} @@ -26,6 +28,24 @@ def get_current_container(api, num_retries=0, logger=None): current_container = api.containers().current().execute(num_retries=num_retries) except ApiError as e: # Status code 404 just means we're not running in a container. - if e.resp.status != 404 and logger: - logger.info("Getting current container: %s", e) + if e.resp.status != 404: + if logger: + logger.info("Getting current container: %s", e) + raise e + return current_container + + +def common_prefix(firstfile, all_files): + common_parts = firstfile.split('/') + common_parts[-1] = '' + for f in all_files: + f_parts = f.split('/') + for index, (a, b) in enumerate(zip(common_parts, f_parts)): + if a != b: + common_parts = common_parts[:index + 1] + common_parts[-1] = '' + break + if not any(common_parts): + break + return '/'.join(common_parts)