Adopt to the new staging_projects api not revealing all infos
This commit is contained in:
parent
61205d35e3
commit
82c64003c4
@ -97,8 +97,7 @@ class AcceptCommand(object):
|
||||
u = self.api.makeurl(['staging', self.api.project, 'staging_projects', project, 'accept'])
|
||||
f = http_POST(u)
|
||||
|
||||
while True:
|
||||
print(self.api.project_status(project, reload=True).get('state'))
|
||||
while self.api.project_status(project, reload=True, requests=False).get('state') != 'empty':
|
||||
time.sleep(1)
|
||||
|
||||
self.api.staging_deactivate(project)
|
||||
|
@ -48,16 +48,14 @@ class SelectCommand(object):
|
||||
package = self._package(request)
|
||||
|
||||
candidates = [] # Store candidates to be supersede by 'request'
|
||||
for staging in self.api.get_staging_projects():
|
||||
# requests for the same project are fine
|
||||
if staging == self.target_project:
|
||||
continue
|
||||
pstatus = self.api.project_status(staging)
|
||||
for rq in pstatus.findall('selected_requests/entry'):
|
||||
if int(rq.get('id')) < int(request) and rq.get('package') == package:
|
||||
candidates.append((rq.get('id'), package, staging))
|
||||
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
||||
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||
for prj in status.findall('staging_project'):
|
||||
for req in prj.findall('./staged_requests/request'):
|
||||
if int(req.get('id')) < int(request) and req.get('package') == package:
|
||||
candidates.append((req.get('id'), package, prj.get('name')))
|
||||
|
||||
assert len(candidates) <= 1, 'There are more thant one candidate to supersede {} ({}): {}'.format(request, package, candidates)
|
||||
assert len(candidates) <= 1, 'There are more than one candidate to supersede {} ({}): {}'.format(request, package, candidates)
|
||||
|
||||
return candidates[0] if candidates else None
|
||||
|
||||
|
@ -229,12 +229,11 @@ class StagingAPI(object):
|
||||
"""
|
||||
|
||||
packages_staged = {}
|
||||
for prj in self.get_staging_projects():
|
||||
status = self.project_status(prj)
|
||||
if status is None:
|
||||
continue
|
||||
for req in status.findall('staged_requests/request'):
|
||||
packages_staged[req.get('package')] = {'prj': prj, 'rq_id': req.get('id')}
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1 })
|
||||
status = ET.parse(self.retried_GET(url)).getroot()
|
||||
for prj in status.findall('staging_project'):
|
||||
for req in prj.findall('./staged_requests/request'):
|
||||
packages_staged[req.get('package')] = {'prj': prj.get('name'), 'rq_id': req.get('id')}
|
||||
|
||||
return packages_staged
|
||||
|
||||
@ -310,7 +309,8 @@ class StagingAPI(object):
|
||||
"""
|
||||
|
||||
result = []
|
||||
status = self.staging_status()
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects'])
|
||||
status = ET.parse(self.retried_GET(url)).getroot()
|
||||
for project in status.findall('staging_project'):
|
||||
result.append(project.get('name'))
|
||||
return result
|
||||
@ -681,7 +681,8 @@ class StagingAPI(object):
|
||||
:param project: project the package is in
|
||||
:param package: package we want to query for
|
||||
"""
|
||||
data = self.project_status(project)
|
||||
logging.error('get_request_id_for_package')
|
||||
data = self.project_status(project, status=False)
|
||||
for x in data.findall('staged_requests/request'):
|
||||
if x.get('package') == package:
|
||||
return int(x.get('id'))
|
||||
@ -693,7 +694,8 @@ class StagingAPI(object):
|
||||
:param project: project the package is in
|
||||
:param package: package we want to query for
|
||||
"""
|
||||
data = self.project_status(project)
|
||||
logging.error('get_package_for_request_id')
|
||||
data = self.project_status(project, status=False)
|
||||
request_id = str(request_id)
|
||||
for x in data.findall('staged_requests/request'):
|
||||
if x.get('id') == request_id:
|
||||
@ -874,24 +876,19 @@ class StagingAPI(object):
|
||||
|
||||
return log.getvalue()
|
||||
|
||||
@memoize(session=True)
|
||||
def staging_status(self):
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects'])
|
||||
return ET.parse(self.retried_GET(url)).getroot()
|
||||
|
||||
def project_status(self, staging, reload=False):
|
||||
def project_status(self, staging, status=True, requests=True, reload=False):
|
||||
if not staging:
|
||||
raise oscerr.WrongArgs('No staging given')
|
||||
|
||||
if reload:
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects', staging])
|
||||
return ET.parse(self.retried_GET(url)).getroot()
|
||||
|
||||
root = self.staging_status()
|
||||
staging = self.prj_from_short(staging)
|
||||
for project in root.findall('staging_project[@name="{}"]'.format(staging)):
|
||||
return project
|
||||
return None
|
||||
import traceback
|
||||
traceback.print_stack()
|
||||
opts = {}
|
||||
if requests:
|
||||
opts['requests'] = 1
|
||||
if status:
|
||||
opts['status'] = 1
|
||||
url = self.makeurl(['staging', self.project, 'staging_projects', staging], opts)
|
||||
return ET.parse(self.retried_GET(url)).getroot()
|
||||
|
||||
def check_project_status(self, project):
|
||||
"""
|
||||
@ -901,7 +898,7 @@ class StagingAPI(object):
|
||||
informations)
|
||||
|
||||
"""
|
||||
return self.project_status(project).get('state') == 'acceptable'
|
||||
return self.project_status(project, requests=False).get('state') == 'acceptable'
|
||||
|
||||
def project_status_build_percent(self, status):
|
||||
final, tobuild = self.project_status_build_sum(status)
|
||||
|
Loading…
x
Reference in New Issue
Block a user