@@ -1177,6 +1177,49 @@ 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+
1192+ class ProjectRegistryTag (ObjectDeleteMixin , RESTObject ):
1193+ _id_attr = 'name'
1194+
1195+
1196+ class ProjectRegistryTagManager (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+ def delete_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 : v for k , v in kwargs .items () if k in valid_attrs })
1220+ self .gitlab .http_delete (self .path , query_data = data , ** kwargs )
1221+
1222+
11801223class ProjectBoardList (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