[ENG-338] [OATHPIT] Throw S3 into the Oath Pit #388
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Ticket
https://openscience.atlassian.net/browse/ENG-338
Purpose
Enable and update the S3 provider for
aiohttp
3.Changes
It is unknown why
aiohttp-0.18.x
stores HTTP response header names in all-uppercase (e.g.'CONTENT-LENGTH'
,'ETAG'
, etc.).aiohttp-3.5.x
now uses the more popular title case (e.g.'Content-Length'
,'ETAG'
, etc.). This breaks the old implementation for classS3FileMetadataHeaders
whose callingself.raw['ETAG']
throwsKey Error
. The class and related tests has been updated.Side effects
No
QA Notes
Here is a list of tests that I have done locally, all of which have passed. Extra notes and quirks are added under each list if there is any. In short, S3 behaves as expected.
Getting metadata for a file and folder
Downloading (20B, 1 MB, 11 MB, 88 MB, 264MB)
Uploading (20B, 1 MB, 11 MB, 88 MB, 264MB one-by-one and together)
DAZ (a folder containing five files of 20B, 1 MB, 11 MB, 88 MB, 264MB)
Delete a file and a folder; delete multiple files and folders
Folder creation and deletion
Renaming files and folders
Intra move and copy
Inter move and copy
Comments persist with moves
Revisions
Updating a file
Project root is storage root vs. a subfolder
Deployment Notes
TBD