summaryrefslogtreecommitdiff
path: root/gitlab/objects.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-30 19:04:30 +0100
committerGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-30 19:04:30 +0100
commitebf36b81f122b0242dec8750f5d80ec58e5e4bbe (patch)
tree6ccd182fe2dce9229609079d3ce21e2d5e1f0bd2 /gitlab/objects.py
parentfc8affd11c90d795a118f3def977a8dd37372ce0 (diff)
downloadgitlab-ebf36b81f122b0242dec8750f5d80ec58e5e4bbe.tar.gz
add support for project builds
Diffstat (limited to 'gitlab/objects.py')
-rw-r--r--gitlab/objects.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index d41b70e..b1d0f39 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -691,6 +691,30 @@ class ProjectBranchManager(BaseManager):
obj_cls = ProjectBranch
+class ProjectBuild(GitlabObject):
+ _url = '/projects/%(project_id)s/builds'
+ _constructorTypes = {'user': 'User',
+ 'commit': 'ProjectCommit'}
+ requiredUrlAttrs = ['project_id']
+ canDelete = False
+ canUpdate = False
+ canCreate = False
+
+ def cancel(self):
+ url = '/projects/%s/builds/%s/cancel' % (self.project_id, self.id)
+ r = self.gitlab._raw_post(url)
+ raise_error_from_response(r, GitlabBuildCancelError, 201)
+
+ def retry(self):
+ url = '/projects/%s/builds/%s/retry' % (self.project_id, self.id)
+ r = self.gitlab._raw_post(url)
+ raise_error_from_response(r, GitlabBuildRetryError, 201)
+
+
+class ProjectBuildManager(BaseManager):
+ obj_cls = ProjectBuild
+
+
class ProjectCommit(GitlabObject):
_url = '/projects/%(project_id)s/repository/commits'
canDelete = False
@@ -716,6 +740,20 @@ class ProjectCommit(GitlabObject):
return r.content
+ def builds(self, **kwargs):
+ url = '/projects/%s/repository/commits/%s/builds' % (self.project_id,
+ self.id)
+ r = self.gitlab._raw_get(url, **kwargs)
+ raise_error_from_response(r, GitlabListError)
+
+ l = []
+ for j in r.json():
+ o = ProjectBuild(self, j)
+ o._from_api = True
+ l.append(o)
+
+ return l
+
class ProjectCommitManager(BaseManager):
obj_cls = ProjectCommit
@@ -1088,6 +1126,7 @@ class Project(GitlabObject):
shortPrintAttr = 'path'
managers = [
('branches', ProjectBranchManager, [('project_id', 'id')]),
+ ('builds', ProjectBuildManager, [('project_id', 'id')]),
('commits', ProjectCommitManager, [('project_id', 'id')]),
('commitstatuses', ProjectCommitStatusManager, [('project_id', 'id')]),
('events', ProjectEventManager, [('project_id', 'id')]),