Move change_review_state.

This commit is contained in:
Alberto Planas 2014-06-04 11:49:22 +02:00
parent 690c76d6fb
commit 6ff892fdf2
2 changed files with 20 additions and 44 deletions

View File

@ -139,33 +139,6 @@ def old_md5(apiurl, src_project, tgt_project, src_package, rev):
return md5_set
def _check_repo_change_review_state(self, opts, id_, newstate, message='', supersed=None):
"""Taken from osc/osc/core.py, improved:
- verbose option added,
- empty by_user=& removed.
- numeric id can be int().
"""
query = {
'cmd': 'changereviewstate',
'newstate': newstate,
'by_user': 'factory-repo-checker',
}
if supersed:
query['superseded_by'] = supersed
# if message:
# query['comment'] = message
code = 404
url = makeurl(opts.apiurl, ['request', str(id_)], query=query)
try:
f = http_POST(url, data=message)
root = ET.parse(f).getroot()
code = root.attrib['code']
except urllib2.HTTPError, e:
print('ERROR in URL %s [%s]' % (url, e))
return code
def _check_repo_find_submit_request(self, opts, project, package):
xpath = "(action/target/@project='%s' and "\
"action/target/@package='%s' and "\
@ -213,7 +186,7 @@ def _check_repo_one_request(self, rq, opts):
msg = 'only one action per request is supported - create a group instead: '\
'https://github.com/SUSE/hackweek/wiki/Improved-Factory-devel-project-submission-workflow'
print('DECLINED', msg)
self._check_repo_change_review_state(opts, id_, 'declined', message=msg)
self.checkrepo.change_review_state(id_, 'declined', message=msg)
return []
act = actions[0]
@ -221,7 +194,7 @@ def _check_repo_one_request(self, rq, opts):
if type_ != 'submit':
msg = 'Unchecked request type %s' % type_
print 'ACCEPTED', msg
self._check_repo_change_review_state(opts, id_, 'accepted', message=msg)
self.checkrepo.change_review_state(id_, 'accepted', message=msg)
return []
pkg = act.find('source').get('package')
@ -277,7 +250,7 @@ def _check_repo_one_request(self, rq, opts):
if lprj != prj or lpkg != pkg and not p.updated:
msg = '%s/%s should _link to %s/%s' % (prj, spec, prj, pkg)
print 'DECLINED', msg
self._check_repo_change_review_state(opts, id_, 'declined', message=msg)
self.checkrepo.change_review_state(id_, 'declined', message=msg)
p.updated = True
if lmd5 != p.rev and not p.updated:
@ -286,7 +259,7 @@ def _check_repo_one_request(self, rq, opts):
else:
msg = '%s is no longer the submitted version, please resubmit HEAD' % spec
print '[DECLINED] CHECK MANUALLY', msg
# self._check_repo_change_review_state(opts, id_, 'declined', message=msg)
# self.checkrepo.change_review_state(id_, 'declined', message=msg)
p.updated = True
sp = CheckRepoPackage()
@ -327,7 +300,7 @@ def _check_repo_buildsuccess(self, p, opts):
if not tocheckrepos:
msg = 'Missing i586 and x86_64 in the repo list'
print msg
self._check_repo_change_review_state(opts, p.request, 'new', message=msg)
self.checkrepo.change_review_state(p.request, 'new', message=msg)
# Next line not needed, but for documentation
p.updated = True
return False
@ -361,7 +334,7 @@ def _check_repo_buildsuccess(self, p, opts):
if arch.attrib['result'] == 'outdated':
msg = "%s's sources were changed after submissions and the old sources never built. Please resubmit" % p.spackage
print 'DECLINED', msg
self._check_repo_change_review_state(opts, p.request, 'declined', message=msg)
self.checkrepo.change_review_state(p.request, 'declined', message=msg)
# Next line is not needed, but for documentation
p.updated = True
return False
@ -387,14 +360,14 @@ def _check_repo_buildsuccess(self, p, opts):
if alldisabled:
msg = '%s is disabled or does not build against factory. Please fix and resubmit' % p.spackage
print 'DECLINED', msg
self._check_repo_change_review_state(opts, p.request, 'declined', message=msg)
self.checkrepo.change_review_state(p.request, 'declined', message=msg)
# Next line not needed, but for documentation
p.updated = True
return False
if foundbuilding:
msg = '%s is still building for repository %s' % (p.spackage, foundbuilding)
print msg
self._check_repo_change_review_state(opts, p.request, 'new', message=msg)
self.checkrepo.change_review_state(p.request, 'new', message=msg)
# Next line not needed, but for documentation
p.updated = True
return False
@ -402,7 +375,7 @@ def _check_repo_buildsuccess(self, p, opts):
msg = '%s failed to build in repository %s - not accepting' % (p.spackage, foundfailed)
# failures might be temporary, so don't autoreject but wait for a human to check
print msg
self._check_repo_change_review_state(opts, p.request, 'new', message=msg)
self.checkrepo.change_review_state(p.request, 'new', message=msg)
# Next line not needed, but for documentation
p.updated = True
return False
@ -540,7 +513,7 @@ def _check_repo_group(self, id_, reqs, opts):
if p.error:
if not p.updated:
print p.error
self._check_repo_change_review_state(opts, p.request, 'new', message=p.error)
self.checkrepo.change_review_state(p.request, 'new', message=p.error)
p.updated = True
else:
print p.error
@ -596,7 +569,7 @@ def _check_repo_group(self, id_, reqs, opts):
if len(smissing):
msg = 'Please make sure to wait before these depencencies are in %s: %s' % (p.tproject, ', '.join(smissing))
if not p.updated:
self._check_repo_change_review_state(opts, p.request, 'new', message=msg)
self.checkrepo.change_review_state(p.request, 'new', message=msg)
print msg
p.updated = True
else:
@ -666,7 +639,7 @@ def _check_repo_group(self, id_, reqs, opts):
if updated.get(p.request, False) or p.updated:
continue
print stdoutdata
self._check_repo_change_review_state(opts, p.request, 'new', message=stdoutdata)
self.checkrepo.change_review_state(p.request, 'new', message=stdoutdata)
p.updated = True
updated[p.request] = 1
return
@ -675,7 +648,7 @@ def _check_repo_group(self, id_, reqs, opts):
continue
msg = 'Builds for repo %s' % p.goodrepo
print 'ACCEPTED', msg
self._check_repo_change_review_state(opts, p.request, 'accepted', message=msg)
self.checkrepo.change_review_state(p.request, 'accepted', message=msg)
p.updated = True
updated[p.request] = 1
shutil.rmtree(destdir)
@ -702,12 +675,12 @@ def do_check_repo(self, subcmd, opts, *args):
opts.verbose = False
opts.apiurl = self.get_api_url()
checkrepo = CheckRepo(opts.apiurl)
self.checkrepo = CheckRepo(opts.apiurl)
# XXX TODO - Remove this the all access to opt.group[s|ed] comes
# from checkrepo.
opts.grouped = checkrepo.grouped
opts.groups = checkrepo.groups
opts.grouped = self.checkrepo.grouped
opts.groups = self.checkrepo.groups
if opts.skip:
if not len(args):
@ -716,7 +689,7 @@ def do_check_repo(self, subcmd, opts, *args):
for id_ in args:
msg = 'skip review'
print 'ACCEPTED', msg
self._check_repo_change_review_state(opts, id_, 'accepted', message=msg)
self.checkrepo.change_review_state(id_, 'accepted', message=msg)
return
ids = [arg for arg in args if arg.isdigit()]

View File

@ -59,6 +59,9 @@ class CheckRepo(object):
query = {
'cmd': 'changereviewstate',
'newstate': newstate,
# XXX TODO - We force the user here, check if the user
# expressed in .oscrc (with the password stored) have
# rights to become this user.
'by_user': 'factory-repo-checker',
}