Signed-off-by: Andrea Bolognani <abologna@xxxxxxxxxx> --- ci/util.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/ci/util.py b/ci/util.py index b6a99ce9c0..b314ebd078 100644 --- a/ci/util.py +++ b/ci/util.py @@ -72,6 +72,34 @@ def get_image_info(image_name: str) -> Dict[str, str]: return {"distro": distro, "cross": cross} +def get_registry_images(registry_uri: str) -> Dict[str, List[str]]: + """ + List all container images that are currently available in the + given GitLab project. + + The returned dictionary contains an entry for each available + distro, with its associated value being a (possibly empty) list + of cross-building architectures it supports. + + :param uri: URI pointing to a GitLab instance's image registry + :return: information about container images + """ + + registry_images = get_registry_images_raw(registry_uri) + + # Parse the names of all images found on the registry and + # organize them by distro + images = {} + for image in registry_images: + info = get_image_info(image["name"]) + if info["distro"] not in images: + images[info["distro"]] = [] + if info["cross"]: + images[info["distro"]].append(info["cross"]) + + return images + + def get_registry_stale_images(registry_uri: str, supported_distros: List[str]) -> Dict[str, int]: """ -- 2.26.3