From 2511b6492fe0737cfe2d85ee7f8d8d4fe120aa0e Mon Sep 17 00:00:00 2001 From: Nuwan Goonasekera <2070605+nuwang@users.noreply.github.com> Date: Tue, 22 Feb 2022 22:29:33 +0530 Subject: [PATCH 1/3] Initial fix for quay.io repo query issue Fixes not getting a full list of images in a repo. Without this fix some container images are not resolvable. --- lib/galaxy/tool_util/deps/mulled/util.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index 2078766b8eb..6225ea9b5ed 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -64,13 +64,19 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): if resolution_cache is not None and cache_key in resolution_cache: repo_names = resolution_cache.get(cache_key) else: - repos_parameters = {'public': 'true', 'namespace': namespace} - repos_headers = {'Accept-encoding': 'gzip', 'Accept': 'application/json'} - repos_response = requests.get( - QUAY_REPOSITORY_API_ENDPOINT, headers=repos_headers, params=repos_parameters, timeout=QUAY_IO_TIMEOUT) - - repos = repos_response.json()['repositories'] - repo_names = [r["name"] for r in repos] + next_page = None + repo_names = [] + while True: + repos_parameters = {"public": "true", "namespace": namespace, "next_page": next_page} + repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} + repos_response = requests.get( + QUAY_REPOSITORY_API_ENDPOINT, headers=repos_headers, params=repos_parameters, timeout=QUAY_IO_TIMEOUT) + repos_response_json = repos_response.json() + repos = repos_response_json["repositories"] + repo_names += [r["name"] for r in repos] + next_page = repos_response_json.get("next_page") + if not next_page: + break if resolution_cache is not None: resolution_cache[cache_key] = repo_names return repo_name in repo_names From 831a077f50f6a4c8ff218fd2b7a69a7c402ea1d3 Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Wed, 2 Mar 2022 16:30:28 +0100 Subject: [PATCH 2/3] Move header definition out of while loop Co-authored-by: Sergey Golitsynskiy --- lib/galaxy/tool_util/deps/mulled/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index 6225ea9b5ed..a99d6ddd1af 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -66,9 +66,9 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): else: next_page = None repo_names = [] + repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} while True: - repos_parameters = {"public": "true", "namespace": namespace, "next_page": next_page} - repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} + repos_parameters = {"public": "true", "namespace": namespace, "next_page": next_page} repos_response = requests.get( QUAY_REPOSITORY_API_ENDPOINT, headers=repos_headers, params=repos_parameters, timeout=QUAY_IO_TIMEOUT) repos_response_json = repos_response.json() From 16cb094489bba0c005f5b4eeaf11738c26f29e91 Mon Sep 17 00:00:00 2001 From: Marius van den Beek Date: Wed, 2 Mar 2022 16:57:42 +0100 Subject: [PATCH 3/3] Fix trailing whitespace --- lib/galaxy/tool_util/deps/mulled/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/galaxy/tool_util/deps/mulled/util.py b/lib/galaxy/tool_util/deps/mulled/util.py index a99d6ddd1af..18f479f82c4 100644 --- a/lib/galaxy/tool_util/deps/mulled/util.py +++ b/lib/galaxy/tool_util/deps/mulled/util.py @@ -68,7 +68,7 @@ def _namespace_has_repo_name(namespace, repo_name, resolution_cache): repo_names = [] repos_headers = {"Accept-encoding": "gzip", "Accept": "application/json"} while True: - repos_parameters = {"public": "true", "namespace": namespace, "next_page": next_page} + repos_parameters = {"public": "true", "namespace": namespace, "next_page": next_page} repos_response = requests.get( QUAY_REPOSITORY_API_ENDPOINT, headers=repos_headers, params=repos_parameters, timeout=QUAY_IO_TIMEOUT) repos_response_json = repos_response.json()