diff --git a/zuul/driver/github/githubreporter.py b/zuul/driver/github/githubreporter.py index e5c5ebfbdd..1f44303bdb 100644 --- a/zuul/driver/github/githubreporter.py +++ b/zuul/driver/github/githubreporter.py @@ -189,8 +189,7 @@ class GithubReporter(BaseReporter): merge_mode = item.current_build_set.getMergeMode() if merge_mode not in self.merge_modes: - mode = [x[0] for x in model.MERGER_MAP.items() - if x[1] == merge_mode][0] + mode = model.get_merge_mode_name(merge_mode) self.log.warning('Merge mode %s not supported by Github', mode) raise MergeFailure('Merge mode %s not supported by Github' % mode) diff --git a/zuul/driver/gitlab/gitlabreporter.py b/zuul/driver/gitlab/gitlabreporter.py index 819c89c475..b909bc3d70 100644 --- a/zuul/driver/gitlab/gitlabreporter.py +++ b/zuul/driver/gitlab/gitlabreporter.py @@ -16,9 +16,8 @@ import time import logging import voluptuous as v +from zuul import model from zuul.reporter import BaseReporter -from zuul.model import MERGER_MERGE_RESOLVE, MERGER_MERGE, MERGER_MAP, \ - MERGER_SQUASH_MERGE from zuul.lib.logutil import get_annotated_logger from zuul.driver.gitlab.gitlabsource import GitlabSource from zuul.driver.util import scalar_or_list @@ -33,9 +32,9 @@ class GitlabReporter(BaseReporter): # Merge modes supported by gitlab merge_modes = { - MERGER_MERGE: 'merge', - MERGER_MERGE_RESOLVE: 'merge', - MERGER_SQUASH_MERGE: 'squash' + model.MERGER_MERGE: 'merge', + model.MERGER_MERGE_RESOLVE: 'merge', + model.MERGER_SQUASH_MERGE: 'squash' } def __init__(self, driver, connection, pipeline, config=None): @@ -110,7 +109,7 @@ class GitlabReporter(BaseReporter): merge_mode = item.current_build_set.getMergeMode() if merge_mode not in self.merge_modes: - mode = [x[0] for x in MERGER_MAP.items() if x[1] == merge_mode][0] + mode = model.get_merge_mode_name(merge_mode) self.log.warning('Merge mode %s not supported by Gitlab', mode) raise MergeFailure('Merge mode %s not supported by Gitlab' % mode) diff --git a/zuul/model.py b/zuul/model.py index 97db54dea0..4625abe224 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -123,6 +123,13 @@ def add_debug_line(debug_messages, msg, indent=0): debug_messages.append(indent + msg) +def get_merge_mode_name(merge_mode): + "Look up the merge mode name given the constant" + for k, v in MERGER_MAP.items(): + if v == merge_mode: + return k + + class ZuulMark: # The yaml mark class differs between the C and python versions. # The C version does not provide a snippet, and also appears to diff --git a/zuul/web/__init__.py b/zuul/web/__init__.py index 487c115c12..de8e91c2c7 100755 --- a/zuul/web/__init__.py +++ b/zuul/web/__init__.py @@ -1241,10 +1241,7 @@ class ZuulWebAPI(object): result = project.toDict() result['configs'] = [] md = tenant.layout.getProjectMetadata(project.canonical_name).toDict() - for k, v in model.MERGER_MAP.items(): - if v == md['merge_mode']: - md['merge_mode'] = k - break + md['merge_mode'] = model.get_merge_mode_name(md['merge_mode']) result['metadata'] = md configs = tenant.layout.getAllProjectConfigs(project.canonical_name) for config_obj in configs: