Skip to content

Instantly share code, notes, and snippets.

@joepvd
Last active January 30, 2024 12:01
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save joepvd/a596453923963f793d01c89775619bcb to your computer and use it in GitHub Desktop.
Save joepvd/a596453923963f793d01c89775619bcb to your computer and use it in GitHub Desktop.
Review release configuration
#!/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