@@ -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' ),