From 6fc2ffe30d7d77ce3915dbba148912044b04a17a Mon Sep 17 00:00:00 2001 From: Ozan Unsal Date: May 11 2022 07:15:17 +0000 Subject: find_latest: Create change-logs for RHEL-8.6+ composes JIRA: RHELCMP-6574 Signed-off-by: Ozan Unsal --- diff --git a/compose_utils/find_latest.py b/compose_utils/find_latest.py index 2a89713..92b05f0 100644 --- a/compose_utils/find_latest.py +++ b/compose_utils/find_latest.py @@ -4,6 +4,7 @@ import os import glob import productmd +import requests def _get_label_name(label): @@ -42,7 +43,7 @@ def find_composes(patterns): try: # Access the metadata to raise an error. compose.info - except Exception as ex: + except Exception: continue result.append(compose) return result @@ -183,9 +184,30 @@ def get_latest_production(composes, compose=None): return _get_latest_by_type(composes, "production", compose=compose) +def get_composes_from_cts(url): + """ Request composes from CTS""" + resp = requests.get(url) + if resp.status_code != 200: + raise Exception("Compose is not retrieved from CTS!") + data = resp.json()["items"] + composes = [] + for i in data: + compose_url = i["compose_url"] + if not compose_url: + continue + path = compose_url.replace("http://download-node-02.eng.bos.redhat.com", "/mnt/redhat") + composes.append(productmd.compose.Compose(path)) + return composes + + def get_latest_nightly(composes, compose=None): """Return latest nightly compose""" - return _get_latest_by_type(composes, "nightly", compose=compose) + if compose: + version = compose.info.release.version + url = "https://cts.engineering.redhat.com/api/1/composes/?release_short=RHEL&release_version={}&tag=nightly".format(version) + composes = get_composes_from_cts(url) + composes = filter_older_than(composes, compose) + return _get_latest(composes) def get_previous_ga(composes, compose=None): @@ -212,15 +234,12 @@ def get_previous_milestone(composes, compose): """Return latest compose with a different milestone name""" if not compose.info.compose.label: return None + version = compose.info.release.version + url = "https://cts.engineering.redhat.com/api/1/composes/?release_short=RHEL&release_version={}&tag=candidate".format(version) + composes = get_composes_from_cts(url) composes = filter_same_release(composes, compose) composes = filter_older_than(composes, compose) composes = filter_compose_type(composes, "production") - label_name = _get_label_name(compose.info.compose.label) - composes = [ - i - for i in composes - if _get_label_name(i.info.compose.label) != label_name - ] return _get_latest(composes) @@ -249,16 +268,18 @@ def get_same_milestone_previous_respin(composes, compose): """ if not compose.info.compose.label: return None + version = compose.info.release.version + if version == "9.1.0": + version = "9.0.0" + elif version == "8.7.0": + version = "8.6.0" + else: + return None + url = "https://cts.engineering.redhat.com/api/1/composes/?release_short=RHEL&release_version={}&tag=candidate".format(version) + composes = get_composes_from_cts(url) composes = filter_same_release(composes, compose) composes = filter_older_than(composes, compose) composes = filter_compose_type(composes, "production") - label_name = _get_label_name(compose.info.compose.label) - composes = [ - i - for i in composes - if i.info.compose.label_major_version == compose.info.compose.label_major_version - and _get_label_name(i.info.compose.label) == label_name - ] return _get_latest(composes) @@ -270,7 +291,7 @@ def get_related_composes(composes, compose): result["ga"] = get_previous_ga(composes, compose) result["latest_production"] = get_latest_production(composes, compose) - result["latest_nightly"] = get_latest_nightly(composes) + result["latest_nightly"] = get_latest_nightly(composes, compose) if compose is None: compose = result["latest_production"]