Add a boto3 object store with tests (if you have keys defined) and update documentation. It works well for me both against AWS and against other S3 via interop (I used GCP another clear target of interest for the project). This is the first time Galaxy has had test cases for the multithreaded transfer to S3 object stores.
I removed a ton of code (mostly duplicated code that was merged to a parent class but also some code that didn't make sense or wasn't used) from all the non-disk object stores. Over 400 lines of code removed each from S3, cloud, and Azure object stores and hundreds more removed from pithos, rucio, and irods.
I think the Azure and the Boto3 object stores are now pretty good and clean examples of how to implement a caching object store - pull all the caching logic from the base class and just expose small methods that are very precise and efficient in terms of how they access cloud APIs, respond to error, and such. S3's legacy is on display in the implementation and I didn't break any of that (in fact there are more tests than ever) but it isn't a great example as a result. On the other hand the cloudbridge implementation is very broad with exception handling and that isn't great. Also I think in trying to be so generic you miss a lot of options available through boto3.
Plus a variety of unit test improvements and fixes stemming from that:
Builds on #18117 - adds some more unit tests and associated fixes and a bunch of refactoring of the unit tests for clarity and potential future re-use in documentation.
All of #18117:
Plus a variety of unit test improvements and fixes stemming from that:
How to test the changes?
(Select all options that apply)
How to test the changes?
(Select all options that apply)
License