Skip to content

revert change for trimming agents #208

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

Draft
wants to merge 1 commit into
base: master
Choose a base branch
from
Draft
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
251 changes: 0 additions & 251 deletions scripts/evergreen/release/test_update_release.py

This file was deleted.

77 changes: 0 additions & 77 deletions scripts/evergreen/release/update_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@
import json
import logging
import os
from collections import defaultdict

import yaml
from packaging import version

logger = logging.getLogger(__name__)

Expand All @@ -19,87 +17,12 @@ def get_latest_om_versions_from_evergreen_yml():
return data["variables"][0], data["variables"][1]


def trim_versions(versions_list, number_of_versions=3):
"""
Keep only the latest number_of_versions versions per major version in a versions list.
Returns a sorted list with trimmed versions.
"""

major_version_groups = defaultdict(list)
for v in versions_list:
try:
major_version = v.split(".")[0]
major_version_groups[major_version].append(v)
except (IndexError, AttributeError):
# Keep versions that don't follow the expected format
continue

trimmed_versions = []

for major_version, versions in major_version_groups.items():
versions.sort(key=lambda x: version.parse(x), reverse=True)
latest_versions = versions[:number_of_versions]
for v in latest_versions:
if v not in trimmed_versions:
trimmed_versions.append(v)

# Sort the final list in ascending order
trimmed_versions.sort(key=lambda x: version.parse(x))
return trimmed_versions


def trim_supported_image_versions(release: dict, image_types: list):
"""
Trim the versions list for specified image types to keep only
the latest 3 versions per major version.
"""
for image_type in image_types:
if image_type in release["supportedImages"]:
original_versions = release["supportedImages"][image_type]["versions"]
trimmed_versions = trim_versions(original_versions, 3)

# TODO: Remove this once we don't need to use OM 7.0.12 in the OM Multicluster DR tests
# https://jira.mongodb.org/browse/CLOUDP-297377
if image_type == "ops-manager":
trimmed_versions.append("7.0.12")
trimmed_versions.sort(key=lambda x: version.parse(x))

release["supportedImages"][image_type]["versions"] = trimmed_versions


def trim_ops_manager_mapping(release: dict):
"""
Keep only the latest 3 versions per major version in opsManagerMapping.ops_manager.
"""
if (
"mongodb-agent" in release["supportedImages"]
and "opsManagerMapping" in release["supportedImages"]["mongodb-agent"]
):
ops_manager_mapping = release["supportedImages"]["mongodb-agent"]["opsManagerMapping"]["ops_manager"]

all_versions = ops_manager_mapping.keys()

trimmed_versions = trim_versions(all_versions, 3)

trimmed_mapping = {v: ops_manager_mapping[v] for v in trimmed_versions}

release["supportedImages"]["mongodb-agent"]["opsManagerMapping"]["ops_manager"] = trimmed_mapping


def update_release_json():
# Define a custom constructor to preserve the anchors in the YAML file
release = os.path.join(os.getcwd(), "release.json")
with open(release, "r") as fd:
data = json.load(fd)

# Trim ops_manager_mapping to keep only the latest 3 versions
trim_ops_manager_mapping(data)

# Trim init and operator images to keep only the latest 3 versions per major
trim_supported_image_versions(
data, ["mongodb-kubernetes", "init-ops-manager", "init-database", "init-appdb", "database", "ops-manager"]
)

# PCT already bumps the release.json, such that the last element contains the newest version, since they are sorted
newest_om_version = data["supportedImages"]["ops-manager"]["versions"][-1]
update_mongodb_tools_bundle(data, newest_om_version)
Expand Down