Merge pull request #1878 from jberry-suse/origin-manager-override

origin-manager: support ReviewBot override comment using origin workaround.
This commit is contained in:
Jimmy Berry 2019-02-27 16:16:54 -06:00 committed by GitHub
commit 214f8bbc2a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 7 deletions

View File

@ -210,9 +210,9 @@ class ReviewBot(object):
return users
def request_override_check(self, request):
def request_override_check(self, request, force=False):
"""Check for a comment command requesting review override."""
if not self.override_allow:
if not force and not self.override_allow:
return None
comments = self.comment_api.get_comments(request_id=request.reqid)
@ -220,7 +220,7 @@ class ReviewBot(object):
for args, who in self.comment_api.command_find(
comments, self.review_user, 'override', users):
message = 'overridden by {}'.format(who)
override = args[1] or None
override = args[1] if len(args) >= 2 else 'accept'
if override == 'accept':
self.review_messages['accepted'] = message
return True

View File

@ -15,8 +15,6 @@ class OriginManager(ReviewBot.ReviewBot):
# ReviewBot options.
self.request_default_return = True
# No such thing as override, only changing origin which must be approved
# by fallback group. Annotation must be included in review.
self.override_allow = False
def check_source_submission(self, src_project, src_package, src_rev, tgt_project, tgt_package):
@ -55,7 +53,15 @@ class OriginManager(ReviewBot.ReviewBot):
self.policy_result_comment_add(project, package, result.comments)
if not result.wait:
if result.wait:
# Allow overriding a policy wait by accepting as workaround with the
# hope that pending request will be accepted.
override = self.request_override_check(self.request, True)
if override:
self.review_messages['accepted'] = origin_annotation_dump(
origin_info_new, origin_info_old, self.review_messages['accepted'])
return override
else:
if result.accept:
self.review_messages['accepted'] = origin_annotation_dump(origin_info_new, origin_info_old)
return result.accept

View File

@ -291,11 +291,15 @@ def origin_find_fallback(apiurl, target_project, package, source_hash, user):
return None
def origin_annotation_dump(origin_info_new, origin_info_old):
def origin_annotation_dump(origin_info_new, origin_info_old, override=False):
data = {'origin': str(origin_info_new.project)}
if origin_info_old and origin_info_new.project != origin_info_old.project:
data['origin_old'] = str(origin_info_old.project)
if override:
data['origin'] = origin_workaround_ensure(data['origin'])
data['comment'] = override
return yaml.dump(data, default_flow_style=False)
def origin_annotation_load(annotation):