From c68c20e2e60bb56ee87578d88a7b109eb31aefa6 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Thu, 30 Aug 2018 17:13:25 -0400 Subject: [PATCH] add teams for SIGs and Board Update the governance data with information about the SIGs and board working groups. Change-Id: I00b7d9eb42c859e9e465f67f250f24e15298e6f0 Signed-off-by: Doug Hellmann --- goal_tools/governance.py | 45 +++++++++++++++++-- .../tests/who_helped/test_governance.py | 21 +++++++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/goal_tools/governance.py b/goal_tools/governance.py index de4b91d..49ad9f4 100644 --- a/goal_tools/governance.py +++ b/goal_tools/governance.py @@ -21,13 +21,19 @@ from goal_tools import apis PROJECTS_LIST = "http://git.openstack.org/cgit/openstack/governance/plain/reference/projects.yaml" # noqa TC_LIST = "http://git.openstack.org/cgit/openstack/governance/plain/reference/technical-committee-repos.yaml" # noqa +SIGS_LIST = "http://git.openstack.org/cgit/openstack/governance/plain/reference/sigs-repos.yaml" # noqa class Governance: - def __init__(self, team_data=None, url=PROJECTS_LIST, tc_url=TC_LIST): + def __init__(self, + team_data=None, + url=PROJECTS_LIST, + tc_url=TC_LIST, + sigs_url=SIGS_LIST): self._url = url self._tc_url = tc_url + self._sigs_url = sigs_url if team_data is None: team_data = self._get_team_data() self._team_data = team_data @@ -38,10 +44,12 @@ class Governance: team_data = yaml.load(raw.text) tc = apis.requester(self._tc_url) tc_data = yaml.load(tc.text) - return self._organize_team_data(team_data, tc_data) + sigs = apis.requester(self._sigs_url) + sigs_data = yaml.load(sigs.text) + return self._organize_team_data(team_data, tc_data, sigs_data) @staticmethod - def _organize_team_data(team_data, tc_data): + def _organize_team_data(team_data, tc_data, sigs_data): team_data['Technical Committee'] = { 'deliverables': { repo['repo'].partition('/')[-1]: {'repos': [repo['repo']]} @@ -49,6 +57,37 @@ class Governance: } } + # Treat all SIGs as one team for simplicity. + team_data['SIGs'] = { + 'deliverables': { + name: { + 'repos': [r['repo'] for r in data], + } + for name, data in sigs_data.items() + }, + } + + # Board working groups. Inline the data because there isn't a + # lot and we don't want to wait for + # https://review.openstack.org/598350 + team_data['Board'] = { + 'deliverables': { + 'interop': { + 'repos': [ + 'openstack/interop', + 'openstack/refstack-client', + 'openstack/refstack', + 'openstack/python-tempestconf', + ], + }, + 'transparency': { + 'repos': [ + 'openstack/transparency-policy', + ], + }, + }, + } + by_repos = {} for team, info in team_data.items(): for dname, dinfo in info.get('deliverables', {}).items(): diff --git a/goal_tools/tests/who_helped/test_governance.py b/goal_tools/tests/who_helped/test_governance.py index 70b1ac3..7d2f54c 100644 --- a/goal_tools/tests/who_helped/test_governance.py +++ b/goal_tools/tests/who_helped/test_governance.py @@ -59,9 +59,30 @@ Release Management: - openstack-dev/specs-cookiecutter """ +_sigs_data_yaml = """ +--- +# List of repositories owned by SIGs +meta: + - repo: openstack/governance-sigs +security: + - repo: openstack/anchor + - repo: openstack/ossa + - repo: openstack/security-analysis + - repo: openstack/security-doc + - repo: openstack/security-specs + - repo: openstack/syntribos + - repo: openstack/syntribos-openstack-templates + - repo: openstack/syntribos-payloads +self-healing: + - repo: openstack/self-healing-sig +operations-docs: + - repo: openstack/operations-guide +""" + TEAM_DATA = governance.Governance._organize_team_data( yaml.load(_team_data_yaml), {'Technical Committee': [{'repo': 'openstack/governance'}]}, + yaml.load(_sigs_data_yaml), )