6060
6161logging .basicConfig (level = logging .DEBUG , format = '%(asctime)s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s' )
6262
63- URL_BASE = "https://mirror.openshift.com/pub/openshift-v4/aarch64/microshift"
64- URL_BASE_X86 = "https://mirror.openshift.com/pub/openshift-v4/x86_64/microshift"
63+
64+ def get_mirror_url_base (major_version , arch ):
65+ """Get the mirror URL base for the given major version and architecture."""
66+ return f"https://mirror.openshift.com/pub/openshift-v{ major_version } /{ arch } /microshift"
67+
6568
6669# An EC RPM filename looks like
6770# microshift-4.13.0~ec.4-202303070857.p0.gcf0bce2.assembly.ec.4.el9.aarch64.rpm
@@ -167,13 +170,22 @@ def main():
167170 if args .versions_to_scan :
168171 versions_to_scan = args .versions_to_scan
169172
173+ # Group versions by major to use correct mirror URL bases
174+ versions_by_major = {}
175+ for version in versions_to_scan :
176+ scan_major = version .split ('.' , 1 )[0 ]
177+ versions_by_major .setdefault (scan_major , []).append (version )
178+
170179 new_releases = []
171- if args .ec :
172- new_releases .extend (find_new_releases (versions_to_scan , URL_BASE , 'ocp-dev-preview' ))
173- new_releases .extend (find_new_releases (versions_to_scan , URL_BASE_X86 , 'ocp-dev-preview' ))
174- if args .rc :
175- new_releases .extend (find_new_releases (versions_to_scan , URL_BASE , 'ocp' ))
176- new_releases .extend (find_new_releases (versions_to_scan , URL_BASE_X86 , 'ocp' ))
180+ for scan_major , scan_versions in versions_by_major .items ():
181+ url_base_aarch64 = get_mirror_url_base (scan_major , 'aarch64' )
182+ url_base_x86 = get_mirror_url_base (scan_major , 'x86_64' )
183+ if args .ec :
184+ new_releases .extend (find_new_releases (scan_versions , url_base_aarch64 , 'ocp-dev-preview' ))
185+ new_releases .extend (find_new_releases (scan_versions , url_base_x86 , 'ocp-dev-preview' ))
186+ if args .rc :
187+ new_releases .extend (find_new_releases (scan_versions , url_base_aarch64 , 'ocp' ))
188+ new_releases .extend (find_new_releases (scan_versions , url_base_x86 , 'ocp' ))
177189
178190 if not new_releases :
179191 logging .info ("No new releases found." )
@@ -194,7 +206,7 @@ def main():
194206class VersionListParser (html .parser .HTMLParser ):
195207 """HTMLParser to extract version numbers from the mirror file list pages.
196208
197- A page like https://mirror.openshift.com/pub/openshift-v4 /aarch64/microshift/ocp-dev-preview/
209+ A page like https://mirror.openshift.com/pub/openshift-v{major} /aarch64/microshift/ocp-dev-preview/
198210
199211 contains HTML like
200212
@@ -355,20 +367,25 @@ def publish_candidate_release(new_release, take_action):
355367 candidate_number = new_release .candidate_number
356368 release_type = new_release .release_type
357369
370+ # Extract major version from product version (e.g., "4" from "4.16.0")
371+ major_version = product_version .split ('.' )[0 ]
372+ url_base_x86 = get_mirror_url_base (major_version , 'x86_64' )
373+ url_base_aarch64 = get_mirror_url_base (major_version , 'aarch64' )
374+
358375 # Set up the release notes preamble with download links
359376 preamble = textwrap .dedent (f"""
360377 This is a candidate release for { product_version } .
361378
362379 See the mirror for build artifacts:
363- - { URL_BASE_X86 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /
364- - { URL_BASE } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /
380+ - { url_base_x86 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /
381+ - { url_base_aarch64 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /
365382
366383 Or add this RPM repository to your x86 systems:
367384
368385 ```
369386 [microshift-{ product_version } -{ candidate_type } -{ candidate_number } ]
370387 name=MicroShift { product_version } EarlyAccess { candidate_type } .{ candidate_number } RPMs
371- baseurl={ URL_BASE_X86 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /el9/os/
388+ baseurl={ url_base_x86 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /el9/os/
372389 enabled=1
373390 gpgcheck=0
374391 skip_if_unavailable=0
@@ -379,7 +396,7 @@ def publish_candidate_release(new_release, take_action):
379396 ```
380397 [microshift-{ product_version } -{ candidate_type } -{ candidate_number } ]
381398 name=MicroShift { product_version } EarlyAccess { candidate_type } .{ candidate_number } RPMs
382- baseurl={ URL_BASE } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /el9/os/
399+ baseurl={ url_base_aarch64 } /{ release_type } /{ product_version } -{ candidate_type } .{ candidate_number } /el9/os/
383400 enabled=1
384401 gpgcheck=0
385402 skip_if_unavailable=0
0 commit comments