summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvainpocentek@gmail.com>2018-10-03 21:45:49 +0200
committerGitHub <noreply@github.com>2018-10-03 21:45:49 +0200
commit756c73c011b64f94747638f9e5d9afa128aeafe0 (patch)
treef6a213c90a372d29daac33771f8ffc6a82bfde5a
parent21d257782bb1aea9d154e797986ed0f6cdd36fad (diff)
parentea71f1d121b723140671e2090182174234f0e2a1 (diff)
downloadgitlab-756c73c011b64f94747638f9e5d9afa128aeafe0.tar.gz
Merge branch 'master' into docker
-rw-r--r--docs/gl_objects/projects.rst33
-rw-r--r--gitlab/v4/objects.py13
2 files changed, 46 insertions, 0 deletions
diff --git a/docs/gl_objects/projects.rst b/docs/gl_objects/projects.rst
index 8c2fc3f..dd444bf 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::
+
+ project.protectedtags.create({'name': 'v*', 'create_access_level': '40'})
+
+Unprotect the given protected tag or wildcard protected tag.::
+
+ protected_tag.delete()
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 1d771ae..281301e 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'),