add support for reading tc repos list
Change-Id: Id4a73826f6fa8cbf543a1d36bbf8d5e4ea679e5c Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This commit is contained in:
parent
ec79ff40a6
commit
d13b599558
openstack_governance
@ -20,6 +20,7 @@ from openstack_governance import yamlutils
|
||||
import requests
|
||||
|
||||
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
|
||||
|
||||
|
||||
def get_tags_for_deliverable(team_data, team, name):
|
||||
@ -83,16 +84,26 @@ class Repository(object):
|
||||
|
||||
class Governance(object):
|
||||
|
||||
def __init__(self, team_data):
|
||||
def __init__(self, team_data, tc_data):
|
||||
self._team_data = team_data
|
||||
self._tc_data = tc_data
|
||||
team_data['Technical Committee'] = {
|
||||
'deliverables': {
|
||||
repo['repo'].partition('/')[-1]: {'repos': [repo['repo']]}
|
||||
for repo in tc_data['Technical Committee']
|
||||
}
|
||||
}
|
||||
self._teams = [Team(n, i) for n, i in self._team_data.items()]
|
||||
|
||||
@classmethod
|
||||
def from_urls(cls,
|
||||
team_url=PROJECTS_LIST):
|
||||
team_url=PROJECTS_LIST,
|
||||
tc_url=TC_LIST):
|
||||
r = requests.get(team_url)
|
||||
team_data = yamlutils.loads(r.text)
|
||||
return cls(team_data)
|
||||
r = requests.get(tc_url)
|
||||
tc_data = yamlutils.loads(r.text)
|
||||
return cls(team_data, tc_data)
|
||||
|
||||
def get_repo_owner(self, repo_name):
|
||||
"""Return the name of the team that owns the repository.
|
||||
|
@ -56,14 +56,23 @@ Release Management:
|
||||
- openstack-dev/specs-cookiecutter
|
||||
"""
|
||||
|
||||
_tc_data_yaml = """
|
||||
---
|
||||
# List of repositories owned by the technical committee
|
||||
Technical Committee:
|
||||
- repo: openstack/governance
|
||||
- repo: openstack/project-team-guide
|
||||
"""
|
||||
|
||||
TEAM_DATA = yamlutils.loads(_team_data_yaml)
|
||||
TC_DATA = yamlutils.loads(_tc_data_yaml)
|
||||
|
||||
|
||||
class TestGetRepoOwner(base.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.gov = governance.Governance(TEAM_DATA)
|
||||
self.gov = governance.Governance(TEAM_DATA, TC_DATA)
|
||||
|
||||
def test_repo_exists(self):
|
||||
owner = self.gov.get_repo_owner(
|
||||
@ -71,6 +80,12 @@ class TestGetRepoOwner(base.BaseTestCase):
|
||||
)
|
||||
self.assertEqual('Release Management', owner)
|
||||
|
||||
def test_repo_exists_tc(self):
|
||||
owner = self.gov.get_repo_owner(
|
||||
'openstack/governance',
|
||||
)
|
||||
self.assertEqual('Technical Committee', owner)
|
||||
|
||||
def test_no_such_repo(self):
|
||||
self.assertRaises(
|
||||
ValueError,
|
||||
@ -83,7 +98,7 @@ class TestGetRepositories(base.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.gov = governance.Governance(TEAM_DATA)
|
||||
self.gov = governance.Governance(TEAM_DATA, TC_DATA)
|
||||
|
||||
def test_by_team(self):
|
||||
repos = self.gov.get_repositories(
|
||||
@ -99,6 +114,16 @@ class TestGetRepositories(base.BaseTestCase):
|
||||
sorted(r.name for r in repos),
|
||||
)
|
||||
|
||||
def test_by_team_tc(self):
|
||||
repos = self.gov.get_repositories(
|
||||
team_name='Technical Committee',
|
||||
)
|
||||
self.assertEqual(
|
||||
sorted(['openstack/governance',
|
||||
'openstack/project-team-guide']),
|
||||
sorted(r.name for r in repos),
|
||||
)
|
||||
|
||||
def test_by_deliverable(self):
|
||||
repos = self.gov.get_repositories(
|
||||
deliverable_name='release-tools',
|
||||
|
Loading…
x
Reference in New Issue
Block a user