-
Notifications
You must be signed in to change notification settings - Fork 494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simple support for remote web stores #7325
Simple support for remote web stores #7325
Conversation
Verified this now works with file backing store. For example, using a default ansible install of this branch,
Create a dataset, get your api key and submit a 'file', e.g. The main difference from submitting a file is that instead of a file, you send fileName, mimeType, storageIdentifier, and md5Hash values in the jsonData parameter (which is what the S3 direct upload does as well.) In the db, the storageIdentifier is expanded to : normal download works, and setting: Testing aux files and S3 next. |
S3 is also working now. That's everything that was originally defined. |
@akio-sone thanks, I talked to @qqmyers and he plans to add a note. |
and avoid failure warning in log.
What this PR does / why we need it: Enables a class of remote stores with a general mechanism
Which issue(s) this PR closes:
Closes #7324
Special notes for your reviewer:
Suggestions on how to test this: The API should allow testing with any web server. Create a file at a remote URL and verify that Dataverse works (file is downloadable, normal aux files can be created). To test security, the signed URL can be retrieved from the remote server and 'hand' validated (removing the "token" param and running a SHA512 hash on the remainder on an online site to compare with the token.)
EDIT: Also, see the comment below, with the asadmin commands etc. for setting up a sample HTTP store and creating a working Datafile entry with a storage identifier pointing to a remote URL.
There is more information in the issue, and in the design document linked there - https://docs.google.com/document/d/1rDhL2QBY2NhVqan3Mwp11BJ0O9naiFEhvnlbKVDQkBc/edit?usp=sharing - on how this "HTTP overlay" works, and how it stores extra files, etc. (L.A.)
Also - since this PR includes a refactoring of classes related to external tools (due to some code sharing with the OpenDP work which leverages the same URL signing introduced here, some basic regression testing of external tool config/launch should be done. Essentially, the code to create the parameters needed by a previewer (or other tool) on its command line has been moved to a new base class. If configuring a previewer and seeing the preview works, it would confirm that move hasn't accidentally broken anything. (This change should not make any changes to how external tools work, it is just internal refactoring.)
Does this PR introduce a user interface change? If mockups are available, please link/include them here: API only at this point.
Is there a release notes update needed for this change?:
Additional documentation: