Project

General

Custom queries

Profile

Actions

Feature #15250

open

a-c-r set TTL on final output collection

Added by Peter Amstutz almost 6 years ago. Updated 5 months ago.

Status:
New
Priority:
Normal
Assigned To:
-
Category:
CWL
Target version:
Story points:
-

Description

Add feature to set the TTL on the final output collection (separate from existing feature which sets TTL on intermediate collections).


Subtasks 1 (1 open0 closed)

Task #17459: ReviewNewPeter AmstutzActions

Related issues 1 (1 open0 closed)

Related to Arvados Epics - Idea #20273: More CWL runner improvementsNewActions
Actions #9

Updated by Jiayong Li almost 4 years ago

1. First of all, would you like to have final output ttl set by an a-c-r argument, or an extension in the workflow cwl?
2. Following your hint, I'm trying to draw the parallel between setting intermediate output ttl (arvcontainer.py) and setting final output ttl (executor.py). In arvcontainer.py, you extract output_ttl (L268), set it in the container_request dictionary (L284), then use arvrunner.api.container_requests().update() (L309). But this looks quite different for final output: in executor.py, final output collection is made using the make_output_collection method (L421), this is not tied to a container_request. Do you think I should use the get_trash_at api call for the collection class?

Actions #12

Updated by Peter Amstutz over 3 years ago

Jiayong Li wrote:

1. First of all, would you like to have final output ttl set by an a-c-r argument, or an extension in the workflow cwl?

The user should be able to provide both on the command or using a CWL hint. That is how storage classes, intermediate output TTL, etc work.

2. Following your hint, I'm trying to draw the parallel between setting intermediate output ttl (arvcontainer.py) and setting final output ttl (executor.py). In arvcontainer.py, you extract output_ttl (L268), set it in the container_request dictionary (L284), then use arvrunner.api.container_requests().update() (L309). But this looks quite different for final output: in executor.py, final output collection is made using the make_output_collection method (L421), this is not tied to a container_request. Do you think I should use the get_trash_at api call for the collection class?

You want to add "trash_at=" to final.save_new(). trash_at takes a Python datetime object in the future.

executor.py:475

final.save_new(name=name, owner_uuid=self.project_uuid, storage_classes=storage_classes, ensure_unique_name=True, trash_at=...)
Actions

Also available in: Atom PDF