Move expanded_repos into staging api

and make pkglistgen and repo_checker use it. We will have more
cases in the future of tools requiring it :)
This commit is contained in:
Stephan Kulow 2018-07-19 09:14:30 +02:00
parent 94e2127dd8
commit 4f275a5af8
3 changed files with 16 additions and 22 deletions

View File

@ -1826,3 +1826,16 @@ class StagingAPI(object):
return meta.find(xpath) is not None return meta.find(xpath) is not None
return False return False
# recursively detect underlying projects
def expand_project_repo(self, project, repo, repos):
repos.append([project, repo])
url = self.makeurl(['source', project, '_meta'])
meta = ET.parse(self.retried_GET(url)).getroot()
for path in meta.findall('.//repository[@name="{}"]/path'.format(repo)):
self.expand_project_repo(path.get('project', project), path.get('repository'), repos)
return repos
def expanded_repos(self, repo):
return self.expand_project_repo(self.project, repo, [])

View File

@ -526,16 +526,8 @@ class PkgListGen(ToolBase.ToolBase):
for e in excludes: for e in excludes:
g.ignore(self.groups[e]) g.ignore(self.groups[e])
def expand_project_repo(self, project, repo, repos):
repos.append([project, repo])
url = makeurl(self.apiurl, ['source', project, '_meta'])
meta = ET.parse(http_GET(url)).getroot()
for path in meta.findall('.//repository[@name="{}"]/path'.format(repo)):
self.expand_project_repo(path.get('project', project), path.get('repository'), repos)
return repos
def expand_repos(self, project, repo): def expand_repos(self, project, repo):
return self.expand_project_repo(project, repo, []) return StagingAPI(self.apiurl, project).expanded_repos('standard')
def _check_supplements(self): def _check_supplements(self):
tocheck = set() tocheck = set()

View File

@ -225,17 +225,6 @@ class RepoChecker(ReviewBot.ReviewBot):
self.logger.debug('requests: {} skipped, {} queued'.format( self.logger.debug('requests: {} skipped, {} queued'.format(
count_before - len(self.requests), len(self.requests))) count_before - len(self.requests), len(self.requests)))
def expand_project_repo(self, api, project, repo, repos):
repos.append([project, repo])
url = api.makeurl(['source', project, '_meta'])
meta = ET.parse(api.retried_GET(url)).getroot()
for path in meta.findall('.//repository[@name="{}"]/path'.format(repo)):
self.expand_project_repo(api, path.get('project', project), path.get('repository'), repos)
return repos
def expand_repos(self, api, project, repo):
return self.expand_project_repo(api, project, repo, [])
def ensure_group(self, request, action): def ensure_group(self, request, action):
project = action.tgt_project project = action.tgt_project
group = self.requests_map[int(request.reqid)] group = self.requests_map[int(request.reqid)]
@ -265,12 +254,12 @@ class RepoChecker(ReviewBot.ReviewBot):
continue continue
# Only bother if staging can match arch, but layered first. # Only bother if staging can match arch, but layered first.
repos = self.expand_repos(self.staging_api(project), project, 'standard') repos = self.staging_api(project).expanded_repos('standard')
for layered_project, repo in reversed(repos): for layered_project, repo in reversed(repos):
if repo != 'standard': if repo != 'standard':
raise "We assume all is standard" raise "We assume all is standard"
directories.insert(0, self.mirror(layered_project, arch)) directories.insert(0, self.mirror(layered_project, arch))
whitelist = self.binary_whitelist(project, arch, group) whitelist = self.binary_whitelist(project, arch, group)
# Perform checks on group. # Perform checks on group.