-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
After discussing a bit more about this long-standing feature request a couple of weeks ago during the backend working group meeting (slides) here are a couple of use cases and a high-level break down of the tasks.
Use Case: Archive a history
The most basic use case will be just "marking" a history as archived. This action will freeze the history by restricting any further mutation.
Example of mutation operations:
- Upload a dataset
- Run a tool
- Run a workflow
- Edit history metadata (name, annotation, etc.)
- Any other?
An archived history will not be displayed when listing histories by default, but there should be a filter option to show them on demand or a dedicated view.
Those histories will display a badge or some clear indication of their state with possibly additional information on how to restore them.
The Storage Dashboard can detect these histories and suggest exporting them to external storage (see the following use cases) in order to free some space in your Galaxy.
Use Case: Package and Publish an Archived History
After a history is archived, the user can recover its storage space. One way is by publishing the contents to a remote repository.
In this scenario, the users should be able to configure the API credentials in the settings to connect to an external DOI repository (like Zenodo, InvenioRDM, etc.). Then the history and its contents can be packaged into a structured container like RO-Crate and published to the desired external repository.
Galaxy will track the DOI returned by the repository and associate it with the archived history so it can be restored later (as a new copy). The DOI publication also enables other users to import the history for reproducibility.
The packaging and publishing steps should be easy to do by using the Storage Dashboard.
Use Case: Package and Export an Archived History
This scenario replaces the publishing step by exporting the package to any private storage or remote file source.
After exporting the packaged history, the export destination is associated with the history (similar to the DOI case above) and used to recover it in the future. However, the user is responsible for maintaining the exported package.
Implementation Tasks
- Make history exports
trackableAdd task-based history export tracking #14839- By creating a generic StoreExportAssociation table to track when and where was a history (or other exportable objects) exported.
- Export a full history as RO-Crate.
- This could also be the regular history export package. But a structured format like RO-Crate will improve the import experience of the resulting package (i.e. the ability to select what you want to import from the full package).
- Integrations with external DOI repositories
- Export to Zenodo
- Export to InvenioRDM
- Allow users to set up their API credentials for those integrations
- Integrate the history archiving system with the Storage Dashboard
- Import histories from RO-Crate
Bonus
- Make histories
freezable- By adding a
frozenboolean column to the History model and restricting mutations based on it.
- By adding a
Please feel free to add your ideas or concerns in the comments :)