@@ -1177,6 +1177,46 @@ class PagesDomainManager(ListMixin, RESTManager):
1177
1177
_obj_cls = PagesDomain
1178
1178
1179
1179
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
+
1180
1220
class ProjectBoardList (SaveMixin , ObjectDeleteMixin , RESTObject ):
1181
1221
pass
1182
1222
@@ -3286,6 +3326,7 @@ class Project(SaveMixin, ObjectDeleteMixin, RESTObject):
3286
3326
('pipelineschedules' , 'ProjectPipelineScheduleManager' ),
3287
3327
('pushrules' , 'ProjectPushRulesManager' ),
3288
3328
('releases' , 'ProjectReleaseManager' ),
3329
+ ('repositories' , 'ProjectRegistryRepositoryManager' ),
3289
3330
('runners' , 'ProjectRunnerManager' ),
3290
3331
('services' , 'ProjectServiceManager' ),
3291
3332
('snippets' , 'ProjectSnippetManager' ),
0 commit comments