summaryrefslogtreecommitdiff
path: root/gitlab
diff options
context:
space:
mode:
authorMax Wittig <max.wittig95@gmail.com>2019-05-10 15:31:59 +0200
committerGitHub <noreply@github.com>2019-05-10 15:31:59 +0200
commit84bcdc0c452d2ada9a47aa9907d7551aeac23821 (patch)
tree8a8d7fdc43c90e9fe433dcc068d4fefbd965762e /gitlab
parent3dc64131eaec7d08b059039f446cc8d8c4b58c81 (diff)
parent2d9078e8e785e3a17429623693f84bbf8526ee58 (diff)
downloadgitlab-84bcdc0c452d2ada9a47aa9907d7551aeac23821.tar.gz
Merge pull request #759 from kkoralsky/registry_api
registry api implementation
Diffstat (limited to 'gitlab')
-rw-r--r--gitlab/v4/objects.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py
index 57df679..ed559cf 100644
--- a/gitlab/v4/objects.py
+++ b/gitlab/v4/objects.py
@@ -1177,6 +1177,49 @@ class PagesDomainManager(ListMixin, RESTManager):
_obj_cls = PagesDomain
+class ProjectRegistryRepository(ObjectDeleteMixin, RESTObject):
+ _managers = (
+ ('tags', 'ProjectRegistryTagManager'),
+ )
+
+
+class ProjectRegistryRepositoryManager(DeleteMixin, ListMixin, RESTManager):
+ _path = '/projects/%(project_id)s/registry/repositories'
+ _obj_cls = ProjectRegistryRepository
+ _from_parent_attrs = {'project_id': 'id'}
+
+
+class ProjectRegistryTag(ObjectDeleteMixin, RESTObject):
+ _id_attr = 'name'
+
+
+class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager):
+ _obj_cls = ProjectRegistryTag
+ _from_parent_attrs = {'project_id': 'project_id', 'repository_id': 'id'}
+ _path = '/projects/%(project_id)s/registry/repositories/%(repository_id)s/tags'
+
+ @cli.register_custom_action('ProjectRegistryTagManager', optional=('name_regex', 'keep_n', 'older_than'))
+ @exc.on_http_error(exc.GitlabDeleteError)
+ def delete_in_bulk(self, name_regex='.*', **kwargs):
+ """Delete Tag in bulk
+
+ Args:
+ name_regex (string): The regex of the name to delete. To delete all
+ tags specify .*.
+ keep_n (integer): The amount of latest tags of given name to keep.
+ older_than (string): Tags to delete that are older than the given time,
+ written in human readable form 1h, 1d, 1month.
+ **kwargs: Extra options to send to the server (e.g. sudo)
+ Raises:
+ GitlabAuthenticationError: If authentication is not correct
+ GitlabDeleteError: If the server cannot perform the request
+ """
+ valid_attrs = ['keep_n', 'older_than']
+ data = {'name_regex': name_regex}
+ data.update({k: v for k, v in kwargs.items() if k in valid_attrs})
+ self.gitlab.http_delete(self.path, query_data=data, **kwargs)
+
+
class ProjectBoardList(SaveMixin, ObjectDeleteMixin, RESTObject):
pass
@@ -3286,6 +3329,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
('pipelineschedules', 'ProjectPipelineScheduleManager'),
('pushrules', 'ProjectPushRulesManager'),
('releases', 'ProjectReleaseManager'),
+ ('repositories', 'ProjectRegistryRepositoryManager'),
('runners', 'ProjectRunnerManager'),
('services', 'ProjectServiceManager'),
('snippets', 'ProjectSnippetManager'),