def parse_console_versions()

in resources/repositories/cluster-mgmt.git/scripts/modify_control_plane_version.py [0:0]


def parse_console_versions(values_file, codebase_versions, cp_values_file):
    filtered_list = []
    unique_data = []
    with open(values_file, 'r') as file:
        try:
            data = yaml.safe_load(file)
            console_versions = data.get('consoleVersions')
            versions_list = [d['registryVersion'] for d in console_versions]
            sorted_versions = sorted(versions_list,
                                     key=lambda x: tuple(map(int, x.split('.'))), reverse=True)[:versions_to_keep]

            filtered_list = [d for d in console_versions if d['registryVersion'] in sorted_versions]

            if codebase_versions:
                versions_by_codebases = ([d for d in console_versions if d['registryVersion'] in codebase_versions])
                filtered_list = filtered_list + versions_by_codebases

            for d in filtered_list:
                if d not in unique_data:
                    unique_data.append(d)

            max_version = max(d['registryVersion'] for d in unique_data)

            for d in unique_data:
                if d['registryVersion'] == max_version:
                    d['latest'] = True
            data['consoleVersions'] = unique_data

        except yaml.YAMLError as e:
            print(f"Error loading YAML file: {e}")
            return None

    with open(cp_values_file, 'r') as file:
        cp_values_data = yaml.safe_load(file)

    cp_values_data.update(data)

    with open(cp_values_file, 'w', encoding='utf8') as file:
        yaml.dump(cp_values_data, file, default_flow_style=False, allow_unicode=True)