33import os
44
55from scripts .release .build .build_info import (
6+ AGENT_IMAGE ,
67 DATABASE_IMAGE ,
78 INIT_APPDB_IMAGE ,
89 INIT_DATABASE_IMAGE ,
910 INIT_OPS_MANAGER_IMAGE ,
1011 OPERATOR_IMAGE ,
12+ OPS_MANAGER_IMAGE ,
1113 READINESS_PROBE_IMAGE ,
1214 UPGRADE_HOOK_IMAGE ,
13- OPS_MANAGER_IMAGE ,
14- AGENT_IMAGE ,
1515 BuildInfo ,
1616 load_build_info ,
1717)
18- from scripts .release .kubectl_mongodb .promote_kubectl_plugin import upload_assets_to_github_release
1918from scripts .release .build .build_scenario import BuildScenario
20- from scripts .release .constants import (
21- DEFAULT_CHANGELOG_PATH ,
22- DEFAULT_RELEASE_INITIAL_VERSION ,
23- DEFAULT_REPOSITORY_PATH ,
19+ from scripts .release .kubectl_mongodb .utils import (
20+ upload_assets_to_github_release ,
2421)
2522
2623SEARCH_IMAGE = "search"
2724SEARCH_IMAGE_REPOSITORY = "quay.io/mongodb/mongodb-search"
2825
2926RELEASE_INFO_IMAGES_ORDERED = [
30- OPERATOR_IMAGE , # mongodb-kubernetes
31- INIT_DATABASE_IMAGE , # mongodb-kubernetes-init-database
32- INIT_APPDB_IMAGE , # mongodb-kubernetes-init-appdb
33- INIT_OPS_MANAGER_IMAGE , # mongodb-kubernetes-init-ops-manager
34- DATABASE_IMAGE , # mongodb-kubernetes-database
35- READINESS_PROBE_IMAGE , # mongodb-kubernetes-readinessprobe
36- UPGRADE_HOOK_IMAGE , # mongodb-kubernetes-operator-version-upgrade-post-start-hook
27+ OPERATOR_IMAGE , # mongodb-kubernetes
28+ INIT_DATABASE_IMAGE , # mongodb-kubernetes-init-database
29+ INIT_APPDB_IMAGE , # mongodb-kubernetes-init-appdb
30+ INIT_OPS_MANAGER_IMAGE , # mongodb-kubernetes-init-ops-manager
31+ DATABASE_IMAGE , # mongodb-kubernetes-database
32+ READINESS_PROBE_IMAGE , # mongodb-kubernetes-readinessprobe
3733]
3834
39- EXTERNAL_INFO_IMAGES = [
40- OPS_MANAGER_IMAGE ,
41- AGENT_IMAGE
42- ]
4335
44- def create_release_info_json (version : str ) -> str :
36+ def create_release_info_json (operator_version : str ) -> str :
4537 build_info = load_build_info (scenario = BuildScenario .RELEASE )
4638
47- release_info_json = convert_to_release_info_json (build_info , version )
39+ release_info_json = convert_to_release_info_json (build_info , operator_version )
4840
4941 return json .dumps (release_info_json , indent = 2 )
5042
5143
52- def convert_to_release_info_json (build_info : BuildInfo , version : str ) -> dict :
44+ def convert_to_release_info_json (build_info : BuildInfo , operator_version : str ) -> dict :
5345 release_json_data = os .path .join (os .getcwd (), "release.json" )
5446 with open (release_json_data , "r" ) as fd :
5547 release_data = json .load (fd )
@@ -58,52 +50,86 @@ def convert_to_release_info_json(build_info: BuildInfo, version: str) -> dict:
5850 "images" : {},
5951 }
6052 # Filter (and order) images to include only those relevant for release info
61- images = {name : build_info .images [name ] for name in RELEASE_INFO_IMAGES_ORDERED + EXTERNAL_INFO_IMAGES }
53+ images = {name : build_info .images [name ] for name in RELEASE_INFO_IMAGES_ORDERED }
6254
6355 for name , image in images .items ():
64- release_info_output ["images" ][name ] = {
65- "repositories" : image .repositories ,
66- "platforms" : image .platforms ,
67- }
68-
69- if name == OPS_MANAGER_IMAGE :
70- release_info_output ["images" ][name ]["version" ] = latest_om_version (release_data )
71- continue
72-
73- if name == AGENT_IMAGE :
74- release_info_output ["images" ][name ]["version" ] = latest_agent_version (release_data )
75- continue
76-
77- release_info_output ["images" ][name ]["version" ] = version
78-
79- # add search image detail
80- release_info_output ["images" ][SEARCH_IMAGE ] = {
81- "repositories" : SEARCH_IMAGE_REPOSITORY ,
82- "platforms" : ["linux/arm64" , "linux/amd64" ],
83- "version" : latest_search_version (release_data )
84- }
56+ add_image_info (release_info_output , name , image .repositories , image .platforms , operator_version )
57+
58+ # add OPS manager image info
59+ om_build_info = build_info .images [OPS_MANAGER_IMAGE ]
60+ add_image_info (
61+ release_info_output ,
62+ OPS_MANAGER_IMAGE ,
63+ om_build_info .repositories ,
64+ om_build_info .platforms ,
65+ latest_om_version (release_data ),
66+ )
67+
68+ # add agent image info
69+ agent_build_info = build_info .images [AGENT_IMAGE ]
70+ add_image_info (
71+ release_info_output ,
72+ AGENT_IMAGE ,
73+ agent_build_info .repositories ,
74+ agent_build_info .platforms ,
75+ latest_agent_version (release_data ),
76+ )
77+
78+ # add upgrade hook image info
79+ upgradehook_build_info = build_info .images [UPGRADE_HOOK_IMAGE ]
80+ add_image_info (
81+ release_info_output ,
82+ UPGRADE_HOOK_IMAGE ,
83+ upgradehook_build_info .repositories ,
84+ upgradehook_build_info .platforms ,
85+ latest_upgrade_hook_version (release_data ),
86+ )
87+
88+ # add search image info
89+ add_image_info (
90+ release_info_output ,
91+ SEARCH_IMAGE ,
92+ SEARCH_IMAGE_REPOSITORY ,
93+ ["linux/arm64" , "linux/amd64" ],
94+ latest_search_version (release_data ),
95+ )
8596
8697 release_info_output = add_om_agent_mappings (release_data , release_info_output )
8798
8899 return release_info_output
89100
101+
102+ def add_image_info (release_info_output , name , repositories , platforms , version ):
103+ release_info_output ["images" ][name ] = {"repositories" : repositories , "platforms" : platforms , "version" : version }
104+
105+
90106def add_om_agent_mappings (release_data , output ):
91107 om_agent_mapping = release_data ["latestOpsManagerAgentMapping" ]
92108 output ["latestOpsManagerAgentMapping" ] = om_agent_mapping
93109
94110 return output
95111
112+
113+ def latest_upgrade_hook_version (relese_data ):
114+ return relese_data ["versionUpgradeHookVersion" ]
115+
116+
96117def latest_om_version (release_data ):
97118 return release_data ["supportedImages" ]["ops-manager" ]["versions" ][- 1 ]
98119
120+
99121def latest_agent_version (release_data ):
100122 newest_om_version = release_data ["supportedImages" ]["ops-manager" ]["versions" ][- 1 ]
101- newest_om_mapping = release_data ["supportedImages" ]["mongodb-agent" ]["opsManagerMapping" ]["ops_manager" ][newest_om_version ]
123+ newest_om_mapping = release_data ["supportedImages" ]["mongodb-agent" ]["opsManagerMapping" ]["ops_manager" ][
124+ newest_om_version
125+ ]
102126 return newest_om_mapping ["agent_version" ]
103127
128+
104129def latest_search_version (release_data ):
105130 return release_data ["search" ]["version" ]
106131
132+
107133if __name__ == "__main__" :
108134 parser = argparse .ArgumentParser (
109135 description = "Create relevant release artifacts information in JSON format." ,
0 commit comments