Last active
January 30, 2024 12:01
-
-
Save joepvd/a596453923963f793d01c89775619bcb to your computer and use it in GitHub Desktop.
Review release configuration
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env python | |
import requests | |
from ruamel import yaml | |
import sys | |
versions = ["4.6", "4.7", "4.8", "4.9", "4.10", "4.11", "4.12", "4.13", "4.14", "4.15", "4.16"] | |
def get_data(): | |
streams = {} | |
group_info = {} | |
for version in versions: | |
releases = requests.get(f'https://raw.githubusercontent.com/openshift/ocp-build-data/openshift-{version}/releases.yml').text | |
content = yaml.safe_load(releases) | |
streams[version] = content['releases']['stream']['assembly'] | |
group = requests.get(f'https://raw.githubusercontent.com/openshift/ocp-build-data/openshift-{version}/group.yml').text | |
group_info[version] = yaml.safe_load(group) | |
return streams, group_info | |
def get_permits(): | |
permits_overview = {} | |
for version in streams: | |
for permit in streams[version]['permits']: | |
code = permit['code'] | |
component = permit['component'] | |
if not code in permits_overview: | |
permits_overview[code] = {} | |
if not component in permits_overview[code]: | |
permits_overview[code][component] = [] | |
permits_overview[code][component].append(version) | |
return permits_overview | |
def get_frozen(): | |
frozen = {} | |
for version in group_info: | |
freeze = group_info[version]["freeze_automation"] | |
if not freeze in frozen: | |
frozen[freeze] = [] | |
frozen[freeze].append(version) | |
return frozen | |
def get_golang_requirements(): | |
golang = {} | |
for version in group_info: | |
check = group_info[version]['check_golang_versions'] | |
if not check in golang: | |
golang[check] = [] | |
golang[check].append(version) | |
return golang | |
def get_threshold(): | |
threshold = {} | |
for version in group_info: | |
hours = group_info[version]['scan_freshness']['threshold_hours'] | |
if not hours in threshold: | |
threshold[hours] = [] | |
threshold[hours].append(version) | |
return threshold | |
def get_canonical_builders_from_upstream(): | |
canonical_builders = {} | |
for version in group_info: | |
setting = group_info[version].get('canonical_builders_from_upstream', '<empty>') | |
if not setting in canonical_builders: | |
canonical_builders[setting] = [] | |
canonical_builders[setting].append(version) | |
return canonical_builders | |
def get_arches(): | |
arches = {} | |
for version in group_info: | |
a = group_info[version].get('arches', []) | |
a.sort() | |
setting = ','.join(a) | |
if not setting in arches: | |
arches[setting] = [] | |
arches[setting].append(version) | |
return arches | |
def get_scan_sources_exempt_rpms(): | |
exempt = {} | |
for version in streams: | |
e = streams[version].get('members', None).get('images', []) | |
for i in e: | |
if i.get('distgit_key') == '*': | |
for rpm in i.get('metadata', {}).get('scan_sources', {}).get('exempt_rpms', []): | |
if not rpm in exempt: | |
exempt[rpm] = [] | |
exempt[rpm].append(version) | |
return exempt | |
streams, group_info = get_data() | |
overview = {} | |
overview['stream_permits'] = get_permits() | |
overview['freeze_automation'] = get_frozen() | |
overview['check_golang_versions'] = get_golang_requirements() | |
overview['scan_freshness.threshold_hours'] = get_threshold() | |
overview['canonical_builders_from_upstream'] = get_canonical_builders_from_upstream() | |
overview['arches'] = get_arches() | |
overview['exempt_rpms'] = get_scan_sources_exempt_rpms() | |
yaml.dump(overview, sys.stdout) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment