summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-08-27 23:10:19 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2016-08-27 23:10:19 +0200
commit8d7faf42b3e928ead8eb6eb58b7abf94364b53e2 (patch)
treee34834aea728a625c1d5ca1cb5c3e20d61b756cf
parent40db4cdd24cf31fd6a192b229c132fe28e682eb8 (diff)
downloadgitlab-8d7faf42b3e928ead8eb6eb58b7abf94364b53e2.tar.gz
Add support for project deployments
-rw-r--r--docs/api-objects.rst1
-rw-r--r--docs/gl_objects/deployments.py11
-rw-r--r--docs/gl_objects/deployments.rst23
-rw-r--r--gitlab/__init__.py3
-rw-r--r--gitlab/objects.py12
5 files changed, 50 insertions, 0 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst
index 82171d0..eabefc8 100644
--- a/docs/api-objects.rst
+++ b/docs/api-objects.rst
@@ -10,6 +10,7 @@ API objects manipulation
gl_objects/builds
gl_objects/commits
gl_objects/deploy_keys
+ gl_objects/deployments
gl_objects/environments
gl_objects/groups
gl_objects/issues
diff --git a/docs/gl_objects/deployments.py b/docs/gl_objects/deployments.py
new file mode 100644
index 0000000..fe1613a
--- /dev/null
+++ b/docs/gl_objects/deployments.py
@@ -0,0 +1,11 @@
+# list
+deployments = gl.project_deployments.list(project_id=1)
+# or
+deployments = project.deployments.list()
+# end list
+
+# get
+deployment = gl.project_deployments.get(deployment_id, project_id=1)
+# or
+deployment = project.deployments.get(deployment_id)
+# end get
diff --git a/docs/gl_objects/deployments.rst b/docs/gl_objects/deployments.rst
new file mode 100644
index 0000000..1a679da
--- /dev/null
+++ b/docs/gl_objects/deployments.rst
@@ -0,0 +1,23 @@
+###########
+Deployments
+###########
+
+Use :class:`~gitlab.objects.ProjectDeployment` objects to manipulate project
+deployments. The :attr:`gitlab.Gitlab.project_deployments`, and
+:attr:`Project.deployments <gitlab.objects.Project.deployments>` manager
+objects provide helper functions.
+
+Examples
+--------
+
+List deployments for a project:
+
+.. literalinclude:: deployments.py
+ :start-after: # list
+ :end-before: # end list
+
+Get a single deployment:
+
+.. literalinclude:: deployments.py
+ :start-after: # get
+ :end-before: # end get
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 14e4a5b..61192f4 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -92,6 +92,8 @@ class Gitlab(object):
GitLab projects commits comments
project_commit_statuses (ProjectCommitStatusManager): Manager for
GitLab projects commits statuses
+ project_deployments (ProjectDeploymentManager): Manager for GitLab
+ projects deployments
project_keys (ProjectKeyManager): Manager for GitLab projects keys
project_environments (ProjectEnvironmentManager): Manager for GitLab
projects environments
@@ -178,6 +180,7 @@ class Gitlab(object):
self.project_commits = ProjectCommitManager(self)
self.project_commit_comments = ProjectCommitCommentManager(self)
self.project_commit_statuses = ProjectCommitStatusManager(self)
+ self.project_deployments = ProjectDeploymentManager(self)
self.project_keys = ProjectKeyManager(self)
self.project_environments = ProjectEnvironmentManager(self)
self.project_events = ProjectEventManager(self)
diff --git a/gitlab/objects.py b/gitlab/objects.py
index bf46f87..5a23dbf 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -1862,6 +1862,17 @@ class ProjectAccessRequestManager(BaseManager):
obj_cls = ProjectAccessRequest
+class ProjectDeployment(GitlabObject):
+ _url = '/projects/%(project_id)s/deployments'
+ canCreate = False
+ canUpdate = False
+ canDelete = False
+
+
+class ProjectDeploymentManager(BaseManager):
+ obj_cls = ProjectDeployment
+
+
class Project(GitlabObject):
_url = '/projects'
_constructorTypes = {'owner': 'User', 'namespace': 'Group'}
@@ -1890,6 +1901,7 @@ class Project(GitlabObject):
[('project_id', 'id')]),
('commit_statuses', ProjectCommitStatusManager,
[('project_id', 'id')]),
+ ('deployments', ProjectDeploymentManager, [('project_id', 'id')]),
('environments', ProjectEnvironmentManager, [('project_id', 'id')]),
('events', ProjectEventManager, [('project_id', 'id')]),
('files', ProjectFileManager, [('project_id', 'id')]),