diff options
author | Max Wittig <max.wittig95@gmail.com> | 2019-05-10 15:31:59 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-10 15:31:59 +0200 |
commit | 84bcdc0c452d2ada9a47aa9907d7551aeac23821 (patch) | |
tree | 8a8d7fdc43c90e9fe433dcc068d4fefbd965762e /gitlab | |
parent | 3dc64131eaec7d08b059039f446cc8d8c4b58c81 (diff) | |
parent | 2d9078e8e785e3a17429623693f84bbf8526ee58 (diff) | |
download | gitlab-84bcdc0c452d2ada9a47aa9907d7551aeac23821.tar.gz |
Merge pull request #759 from kkoralsky/registry_api
registry api implementation
Diffstat (limited to 'gitlab')
-rw-r--r-- | gitlab/v4/objects.py | 44 |
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'), |