Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
20 changes: 20 additions & 0 deletions release.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,26 @@
"version": "0.55.0"
},
"supportedImages": {
"latestOpsManagerAgentMapping": [
{
"6": {
"opsManagerVersion": "6.0.27",
"agentVersion": "12.0.35.7911-1"
}
},
{
"7": {
"opsManagerVersion": "7.0.19",
"agentVersion": "107.0.19.8805-1"
}
},
{
"8": {
"opsManagerVersion": "8.0.16",
"agentVersion": "108.0.16.8895-1"
}
}
],
"ops-manager": {
"ssdlc_name": "MongoDB Controllers for Kubernetes Enterprise Ops Manager",
"versions": [
Expand Down
56 changes: 56 additions & 0 deletions scripts/evergreen/release/update_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ def update_release_json():
newest_operator_version = data["mongodbOperator"]
update_operator_related_versions(data, newest_operator_version)

if not update_latest_om_agent_mapping(data, newest_om_version):
logger.info("Failed updating release.json for latest om-agent mapping")

with open(release, "w") as f:
json.dump(
data,
Expand All @@ -40,6 +43,59 @@ def update_release_json():
f.write("\n")


def update_latest_om_agent_mapping(data, new_om_version):
"""
Updates the 'latestOpsManagerAgentMapping' in release.json with
newly released Ops Manager version and its corresponding Agent version.

If a OM's major version entry already exists, it updates the 'opsManagerVersion'
for that entry. Otherwise, it adds a new entry for the major version.

Args:
data (dict): The complete configuration dictionary.
new_om_version (str): The new Ops Manager version (e.g., "8.0.11").

Returns:
bool: True if the mapping was updated or added, False otherwise.
"""

try:
om_agent_mapping = data["supportedImages"]["latestOpsManagerAgentMapping"]
except KeyError:
logger.debug("Error: 'latestOpsManagerAgentMapping' field not found in the release.json data.")
return False

new_agent_version = data["supportedImages"]["mongodb-agent"]["opsManagerMapping"]["ops_manager"][new_om_version][
"agent_version"
]

try:
new_om_major_version = new_om_version.split(".")[0]
except IndexError:
logger.debug(f"Error: Invalid version format for new_om_version: {new_om_version}")
return False

new_om_agent_mapping = {"opsManagerVersion": new_om_version, "agentVersion": new_agent_version}

new_entry = {new_om_major_version: new_om_agent_mapping}

major_version_found = False
for mapping in om_agent_mapping:
if new_om_major_version in mapping:
# Update the existing entry
mapping[new_om_major_version] = new_om_agent_mapping
major_version_found = True
logger.info(f"Updated existing entry for major version '{new_om_major_version}' to {new_om_version}.")
break

# this is new major version of OM, a new entry will be added
if not major_version_found:
om_agent_mapping.append(new_entry)
logger.info(f"Added new entry for major version '{new_om_major_version}' with version {new_om_version}.")

return True


def update_operator_related_versions(release: dict, version: str):
"""
Updates version on `source`, that corresponds to `release.json`.
Expand Down
Loading