From 910c2861a3c895cca5aff0a0df1672bb7388c526 Mon Sep 17 00:00:00 2001 From: Karol Ossowski Date: Tue, 23 Apr 2019 11:17:01 +0200 Subject: merged new release & registry apis --- gitlab/v4/objects.py | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'gitlab/v4') diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 57df679..0b98851 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1177,6 +1177,46 @@ 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)d/tags' + + @exc.on_http_error(exc.GitlabDeleteError) + def delete_in_bulk(self, name_regex='.*', **kwargs): + """Delete Tag by name or 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 +3326,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject): ('pipelineschedules', 'ProjectPipelineScheduleManager'), ('pushrules', 'ProjectPushRulesManager'), ('releases', 'ProjectReleaseManager'), + ('repositories', 'ProjectRegistryRepositoryManager'), ('runners', 'ProjectRunnerManager'), ('services', 'ProjectServiceManager'), ('snippets', 'ProjectSnippetManager'), -- cgit v1.2.1 From 340cd370000bbb48b81a5b7c1a7bf9f33997cef9 Mon Sep 17 00:00:00 2001 From: Karol Ossowski Date: Tue, 23 Apr 2019 11:27:31 +0200 Subject: fix repository_id marshaling in cli --- gitlab/v4/objects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gitlab/v4') diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 0b98851..f494cc1 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1194,7 +1194,7 @@ class ProjectRegistryTag(ObjectDeleteMixin, RESTObject): 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)d/tags' + _path = '/projects/%(project_id)s/registry/repositories/%(repository_id)s/tags' @exc.on_http_error(exc.GitlabDeleteError) def delete_in_bulk(self, name_regex='.*', **kwargs): -- cgit v1.2.1 From 0b79ce9c32cbc0bf49d877e123e49e2eb199b8af Mon Sep 17 00:00:00 2001 From: Karol Ossowski Date: Wed, 24 Apr 2019 11:44:21 +0200 Subject: register cli action for delete_in_bulk --- gitlab/v4/objects.py | 1 + 1 file changed, 1 insertion(+) (limited to 'gitlab/v4') diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index f494cc1..18b6203 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1196,6 +1196,7 @@ class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager): _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 by name or in bulk -- cgit v1.2.1 From 3cede7bed7caca026ec1bce8991eaac2e43c643a Mon Sep 17 00:00:00 2001 From: Karol Ossowski Date: Wed, 24 Apr 2019 11:45:52 +0200 Subject: fix docstring & improve coding style --- gitlab/v4/objects.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'gitlab/v4') diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 18b6203..800b4b5 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1199,7 +1199,7 @@ class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager): @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 by name or in bulk + """Delete Tag in bulk Args: name_regex (string): The regex of the name to delete. To delete all @@ -1213,8 +1213,8 @@ class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager): 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}) + 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) -- cgit v1.2.1 From c91230e4863932ef8b8781835a37077301fd7440 Mon Sep 17 00:00:00 2001 From: Karol Ossowski Date: Thu, 2 May 2019 14:08:32 +0200 Subject: whitespaces --- gitlab/v4/objects.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gitlab/v4') diff --git a/gitlab/v4/objects.py b/gitlab/v4/objects.py index 800b4b5..ed559cf 100644 --- a/gitlab/v4/objects.py +++ b/gitlab/v4/objects.py @@ -1184,13 +1184,15 @@ class ProjectRegistryRepository(ObjectDeleteMixin, RESTObject): class ProjectRegistryRepositoryManager(DeleteMixin, ListMixin, RESTManager): - _path= '/projects/%(project_id)s/registry/repositories' + _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'} -- cgit v1.2.1