summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-03-22 18:32:31 +0100
committerGauvain Pocentek <gauvain@pocentek.net>2016-03-22 18:32:31 +0100
commitf6a51d67c38c883775240d8c612d492bf023c2e4 (patch)
tree8f739be485d3b37a47b62acb026cc7a6e513274d /gitlab
parentccbea3f59a1be418ea5adf90d25dbfb49f72dfde (diff)
downloadgitlab-f6a51d67c38c883775240d8c612d492bf023c2e4.tar.gz
MR: add support for cancel_merge_when_build_succeeds
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/cli.py8
-rw-r--r--gitlab/objects.py12
2 files changed, 20 insertions, 0 deletions
diff --git a/gitlab/cli.py b/gitlab/cli.py
index 91c45a0..efa2d76 100644
--- a/gitlab/cli.py
+++ b/gitlab/cli.py
@@ -42,6 +42,7 @@ EXTRA_ACTIONS = {
'filepath']},
'builds': {'required': ['id', 'project-id']}},
gitlab.ProjectMergeRequest: {
+ 'cancel': {'required': ['id', 'project-id']},
'merge': {'required': ['id', 'project-id'],
'optional': ['merge-commit-message',
'should-remove-source-branch',
@@ -223,6 +224,13 @@ class GitlabCLI(object):
except Exception as e:
_die("Impossible to retry project build (%s)" % str(e))
+ def do_project_merge_request_cancel(self, cls, gl, what, args):
+ try:
+ o = self.do_get(cls, gl, what, args)
+ return o.cancel_merge_when_build_succeeds()
+ except Exception as e:
+ _die("Impossible to cancel merge request (%s)" % str(e))
+
def do_project_merge_request_merge(self, cls, gl, what, args):
try:
o = self.do_get(cls, gl, what, args)
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 56cec38..9ae9c50 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -1085,6 +1085,18 @@ class ProjectMergeRequest(GitlabObject):
self.gitlab, id, project_id=self.project_id,
merge_request_id=self.id, **kwargs)
+ def cancel_merge_when_build_succeeds(self, **kwargs):
+ """Cancel merge when build succeeds."""
+
+ u = ('/projects/%s/merge_requests/%s/cancel_merge_when_build_succeeds'
+ % (self.project_id, self.id))
+ r = self.gitlab._raw_put(u, **kwargs)
+ errors = {401: GitlabMRForbiddenError,
+ 405: GitlabMRClosedError,
+ 406: GitlabMROnBuildSuccessError}
+ raise_error_from_response(r, errors)
+ return ProjectMergeRequest(self, r.json())
+
def merge(self, merge_commit_message=None,
should_remove_source_branch=False,
merged_when_build_succeeds=False,