diff options
Diffstat (limited to 'app/controllers/projects/registry/tags_controller.rb')
-rw-r--r-- | app/controllers/projects/registry/tags_controller.rb | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/app/controllers/projects/registry/tags_controller.rb b/app/controllers/projects/registry/tags_controller.rb index b5ee0ba9beb..54e2faa2dd7 100644 --- a/app/controllers/projects/registry/tags_controller.rb +++ b/app/controllers/projects/registry/tags_controller.rb @@ -19,12 +19,14 @@ module Projects end def destroy - result = Projects::ContainerRepository::DeleteTagsService - .new(image.project, current_user, tags: [params[:id]]) - .execute(image) - - respond_to do |format| - format.json { head(result[:status] == :success ? :ok : bad_request) } + if tag.delete + respond_to do |format| + format.json { head :no_content } + end + else + respond_to do |format| + format.json { head :bad_request } + end end end @@ -40,12 +42,21 @@ module Projects return end - result = Projects::ContainerRepository::DeleteTagsService - .new(image.project, current_user, tags: tag_names) - .execute(image) + @tags = tag_names.map { |tag_name| image.tag(tag_name) } + unless @tags.all? { |tag| tag.valid_name? } + head :bad_request + return + end + + success_count = 0 + @tags.each do |tag| + if tag.delete + success_count += 1 + end + end respond_to do |format| - format.json { head(result[:status] == :success ? :no_content : :bad_request) } + format.json { head(success_count == @tags.size ? :no_content : :bad_request) } end end @@ -59,6 +70,10 @@ module Projects @image ||= project.container_repositories .find(params[:repository_id]) end + + def tag + @tag ||= image.tag(params[:id]) + end end end end |