Skip to content
This repository was archived by the owner on Dec 12, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion release.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@
"version": "11.0.11.7036-1",
"tools_version": "100.5.1"
}
}
}
61 changes: 47 additions & 14 deletions scripts/ci/determine_required_releases.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,22 +10,41 @@
import requests

# contains a map of the quay urls to fetch data about the corresponding images.
QUAY_URL_MAP = {
"mongodb-agent": "https://quay.io/api/v1/repository/mongodb/mongodb-agent-ubi",
"readiness-probe": "https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-readinessprobe",
"version-upgrade-hook": "https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook",
"mongodb-kubernetes-operator": "https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-operator",
QUAY_URL_MAP: Dict[str, List[str]] = {
"mongodb-agent": [
"https://quay.io/api/v1/repository/mongodb/mongodb-agent-ubi",
"https://quay.io/api/v1/repository/mongodb/mongodb-agent",
],
"readiness-probe": [
"https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-readinessprobe",
],
"version-upgrade-hook": [
"https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-operator-version-upgrade-post-start-hook"
],
"mongodb-kubernetes-operator": [
"https://quay.io/api/v1/repository/mongodb/mongodb-kubernetes-operator"
],
}


def _get_all_released_tags(image_type: str) -> List[str]:
url = QUAY_URL_MAP[image_type]
def _get_all_released_tags(url: str) -> List[str]:
resp = requests.get(url).json()
tags = resp["tags"]
return list(tags.keys())


def _load_image_name_to_version_map() -> Dict:
def _load_image_name_to_version_map() -> Dict[str, str]:
"""
_load_image_name_to_version_map returns a mapping of each image name
to the corresponding version.

e.g.
{
"mongodb-kubernetes-operator" : "0.7.2",
"mongodb-agent" : "11.0.11.7036-1"
...
}
"""
with open("release.json") as f:
release = json.loads(f.read())

Expand All @@ -34,24 +53,38 @@ def _load_image_name_to_version_map() -> Dict:
return release


def _all_urls_are_released(urls: List[str], version: str) -> bool:
"""
_all_urls_are_released returns True if the given version exists
as a tag in all urls provided.
"""
for url in urls:
tags = _get_all_released_tags(url)
if version not in tags:
return False
return True


def main() -> int:
if len(sys.argv) != 2:
raise ValueError("usage: determine_required_releases.py [image-name]")

image_name = sys.argv[1]
image_name_map = _load_image_name_to_version_map()
name_to_version_map = _load_image_name_to_version_map()

if image_name not in image_name_map:
if image_name not in name_to_version_map:
raise ValueError(
"Unknown image type [{}], valid values are [{}]".format(
image_name, ",".join(image_name_map.keys())
image_name, ",".join(name_to_version_map.keys())
)
)

if image_name not in QUAY_URL_MAP:
raise ValueError("No associated image url with key [{}]".format(image_name))
raise ValueError("No associated image urls for key [{}]".format(image_name))

tags = _get_all_released_tags(image_name)
if image_name_map[image_name] in tags:
if _all_urls_are_released(
QUAY_URL_MAP[image_name], name_to_version_map[image_name]
):
print("released")
else:
print("unreleased")
Expand Down