Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit84bcdc0

Browse files
authored
Merge pull request#759 from kkoralsky/registry_api
registry api implementation
2 parents3dc6413 +2d9078e commit84bcdc0

File tree

4 files changed

+121
-0
lines changed

4 files changed

+121
-0
lines changed

‎docs/api-objects.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ API examples
3434
gl_objects/pagesdomains
3535
gl_objects/projects
3636
gl_objects/runners
37+
gl_objects/repositories
38+
gl_objects/repository_tags
3739
gl_objects/search
3840
gl_objects/settings
3941
gl_objects/snippets

‎docs/gl_objects/repositories.rst

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#####################
2+
Registry Repositories
3+
#####################
4+
5+
References
6+
----------
7+
8+
* v4 API:
9+
10+
+:class:`gitlab.v4.objects.ProjectRegistryRepository`
11+
+:class:`gitlab.v4.objects.ProjectRegistryRepositoryManager`
12+
+:attr:`gitlab.v4.objects.Project.repositories`
13+
14+
* Gitlab API: https://docs.gitlab.com/ce/api/container_registry.html
15+
16+
Examples
17+
--------
18+
19+
Get the list of container registry repositories associated with the project::
20+
21+
repositories = project.repositories.list()
22+
23+
Delete repository::
24+
25+
project.repositories.delete(id=x)
26+
# or
27+
repository = repositories.pop()
28+
repository.delete()

‎docs/gl_objects/repository_tags.rst

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
########################
2+
Registry Repository Tags
3+
########################
4+
5+
References
6+
----------
7+
8+
* v4 API:
9+
10+
+:class:`gitlab.v4.objects.ProjectRegistryTag`
11+
+:class:`gitlab.v4.objects.ProjectRegistryTagManager`
12+
+:attr:`gitlab.v4.objects.Repository.tags`
13+
14+
* Gitlab API: https://docs.gitlab.com/ce/api/container_registry.html
15+
16+
Examples
17+
--------
18+
19+
Get the list of repository tags in given registry::
20+
21+
repositories = project.repositories.list()
22+
repository = repositories.pop()
23+
tags = repository.tags.list()
24+
25+
Get specific tag::
26+
27+
repository.tags.get(id=tag_name)
28+
29+
Delete tag::
30+
31+
repository.tags.delete(id=tag_name)
32+
# or
33+
tag = repository.tags.get(id=tag_name)
34+
tag.delete()
35+
36+
Delete tag in bulk::
37+
38+
repository.tags.delete_in_bulk(keep_n=1)
39+
# or
40+
repository.tags.delete_in_bulk(older_than="1m")
41+
# or
42+
repository.tags.delete_in_bulk(name_regex="v.+", keep_n=2)
43+
44+
..note::
45+
46+
Delete in bulk is asnychronous operation and may take a while.
47+
Refer to: https://docs.gitlab.com/ce/api/container_registry.html#delete-repository-tags-in-bulk

‎gitlab/v4/objects.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,6 +1177,49 @@ class PagesDomainManager(ListMixin, RESTManager):
11771177
_obj_cls=PagesDomain
11781178

11791179

1180+
classProjectRegistryRepository(ObjectDeleteMixin,RESTObject):
1181+
_managers= (
1182+
('tags','ProjectRegistryTagManager'),
1183+
)
1184+
1185+
1186+
classProjectRegistryRepositoryManager(DeleteMixin,ListMixin,RESTManager):
1187+
_path='/projects/%(project_id)s/registry/repositories'
1188+
_obj_cls=ProjectRegistryRepository
1189+
_from_parent_attrs= {'project_id':'id'}
1190+
1191+
1192+
classProjectRegistryTag(ObjectDeleteMixin,RESTObject):
1193+
_id_attr='name'
1194+
1195+
1196+
classProjectRegistryTagManager(DeleteMixin,RetrieveMixin,RESTManager):
1197+
_obj_cls=ProjectRegistryTag
1198+
_from_parent_attrs= {'project_id':'project_id','repository_id':'id'}
1199+
_path='/projects/%(project_id)s/registry/repositories/%(repository_id)s/tags'
1200+
1201+
@cli.register_custom_action('ProjectRegistryTagManager',optional=('name_regex','keep_n','older_than'))
1202+
@exc.on_http_error(exc.GitlabDeleteError)
1203+
defdelete_in_bulk(self,name_regex='.*',**kwargs):
1204+
"""Delete Tag in bulk
1205+
1206+
Args:
1207+
name_regex (string): The regex of the name to delete. To delete all
1208+
tags specify .*.
1209+
keep_n (integer): The amount of latest tags of given name to keep.
1210+
older_than (string): Tags to delete that are older than the given time,
1211+
written in human readable form 1h, 1d, 1month.
1212+
**kwargs: Extra options to send to the server (e.g. sudo)
1213+
Raises:
1214+
GitlabAuthenticationError: If authentication is not correct
1215+
GitlabDeleteError: If the server cannot perform the request
1216+
"""
1217+
valid_attrs= ['keep_n','older_than']
1218+
data= {'name_regex':name_regex}
1219+
data.update({k:vfork,vinkwargs.items()ifkinvalid_attrs})
1220+
self.gitlab.http_delete(self.path,query_data=data,**kwargs)
1221+
1222+
11801223
classProjectBoardList(SaveMixin,ObjectDeleteMixin,RESTObject):
11811224
pass
11821225

@@ -3286,6 +3329,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
32863329
('pipelineschedules','ProjectPipelineScheduleManager'),
32873330
('pushrules','ProjectPushRulesManager'),
32883331
('releases','ProjectReleaseManager'),
3332+
('repositories','ProjectRegistryRepositoryManager'),
32893333
('runners','ProjectRunnerManager'),
32903334
('services','ProjectServiceManager'),
32913335
('snippets','ProjectSnippetManager'),

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp