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:
parent
cd6b2b3c33
commit
4e1aed28a1
@ -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)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user