From 27dcc9777b15149fa6cf8b32e0eb71a03377396f Mon Sep 17 00:00:00 2001 From: Eric Sabouraud Date: Thu, 6 Sep 2018 18:12:21 +0200 Subject: [PATCH 1/3] Add protected tags management --- gitlab/v4/objects.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index bd7635fd1..626e8b709 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1965,6 +1965,18 @@ class ProjectTagManager(NoUpdateMixin, RESTManager): _create_attrs = (('tag_name', 'ref'), ('message',)) +class ProjectProtectedTag(ObjectDeleteMixin, RESTObject): + _id_attr = 'name' + _short_print_attr = 'name' + + +class ProjectProtectedTagManager(NoUpdateMixin, RESTManager): + _path = '/projects/%(project_id)s/protected_tags' + _obj_cls = ProjectProtectedTag + _from_parent_attrs = {'project_id': 'id'} + _create_attrs = (('name',), ('create_access_level',)) + + class ProjectMergeRequestApproval(SaveMixin, RESTObject): _id_attr = None @@ -3124,6 +3136,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject): ('pagesdomains', 'ProjectPagesDomainManager'), ('pipelines', 'ProjectPipelineManager'), ('protectedbranches', 'ProjectProtectedBranchManager'), + ('protectedtags', 'ProjectProtectedTagManager'), ('pipelineschedules', 'ProjectPipelineScheduleManager'), ('pushrules', 'ProjectPushRulesManager'), ('runners', 'ProjectRunnerManager'), From 5ccf5875ff6c6d77effa1b8727480c85c519e0d6 Mon Sep 17 00:00:00 2001 From: Eric Sabouraud Date: Fri, 7 Sep 2018 10:55:26 +0200 Subject: [PATCH 2/3] Update documentation with protected tags --- docs/gl_objects/projects.rst | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst index 8c2fc3f31..f45656fa9 100644 --- a/docs/gl_objects/projects.rst +++ b/docs/gl_objects/projects.rst @@ -657,3 +657,36 @@ Edit project push rules:: Delete project push rules:: pr.delete() + +Project protected tags +================== + +Reference +--------- + +* v4 API: + + + :class:`gitlab.v4.objects.ProjectProtectedTag` + + :class:`gitlab.v4.objects.ProjectProtectedTagManager` + + :attr:`gitlab.v4.objects.Project.protectedtags` + +* GitLab API: https://docs.gitlab.com/ce/api/protected_tags.html + +Examples +--------- + +Get a list of protected tags from a project:: + + protected_tags = project.protectedtags.list() + +Get a single protected tag or wildcard protected tag:: + + protected_tag = project.protectedtags.get('v*') + +Protect a single repository tag or several project repository tags using a wildcard protected tag:: + + tag = project.protectedtags.create({'name': 'v*', 'create_access_level': '40'}) + +Unprotect the given protected tag or wildcard protected tag.:: + + protected_tag.delete() From 5de32633dd8399998c14147e7ca82d77a02dfeae Mon Sep 17 00:00:00 2001 From: Eric Sabouraud Date: Fri, 7 Sep 2018 14:24:39 +0200 Subject: [PATCH 3/3] Fix example --- docs/gl_objects/projects.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst index f45656fa9..dd444bff1 100644 --- a/docs/gl_objects/projects.rst +++ b/docs/gl_objects/projects.rst @@ -685,7 +685,7 @@ Get a single protected tag or wildcard protected tag:: Protect a single repository tag or several project repository tags using a wildcard protected tag:: - tag = project.protectedtags.create({'name': 'v*', 'create_access_level': '40'}) + project.protectedtags.create({'name': 'v*', 'create_access_level': '40'}) Unprotect the given protected tag or wildcard protected tag.::