refactor _get_verifymd5 to get_sourceinfo
This commit is contained in:
parent
b542b2f78f
commit
a4bf2657d4
26
ReviewBot.py
26
ReviewBot.py
@ -24,6 +24,7 @@ import os, sys, re
|
||||
import logging
|
||||
from optparse import OptionParser
|
||||
import cmdln
|
||||
from collections import namedtuple
|
||||
|
||||
try:
|
||||
from xml.etree import cElementTree as ET
|
||||
@ -146,8 +147,7 @@ class ReviewBot(object):
|
||||
return overall
|
||||
|
||||
def check_action_maintenance_incident(self, req, a):
|
||||
rev = self._get_verifymd5(a.src_project, a.src_package, a.src_rev)
|
||||
return self.check_source_submission(a.src_project, a.src_package, rev, a.tgt_releaseproject, a.src_package)
|
||||
return self.check_source_submission(a.src_project, a.src_package, a.src_rev, a.tgt_releaseproject, a.src_package)
|
||||
|
||||
def check_action_maintenance_release(self, req, a):
|
||||
pkgname = a.src_package
|
||||
@ -164,32 +164,32 @@ class ReviewBot(object):
|
||||
return False
|
||||
else:
|
||||
pkgname = linkpkg
|
||||
src_rev = self._get_verifymd5(a.src_project, a.src_package)
|
||||
return self.check_source_submission(a.src_project, a.src_package, src_rev, a.tgt_project, pkgname)
|
||||
return self.check_source_submission(a.src_project, a.src_package, None, a.tgt_project, pkgname)
|
||||
|
||||
def check_action_submit(self, req, a):
|
||||
rev = self._get_verifymd5(a.src_project, a.src_package, a.src_rev)
|
||||
return self.check_source_submission(a.src_project, a.src_package, rev, a.tgt_project, a.tgt_package)
|
||||
return self.check_source_submission(a.src_project, a.src_package, a.src_rev, a.tgt_project, a.tgt_package)
|
||||
|
||||
def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package):
|
||||
""" default implemention does nothing """
|
||||
self.logger.info("%s/%s@%s -> %s/%s"%(src_project, src_package, src_rev, target_project, target_package))
|
||||
return None
|
||||
|
||||
# XXX used in other modules
|
||||
def _get_verifymd5(self, src_project, src_package, rev=None):
|
||||
# TODO: cache?
|
||||
def get_sourceinfo(self, project, package, rev=None):
|
||||
query = { 'view': 'info' }
|
||||
if rev:
|
||||
if rev is not None:
|
||||
query['rev'] = rev
|
||||
url = osc.core.makeurl(self.apiurl, ('source', src_project, src_package), query=query)
|
||||
url = osc.core.makeurl(self.apiurl, ('source', project, package), query=query)
|
||||
try:
|
||||
root = ET.parse(osc.core.http_GET(url)).getroot()
|
||||
except urllib2.HTTPError:
|
||||
return None
|
||||
|
||||
if root is not None:
|
||||
srcmd5 = root.get('verifymd5')
|
||||
return srcmd5
|
||||
if root is None:
|
||||
return None
|
||||
|
||||
props = ('package', 'rev', 'vrev', 'srcmd5', 'lsrcmd5', 'verifymd5')
|
||||
return namedtuple('SourceInfo', props)(*[ root.get(p) for p in props ])
|
||||
|
||||
# TODO: what if there is more than _link?
|
||||
def _get_linktarget_self(self, src_project, src_package):
|
||||
|
@ -53,13 +53,14 @@ class FactorySourceChecker(ReviewBot.ReviewBot):
|
||||
|
||||
def check_source_submission(self, src_project, src_package, src_rev, target_project, target_package):
|
||||
self.logger.info("%s/%s@%s -> %s/%s"%(src_project, src_package, src_rev, target_project, target_package))
|
||||
good = self._check_factory(src_rev, target_package)
|
||||
src_srcinfo = self.get_sourceinfo(src_project, src_package, src_rev)
|
||||
good = self._check_factory(src_srcinfo.verifymd5, target_package)
|
||||
|
||||
if good:
|
||||
self.logger.info("%s is in Factory"%target_package)
|
||||
return good
|
||||
|
||||
good = self._check_requests(src_rev, target_package)
|
||||
good = self._check_requests(src_srcinfo.verifymd5, target_package)
|
||||
if good:
|
||||
self.logger.info("%s already reviewed for Factory"%target_package)
|
||||
|
||||
@ -68,11 +69,11 @@ class FactorySourceChecker(ReviewBot.ReviewBot):
|
||||
def _check_factory(self, rev, package):
|
||||
"""check if factory sources contain the package and revision. check head and history"""
|
||||
self.logger.debug("checking %s in %s"%(package, self.factory))
|
||||
srcmd5 = self._get_verifymd5(self.factory, package)
|
||||
if srcmd5 is None:
|
||||
si = self.get_sourceinfo(self.factory, package)
|
||||
if si is None:
|
||||
self.logger.debug("new package")
|
||||
return None
|
||||
elif rev == srcmd5:
|
||||
elif rev == si.verifymd5:
|
||||
self.logger.debug("srcmd5 matches")
|
||||
return True
|
||||
|
||||
@ -102,9 +103,9 @@ class FactorySourceChecker(ReviewBot.ReviewBot):
|
||||
requests = osc.core.get_request_list(self.apiurl, self.factory, package, None, ['new', 'review'], 'submit')
|
||||
for req in requests:
|
||||
for a in req.actions:
|
||||
rqrev = self._get_verifymd5(a.src_project, a.src_package, a.src_rev)
|
||||
self.logger.debug("rq %s: %s/%s@%s"%(req.reqid, a.src_project, a.src_package, rqrev))
|
||||
if rqrev == rev:
|
||||
si = self.get_sourceinfo(a.src_project, a.src_package, a.src_rev)
|
||||
self.logger.debug("rq %s: %s/%s@%s"%(req.reqid, a.src_project, a.src_package, si.verifymd5))
|
||||
if si.verifymd5 == rev:
|
||||
if req.state.name == 'new':
|
||||
self.logger.debug("request ok")
|
||||
return True
|
||||
|
Loading…
x
Reference in New Issue
Block a user