-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Overhaul Object Store Backends #18117
Conversation
Works with service account and user accounts keys. Settings -> Interoperability to create HMAC keys.
Eliminate CloudConfigMixin... This got copid and pasted over and over and each place just used once. Really odd reading of my original code but I guess I understand why people did it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great!
Fixes biggest issue with galaxyproject#16438 - IMO anyway.
9923d29
to
8d060b3
Compare
This is breaking a single test still:
def test_admin_build_data_bundle_by_uri(self):
original_count = self._testbeta_field_count()
history_id = self.dataset_populator.new_history()
payload = self.dataset_populator.run_tool_payload(
tool_id="data_manager",
inputs={"ignored_value": "moo"},
data_manager_mode="bundle",
history_id=history_id,
)
create_response = self._post("tools", data=payload)
create_response.raise_for_status()
self.dataset_populator.wait_for_history(history_id, assert_ok=True)
data_manager_dataset = self.dataset_populator.get_history_dataset_details(history_id)
assert data_manager_dataset["extension"] == "data_manager_json"
post_job_count = self._testbeta_field_count()
assert original_count == post_job_count
shutil.rmtree(self.object_store_cache_path)
os.makedirs(self.object_store_cache_path)
content = self.dataset_populator.get_history_dataset_content(
history_id, to_ext="data_manager_json", type="bytes"
)
temp_directory = decompress_bytes_to_directory(content)
> assert os.path.exists(os.path.join(temp_directory, "newvalue.txt"))
E AssertionError: assert False
E + where False = <function exists at 0x7fdf1957f0d0>('/tmp/tmpnrvoj4c7/tmp9e__od17/newvalue.txt')
E + where <function exists at 0x7fdf1957f0d0> = <module 'posixpath' from '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/posixpath.py'>.exists
E + where <module 'posixpath' from '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/posixpath.py'> = os.path
E + and '/tmp/tmpnrvoj4c7/tmp9e__od17/newvalue.txt' = <function join at 0x7fdf1957fa60>('/tmp/tmpnrvoj4c7/tmp9e__od17', 'newvalue.txt')
E + where <function join at 0x7fdf1957fa60> = <module 'posixpath' from '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/posixpath.py'>.join
E + where <module 'posixpath' from '/opt/hostedtoolcache/Python/3.8.18/x64/lib/python3.8/posixpath.py'> = os.path
|
Unit test that might replicate what is happening with the test case.
|
18453e4
to
5aa3519
Compare
- Fix s3 which broke during the migration because we stopped adding a / I thought was silly. - Use the test case I wrote that mimics the integration test failure to also fix the boto3 and azure_blob object stores for these failures. Also make note of a lingering issue that is pretty important
62d23b6
to
9d1ba54
Compare
Tracking that last bug down... meant adding a test case and finding many more existing bugs that predate this PR. I think the overall result from all of the fixes that resulted from those tests is that all of the objectstores are now much less buggy when it comes to extra files handling before this refactoring began. The comments in the last few commits make it clear what I found and such - probably worth reviewing those commits. |
Closing in favor of #18136. That PR has all of this plus some nice test improvements and fixes discovered by those. |
How to test the changes?
(Select all options that apply)
License