Note |
---|
A design document for building a solution for use case 1 can be found here: Synapse Storage Reports: API Design Document |
Use Cases
Use Case 1: Move projects between Synapse-managed S3 buckets
...
- Create a way to find all file handles that
- Are "owned" by a project
- Belong to a particular storage location (or more likely, do not belong to the destination storage location)
- Have not already been processed/migrated
- In cases where the destination is Synapse-managed, be able to sync the content from the original storage location to a specified S3 bucket.
- Log this sync and its final status, timestamp, etc.
- Update a file handle to point to a new location. Atomically, this includes:
- Verifying that the origin and destination files match (e.g. a checksum provided by S3, or that we can calculate if Synapse has access to both files).
- If the files match, update the file handle (excluding the ID and eTag).
- Log the file handle change
- In cases where the origin is Synapse-managed, mark the origin file for eventual deletion.
- Create a log of all file transfers in case we later need to review the history of what was done.
Use Case 1 could probably be one operation called by a project owner or bucket owner. This operation could handle (1-4).
...