summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/api-objects.rst2
-rw-r--r--docs/gl_objects/environments.py31
-rw-r--r--docs/gl_objects/environments.rst41
-rw-r--r--gitlab/__init__.py4
-rw-r--r--gitlab/objects.py14
5 files changed, 92 insertions, 0 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst
index 5a71947..59d981c 100644
--- a/docs/api-objects.rst
+++ b/docs/api-objects.rst
@@ -3,11 +3,13 @@ API objects manipulation
########################
.. toctree::
+ :maxdepth: 1
gl_objects/branches
gl_objects/builds
gl_objects/commits
gl_objects/deploy_keys
+ gl_objects/environments
gl_objects/groups
gl_objects/issues
gl_objects/namespaces
diff --git a/docs/gl_objects/environments.py b/docs/gl_objects/environments.py
new file mode 100644
index 0000000..80d77c9
--- /dev/null
+++ b/docs/gl_objects/environments.py
@@ -0,0 +1,31 @@
+# list
+environments = gl.project_environments.list(project_id=1)
+# or
+environments = project.environments.list()
+# end list
+
+# get
+environment = gl.project_environments.get(environment_id, project_id=1)
+# or
+environment = project.environments.get(environment_id)
+# end get
+
+# create
+environment = gl.project_environments.create({'name': 'production'},
+ project_id=1)
+# or
+environment = project.environments.create({'name': 'production'})
+# end create
+
+# update
+environment.external_url = 'http://foo.bar.com'
+environment.save()
+# end update
+
+# delete
+environment = gl.project_environments.delete(environment_id, project_id=1)
+# or
+environment = project.environments.list(environment_id)
+# or
+environment.delete()
+# end delete
diff --git a/docs/gl_objects/environments.rst b/docs/gl_objects/environments.rst
new file mode 100644
index 0000000..83d080b
--- /dev/null
+++ b/docs/gl_objects/environments.rst
@@ -0,0 +1,41 @@
+############
+Environments
+############
+
+Use :class:`~gitlab.objects.ProjectEnvironment` objects to manipulate
+environments for projects. The :attr:`gitlab.Gitlab.project_environments` and
+:attr:`Project.environments <gitlab.objects.Project.environments>` manager
+objects provide helper functions.
+
+Examples
+--------
+
+List environments for a project:
+
+.. literalinclude:: environments.py
+ :start-after: # list
+ :end-before: # end list
+
+Get a single environment:
+
+.. literalinclude:: environments.py
+ :start-after: # get
+ :end-before: # end get
+
+Create an environment for a project:
+
+.. literalinclude:: environments.py
+ :start-after: # create
+ :end-before: # end create
+
+Update an environment for a project:
+
+.. literalinclude:: environments.py
+ :start-after: # update
+ :end-before: # end update
+
+Delete an environment for a project:
+
+.. literalinclude:: environments.py
+ :start-after: # delete
+ :end-before: # end delete
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 5baa55d..9c93cd1 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -88,6 +88,8 @@ class Gitlab(object):
project_commit_statuses (ProjectCommitStatusManager): Manager for
GitLab projects commits statuses
project_keys (ProjectKeyManager): Manager for GitLab projects keys
+ project_environments (ProjectEnvironmentManager): Manager for GitLab
+ projects environments
project_events (ProjectEventManager): Manager for GitLab projects
events
project_forks (ProjectForkManager): Manager for GitLab projects forks
@@ -165,6 +167,7 @@ class Gitlab(object):
self.project_commit_comments = ProjectCommitCommentManager(self)
self.project_commit_statuses = ProjectCommitStatusManager(self)
self.project_keys = ProjectKeyManager(self)
+ self.project_environments = ProjectEnvironmentManager(self)
self.project_events = ProjectEventManager(self)
self.project_forks = ProjectForkManager(self)
self.project_hooks = ProjectHookManager(self)
@@ -417,6 +420,7 @@ class Gitlab(object):
", ".join(missing))
url = self._construct_url(id_=None, obj=obj_class, parameters=kwargs)
+ print(url)
headers = self._create_headers()
# Remove attributes that are used in url so that there is only
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 76cc219..04f9e47 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -1075,6 +1075,19 @@ class ProjectCommitManager(BaseManager):
obj_cls = ProjectCommit
+class ProjectEnvironment(GitlabObject):
+ _url = '/projects/%(project_id)s/environments'
+ canGet = 'from_list'
+ requiredUrlAttrs = ['project_id']
+ requiredCreateAttrs = ['name']
+ optionalCreateAttrs = ['external_url']
+ optionalUpdateAttrs = ['name', 'external_url']
+
+
+class ProjectEnvironmentManager(BaseManager):
+ obj_cls = ProjectEnvironment
+
+
class ProjectKey(GitlabObject):
_url = '/projects/%(project_id)s/keys'
canUpdate = False
@@ -1659,6 +1672,7 @@ class Project(GitlabObject):
[('project_id', 'id')]),
('commit_statuses', ProjectCommitStatusManager,
[('project_id', 'id')]),
+ ('environments', ProjectEnvironmentManager, [('project_id', 'id')]),
('events', ProjectEventManager, [('project_id', 'id')]),
('files', ProjectFileManager, [('project_id', 'id')]),
('forks', ProjectForkManager, [('project_id', 'id')]),