@@ -1177,6 +1177,46 @@ class PagesDomainManager(ListMixin, RESTManager):
11771177 _obj_cls = PagesDomain
11781178
11791179
1180+ class ProjectRegistryRepository (ObjectDeleteMixin , RESTObject ):
1181+ _managers = (
1182+ ('tags' , 'ProjectRegistryTagManager' ),
1183+ )
1184+
1185+
1186+ class ProjectRegistryRepositoryManager (DeleteMixin , ListMixin , RESTManager ):
1187+ _path = '/projects/%(project_id)s/registry/repositories'
1188+ _obj_cls = ProjectRegistryRepository
1189+ _from_parent_attrs = {'project_id' : 'id' }
1190+
1191+ class ProjectRegistryTag (ObjectDeleteMixin , RESTObject ):
1192+ _id_attr = 'name'
1193+
1194+ class ProjectRegistryTagManager (DeleteMixin , RetrieveMixin , RESTManager ):
1195+ _obj_cls = ProjectRegistryTag
1196+ _from_parent_attrs = {'project_id' : 'project_id' , 'repository_id' : 'id' }
1197+ _path = '/projects/%(project_id)s/registry/repositories/%(repository_id)d/tags'
1198+
1199+ @exc .on_http_error (exc .GitlabDeleteError )
1200+ def delete_in_bulk (self , name_regex = '.*' , ** kwargs ):
1201+ """Delete Tag by name or in bulk
1202+
1203+ Args:
1204+ name_regex (string): The regex of the name to delete. To delete all
1205+ tags specify .*.
1206+ keep_n (integer): The amount of latest tags of given name to keep.
1207+ older_than (string): Tags to delete that are older than the given time,
1208+ written in human readable form 1h, 1d, 1month.
1209+ **kwargs: Extra options to send to the server (e.g. sudo)
1210+ Raises:
1211+ GitlabAuthenticationError: If authentication is not correct
1212+ GitlabDeleteError: If the server cannot perform the request
1213+ """
1214+ valid_attrs = ['keep_n' , 'older_than' ]
1215+ data = {'name_regex' :name_regex }
1216+ data .update ({k : v for k ,v in kwargs .items () if k in valid_attrs })
1217+ self .gitlab .http_delete (self .path , query_data = data , ** kwargs )
1218+
1219+
11801220class ProjectBoardList (SaveMixin , ObjectDeleteMixin , RESTObject ):
11811221 pass
11821222
@@ -3286,6 +3326,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
32863326 ('pipelineschedules' , 'ProjectPipelineScheduleManager' ),
32873327 ('pushrules' , 'ProjectPushRulesManager' ),
32883328 ('releases' , 'ProjectReleaseManager' ),
3329+ ('repositories' , 'ProjectRegistryRepositoryManager' ),
32893330 ('runners' , 'ProjectRunnerManager' ),
32903331 ('services' , 'ProjectServiceManager' ),
32913332 ('snippets' , 'ProjectSnippetManager' ),
0 commit comments