Refactor merge mode name lookup

This is repeated in a few places, centralize it.

Change-Id: I7bbed1f5f9faad31affa71ef17fbfc1740c54db8
This commit is contained in:
James E. Blair 2022-10-26 16:10:01 -07:00
parent 57451d04b9
commit 1245d100ca
4 changed files with 14 additions and 12 deletions

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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: