22import json
33import os
44
5+ from lib .base_logger import logger
56from scripts .release .build .build_info import (
67 AGENT_IMAGE ,
78 DATABASE_IMAGE ,
1617 load_build_info ,
1718)
1819from scripts .release .build .build_scenario import BuildScenario
20+ from scripts .release .build .image_build_process import (
21+ DockerImageBuilder ,
22+ )
1923from scripts .release .kubectl_mongodb .utils import (
2024 upload_assets_to_github_release ,
2125)
2226
2327SEARCH_IMAGE = "search"
2428SEARCH_IMAGE_REPOSITORY = "quay.io/mongodb/mongodb-search"
29+ AGENT_IMAGE_REPOSITORY = "quay.io/mongodb/mongodb-agent"
2530
2631RELEASE_INFO_IMAGES_ORDERED = [
2732 OPERATOR_IMAGE , # mongodb-kubernetes
@@ -52,14 +57,14 @@ def convert_to_release_info_json(build_info: BuildInfo, operator_version: str) -
5257 images = {name : build_info .images [name ] for name in RELEASE_INFO_IMAGES_ORDERED }
5358
5459 for name , image in images .items ():
55- add_image_info (release_info_output , name , image .repositories , image .platforms , operator_version )
60+ add_image_info (release_info_output , name , image .repositories [ 0 ] , image .platforms , operator_version )
5661
5762 # add OPS manager image info
5863 om_build_info = build_info .images [OPS_MANAGER_IMAGE ]
5964 add_image_info (
6065 release_info_output ,
6166 OPS_MANAGER_IMAGE ,
62- om_build_info .repositories ,
67+ om_build_info .repositories [ 0 ] ,
6368 om_build_info .platforms ,
6469 latest_om_version (release_data ),
6570 )
@@ -69,7 +74,7 @@ def convert_to_release_info_json(build_info: BuildInfo, operator_version: str) -
6974 add_image_info (
7075 release_info_output ,
7176 AGENT_IMAGE ,
72- agent_build_info . repositories ,
77+ AGENT_IMAGE_REPOSITORY ,
7378 agent_build_info .platforms ,
7479 latest_agent_version (release_data ),
7580 )
@@ -79,7 +84,7 @@ def convert_to_release_info_json(build_info: BuildInfo, operator_version: str) -
7984 add_image_info (
8085 release_info_output ,
8186 UPGRADE_HOOK_IMAGE ,
82- upgradehook_build_info .repositories ,
87+ upgradehook_build_info .repositories [ 0 ] ,
8388 upgradehook_build_info .platforms ,
8489 latest_upgrade_hook_version (release_data ),
8590 )
@@ -89,7 +94,7 @@ def convert_to_release_info_json(build_info: BuildInfo, operator_version: str) -
8994 add_image_info (
9095 release_info_output ,
9196 READINESS_PROBE_IMAGE ,
92- readiness_build_info .repositories ,
97+ readiness_build_info .repositories [ 0 ] ,
9398 readiness_build_info .platforms ,
9499 latest_readiness_version (release_data ),
95100 )
@@ -108,8 +113,14 @@ def convert_to_release_info_json(build_info: BuildInfo, operator_version: str) -
108113 return release_info_output
109114
110115
111- def add_image_info (release_info_output , name , repositories , platforms , version ):
112- release_info_output ["images" ][name ] = {"repositories" : repositories , "platforms" : platforms , "version" : version }
116+ def add_image_info (release_info_output , name , repository : str , platforms , version ):
117+ digest = manifest_list_digest_for_image (f"{ repository } :{ version } " )
118+ release_info_output ["images" ][name ] = {
119+ "repoURL" : repository ,
120+ "platforms" : platforms ,
121+ "tag" : version ,
122+ "digest" : digest ,
123+ }
113124
114125
115126def add_om_agent_mappings (release_data , output ):
@@ -143,6 +154,19 @@ def latest_search_version(release_data):
143154 return release_data ["search" ]["version" ]
144155
145156
157+ # manifest_list_digest_for_image returns manifest list digest for the passed image. Returns
158+ # empty string if there was an error figuring that out.
159+ def manifest_list_digest_for_image (image : str ) -> str :
160+ builder = DockerImageBuilder ()
161+ try :
162+ digest = builder .get_manfiest_list_digest (image )
163+ except Exception as e :
164+ logger .error (f"There was an error, figuring out manifest list digest for image { image } . Error: { e } " )
165+ return ""
166+
167+ return digest
168+
169+
146170if __name__ == "__main__" :
147171 parser = argparse .ArgumentParser (
148172 description = "Create relevant release artifacts information in JSON format." ,
0 commit comments