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'])
|
u = self.api.makeurl(['staging', self.api.project, 'staging_projects', project, 'accept'])
|
||||||
f = http_POST(u)
|
f = http_POST(u)
|
||||||
|
|
||||||
while True:
|
while self.api.project_status(project, reload=True, requests=False).get('state') != 'empty':
|
||||||
print(self.api.project_status(project, reload=True).get('state'))
|
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
|
|
||||||
self.api.staging_deactivate(project)
|
self.api.staging_deactivate(project)
|
||||||
|
@ -48,16 +48,14 @@ class SelectCommand(object):
|
|||||||
package = self._package(request)
|
package = self._package(request)
|
||||||
|
|
||||||
candidates = [] # Store candidates to be supersede by 'request'
|
candidates = [] # Store candidates to be supersede by 'request'
|
||||||
for staging in self.api.get_staging_projects():
|
url = self.api.makeurl(['staging', self.api.project, 'staging_projects'], { 'requests': 1 })
|
||||||
# requests for the same project are fine
|
status = ET.parse(self.api.retried_GET(url)).getroot()
|
||||||
if staging == self.target_project:
|
for prj in status.findall('staging_project'):
|
||||||
continue
|
for req in prj.findall('./staged_requests/request'):
|
||||||
pstatus = self.api.project_status(staging)
|
if int(req.get('id')) < int(request) and req.get('package') == package:
|
||||||
for rq in pstatus.findall('selected_requests/entry'):
|
candidates.append((req.get('id'), package, prj.get('name')))
|
||||||
if int(rq.get('id')) < int(request) and rq.get('package') == package:
|
|
||||||
candidates.append((rq.get('id'), package, staging))
|
|
||||||
|
|
||||||
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
|
return candidates[0] if candidates else None
|
||||||
|
|
||||||
|
@ -229,12 +229,11 @@ class StagingAPI(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
packages_staged = {}
|
packages_staged = {}
|
||||||
for prj in self.get_staging_projects():
|
url = self.makeurl(['staging', self.project, 'staging_projects'], { 'requests': 1 })
|
||||||
status = self.project_status(prj)
|
status = ET.parse(self.retried_GET(url)).getroot()
|
||||||
if status is None:
|
for prj in status.findall('staging_project'):
|
||||||
continue
|
for req in prj.findall('./staged_requests/request'):
|
||||||
for req in status.findall('staged_requests/request'):
|
packages_staged[req.get('package')] = {'prj': prj.get('name'), 'rq_id': req.get('id')}
|
||||||
packages_staged[req.get('package')] = {'prj': prj, 'rq_id': req.get('id')}
|
|
||||||
|
|
||||||
return packages_staged
|
return packages_staged
|
||||||
|
|
||||||
@ -310,7 +309,8 @@ class StagingAPI(object):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
result = []
|
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'):
|
for project in status.findall('staging_project'):
|
||||||
result.append(project.get('name'))
|
result.append(project.get('name'))
|
||||||
return result
|
return result
|
||||||
@ -681,7 +681,8 @@ class StagingAPI(object):
|
|||||||
:param project: project the package is in
|
:param project: project the package is in
|
||||||
:param package: package we want to query for
|
: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'):
|
for x in data.findall('staged_requests/request'):
|
||||||
if x.get('package') == package:
|
if x.get('package') == package:
|
||||||
return int(x.get('id'))
|
return int(x.get('id'))
|
||||||
@ -693,7 +694,8 @@ class StagingAPI(object):
|
|||||||
:param project: project the package is in
|
:param project: project the package is in
|
||||||
:param package: package we want to query for
|
: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)
|
request_id = str(request_id)
|
||||||
for x in data.findall('staged_requests/request'):
|
for x in data.findall('staged_requests/request'):
|
||||||
if x.get('id') == request_id:
|
if x.get('id') == request_id:
|
||||||
@ -874,25 +876,20 @@ class StagingAPI(object):
|
|||||||
|
|
||||||
return log.getvalue()
|
return log.getvalue()
|
||||||
|
|
||||||
@memoize(session=True)
|
def project_status(self, staging, status=True, requests=True, reload=False):
|
||||||
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):
|
|
||||||
if not staging:
|
if not staging:
|
||||||
raise oscerr.WrongArgs('No staging given')
|
raise oscerr.WrongArgs('No staging given')
|
||||||
|
|
||||||
if reload:
|
import traceback
|
||||||
url = self.makeurl(['staging', self.project, 'staging_projects', staging])
|
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()
|
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
|
|
||||||
|
|
||||||
def check_project_status(self, project):
|
def check_project_status(self, project):
|
||||||
"""
|
"""
|
||||||
Checks a staging project for acceptance.
|
Checks a staging project for acceptance.
|
||||||
@ -901,7 +898,7 @@ class StagingAPI(object):
|
|||||||
informations)
|
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):
|
def project_status_build_percent(self, status):
|
||||||
final, tobuild = self.project_status_build_sum(status)
|
final, tobuild = self.project_status_build_sum(status)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user