debian-mirror-gitlab/app/services/projects/container_repository/delete_tags_service.rb

54 lines
1.5 KiB
Ruby
Raw Normal View History

2019-12-21 20:55:43 +05:30
# frozen_string_literal: true
module Projects
module ContainerRepository
class DeleteTagsService < BaseService
2020-07-28 23:09:34 +05:30
LOG_DATA_BASE = { service_class: self.to_s }.freeze
2019-12-21 20:55:43 +05:30
def execute(container_repository)
2020-10-24 23:57:45 +05:30
@container_repository = container_repository
2020-11-24 15:15:51 +05:30
unless params[:container_expiration_policy]
return error('access denied') unless can?(current_user, :destroy_container_image, project)
end
2019-12-21 20:55:43 +05:30
2020-10-24 23:57:45 +05:30
@tag_names = params[:tags]
return error('not tags specified') if @tag_names.blank?
2019-12-21 20:55:43 +05:30
2020-10-24 23:57:45 +05:30
delete_tags
2019-12-21 20:55:43 +05:30
end
private
2020-10-24 23:57:45 +05:30
def delete_tags
delete_service.execute
.tap(&method(:log_response))
2020-03-13 15:44:24 +05:30
end
2020-10-24 23:57:45 +05:30
def delete_service
2021-01-03 14:25:43 +05:30
if @container_repository.client.supports_tag_delete?
2020-10-24 23:57:45 +05:30
::Projects::ContainerRepository::Gitlab::DeleteTagsService.new(@container_repository, @tag_names)
2020-01-01 13:55:28 +05:30
else
2020-10-24 23:57:45 +05:30
::Projects::ContainerRepository::ThirdParty::DeleteTagsService.new(@container_repository, @tag_names)
2020-01-01 13:55:28 +05:30
end
end
2020-10-24 23:57:45 +05:30
def log_response(response)
2020-07-28 23:09:34 +05:30
log_data = LOG_DATA_BASE.merge(
2020-10-24 23:57:45 +05:30
container_repository_id: @container_repository.id,
2021-02-22 17:27:13 +05:30
project_id: @container_repository.project_id,
2021-01-29 00:20:46 +05:30
message: 'deleted tags',
deleted_tags_count: response[:deleted]&.size
).compact
2020-07-28 23:09:34 +05:30
if response[:status] == :success
log_info(log_data)
2020-03-13 15:44:24 +05:30
else
2020-07-28 23:09:34 +05:30
log_data[:message] = response[:message]
log_error(log_data)
2020-03-13 15:44:24 +05:30
end
end
2019-12-21 20:55:43 +05:30
end
end
end