diff options
-rw-r--r-- | docs/api-objects.rst | 2 | ||||
-rw-r--r-- | docs/gl_objects/environments.py | 31 | ||||
-rw-r--r-- | docs/gl_objects/environments.rst | 41 | ||||
-rw-r--r-- | gitlab/__init__.py | 4 | ||||
-rw-r--r-- | gitlab/objects.py | 14 |
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')]), |