Parts of the code can be reused by another registry checker script introduced in the next patch. Signed-off-by: Erik Skultety <eskultet@xxxxxxxxxx> --- ci/containers/util.py | 25 +++++++++++++++++++++++++ ci/list-images.py | 43 +++++++++++++++++++++++-------------------- 2 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 ci/containers/util.py diff --git a/ci/containers/util.py b/ci/containers/util.py new file mode 100644 index 0000000000..1ce326bba2 --- /dev/null +++ b/ci/containers/util.py @@ -0,0 +1,25 @@ +import json +import urllib.request as urllib + + +PROJECT_ID = 192693 + + +def get_registry_uri(project_id, + base_uri="https://gitlab.com", + api_version=4): + uri = f"{base_uri}/api/v{str(api_version)}/projects/{project_id}/registry/repositories" + return uri + + +def list_images(uri): + """ + Returns all container images as currently available for the given GitLab + project. + + ret: list of container image names + """ + r = urllib.urlopen(uri) + + # read the HTTP response and load the JSON part of it + return json.loads(r.read().decode()) diff --git a/ci/list-images.py b/ci/list-images.py index 6862ac347f..1a1d87c10b 100644 --- a/ci/list-images.py +++ b/ci/list-images.py @@ -1,29 +1,32 @@ #!/usr/bin/env python3 -import json -import urllib.request as urllib +import containers.util as util -PROJECT_ID = 192693 -DOMAIN = "https://gitlab.com" -API = "api/v4" -uri = f"{DOMAIN}/{API}/projects/{PROJECT_ID}/registry/repositories" -r = urllib.urlopen(uri + "?per_page=100") +def list_image_names(uri): + images = util.list_images(uri) -# read the HTTP response and load the JSON part of it -data = json.loads(r.read().decode()) + # skip the "ci-" prefix each of our container images' name has + names = [i["name"][3:] for i in images] + names.sort() -# skip the "ci-" prefix each of our container images' name has -names = [i["name"][3:] for i in data] -names.sort() + return names -names_native = [name for name in names if "cross" not in name] -names_cross = [name for name in names if "cross" in name] -print("Available x86 container images:\n") -print("\t" + "\n\t".join(names_native)) +def main(): + names = list_image_names(util.get_registry_uri(util.PROJECT_ID) + "?per_page=100") -if names_cross: - print() - print("Available cross-compiler container images:\n") - print("\t" + "\n\t".join(names_cross)) + names_native = [name for name in names if "cross" not in name] + names_cross = [name for name in names if "cross" in name] + + print("Available x86 container images:\n") + print("\t" + "\n\t".join(names_native)) + + if names_cross: + print() + print("Available cross-compiler container images:\n") + print("\t" + "\n\t".join(names_cross)) + + +if __name__ == "__main__": + main() -- 2.29.2