summaryrefslogtreecommitdiff
path: root/zuul/driver/gerrit
diff options
context:
space:
mode:
authorJames E. Blair <jim@acmegating.com>2021-01-05 15:01:16 -0800
committerJames E. Blair <jim@acmegating.com>2021-01-05 15:01:16 -0800
commit35e8736f1189227f68dadda0383176ccf9679f61 (patch)
tree6b9eae844fa114771f6f7b051cb56f959fb8e397 /zuul/driver/gerrit
parentf09336828085e0a2a70aa14383e9dd9c76963b1b (diff)
downloadzuul-35e8736f1189227f68dadda0383176ccf9679f61.tar.gz
Handle WIP Gerrit status
Newer versions of Gerrit have a built-in work-in-progress flag which, when set, makes the change unsubmittable. Update the canMerge method in the Gerrit driver to recognize the new flag. Change-Id: Ia8e5e50086933215c45e92b419a04c1117880a34
Diffstat (limited to 'zuul/driver/gerrit')
-rw-r--r--zuul/driver/gerrit/gerritconnection.py2
-rw-r--r--zuul/driver/gerrit/gerritmodel.py3
2 files changed, 5 insertions, 0 deletions
diff --git a/zuul/driver/gerrit/gerritconnection.py b/zuul/driver/gerrit/gerritconnection.py
index f5db9b37e..42531eadd 100644
--- a/zuul/driver/gerrit/gerritconnection.py
+++ b/zuul/driver/gerrit/gerritconnection.py
@@ -966,6 +966,8 @@ class GerritConnection(BaseConnection):
# Good question. It's probably ref-updated, which, ah,
# means it's merged.
return True
+ if change.wip:
+ return False
if change.missing_labels <= set(allow_needs):
return True
return False
diff --git a/zuul/driver/gerrit/gerritmodel.py b/zuul/driver/gerrit/gerritmodel.py
index b1ad85898..84d20d83b 100644
--- a/zuul/driver/gerrit/gerritmodel.py
+++ b/zuul/driver/gerrit/gerritmodel.py
@@ -32,6 +32,7 @@ class GerritChange(Change):
def __init__(self, project):
super(GerritChange, self).__init__(project)
self.status = None
+ self.wip = None
self.approvals = []
def update(self, data, connection):
@@ -79,6 +80,7 @@ class GerritChange(Change):
self.approvals = data['currentPatchSet'].get('approvals', [])
self.open = data['open']
self.status = data['status']
+ self.wip = data.get('wip', False)
self.owner = data['owner'].get('username')
self.message = data['commitMessage']
@@ -149,6 +151,7 @@ class GerritChange(Change):
self.missing_labels.add(label_name)
self.open = data['status'] == 'NEW'
self.status = data['status']
+ self.wip = data.get('work_in_progress', False)
self.owner = data['owner'].get('username')
self.message = current_revision['commit']['message']