Skip to content

Upload & download files with ada #94

@onnozweers

Description

@onnozweers

Currently, we ask users to do uploads & downloads with Rclone, and use ada for everything else.

We can enable Ada to upload and download files, using curl.

Advantages:

  • Users won't need Rclone. Rclone is absolutely great, but it is a different tool, and some users may not like it.
  • Failing upload when data is corrupt. Ada could send the (MD5) checksum with an uploaded file, so that uploads are verified automatically. Corrupt files will not be accepted by dCache and will be cleaned up. Example use case: we have a project that does not have delete permissions because the users are afraid to accidentally delete data. Sometimes they receive uploads from external data providers. When an upload has failed and a corrupt file is left behind, they need to ask us admins to delete the file for them. In their case, sending files with their checksum will make sure that any file that is created will be correct. An additional benefit may be that the file in dCache will have an MD5 checksum. This checksum can then be listed with ada --checksum.
  • It may be helpful for troubleshooting. In some cases, Rclone may run into problems, and then Ada may provide valuable information (like: token has expired).
  • It would provide an extra example / reference of how to interact with dCache.

Challenges:

  • This would need a WebDAV door and not the API. Getting a WebDAV door from the API is described in Ada: get API URL from a WebDAV door and vice versa #14.
  • Some dCaches have not configured a redirect from API to WebDAV door. What to do in those cases?
  • It would be best to not show the checksum on the curl command line, because that would allow other users on the same system to read file checksums with the ps command. Best would be to provide the checksum in a curl header file.

The dCache User Guide describes how to send the checksum with a file for integrity check. https://dcache.org/manuals/UserGuide-10.2/webdav.shtml#checksums (go to "Failing upload if data is corrupt")

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions