origin-manager: allow for skipping actions with no config when multiple.

Skipping actions that are not relevant for origin review is essential for
the maintenance workflow where multi-actions may include projects not
managed by origin-manager, but the remaining actions should be reviewed.
This commit is contained in:
Jimmy Berry 2019-07-11 16:19:10 -05:00
parent cd6b2b3c33
commit 4e1aed28a1

View File

@ -18,6 +18,10 @@ class OriginManager(ReviewBot.ReviewBot):
self.override_allow = False self.override_allow = False
def check_action_delete_package(self, request, action): def check_action_delete_package(self, request, action):
advance, result = self.config_validate(action.tgt_project)
if not advance:
return result
origin_info_old = origin_find(self.apiurl, action.tgt_project, action.tgt_package) origin_info_old = origin_find(self.apiurl, action.tgt_project, action.tgt_package)
reviews = {'fallback': 'Delete requests require fallback review.'} reviews = {'fallback': 'Delete requests require fallback review.'}
@ -27,8 +31,9 @@ class OriginManager(ReviewBot.ReviewBot):
return True return True
def check_source_submission(self, src_project, src_package, src_rev, tgt_project, tgt_package): def check_source_submission(self, src_project, src_package, src_rev, tgt_project, tgt_package):
if not self.config_validate(tgt_project): advance, result = self.config_validate(tgt_project)
return False if not advance:
return result
source_hash_new = package_source_hash(self.apiurl, src_project, src_package, src_rev) source_hash_new = package_source_hash(self.apiurl, src_project, src_package, src_rev)
origin_info_new = origin_find(self.apiurl, tgt_project, tgt_package, source_hash_new) origin_info_new = origin_find(self.apiurl, tgt_project, tgt_package, source_hash_new)
@ -44,17 +49,22 @@ class OriginManager(ReviewBot.ReviewBot):
def config_validate(self, target_project): def config_validate(self, target_project):
config = config_load(self.apiurl, target_project) config = config_load(self.apiurl, target_project)
if not config: if not config:
if self.multiple_actions:
# Completely ignore actions for projects without a config.
self.review_messages['accepted'] = 'skipping since no config'
return False, True
self.review_messages['declined'] = 'OSRT:OriginConfig attribute missing' self.review_messages['declined'] = 'OSRT:OriginConfig attribute missing'
return False return False, False
if not config.get('fallback-group'): if not config.get('fallback-group'):
self.review_messages['declined'] = 'OSRT:OriginConfig.fallback-group missing' self.review_messages['declined'] = 'OSRT:OriginConfig.fallback-group missing'
return False return False, False
if not self.dryrun and config['review-user'] != self.review_user: if not self.dryrun and config['review-user'] != self.review_user:
self.logger.warning( self.logger.warning(
'OSRT:OriginConfig.review-user ({}) does not match ReviewBot.review_user ({})'.format( 'OSRT:OriginConfig.review-user ({}) does not match ReviewBot.review_user ({})'.format(
config['review-user'], self.review_user)) config['review-user'], self.review_user))
return True return True, True
def policy_result_handle(self, project, package, origin_info_new, origin_info_old, result): def policy_result_handle(self, project, package, origin_info_new, origin_info_old, result):
self.policy_result_reviews_add(project, package, result.reviews, origin_info_new, origin_info_old) self.policy_result_reviews_add(project, package, result.reviews, origin_info_new, origin_info_old)