2020-04-08 14:13:33 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module API
|
|
|
|
module Admin
|
2021-01-03 14:25:43 +05:30
|
|
|
class Sidekiq < ::API::Base
|
2020-04-08 14:13:33 +05:30
|
|
|
before { authenticated_as_admin! }
|
|
|
|
|
2022-06-21 17:19:12 +05:30
|
|
|
feature_category :not_owned # rubocop:todo Gitlab/AvoidFeatureCategoryNotOwned
|
2021-01-29 00:20:46 +05:30
|
|
|
|
2020-04-08 14:13:33 +05:30
|
|
|
namespace 'admin' do
|
|
|
|
namespace 'sidekiq' do
|
|
|
|
namespace 'queues' do
|
|
|
|
desc 'Drop jobs matching the given metadata from the Sidekiq queue'
|
|
|
|
params do
|
2021-11-11 11:23:49 +05:30
|
|
|
Gitlab::SidekiqQueue::ALLOWED_KEYS.each do |key|
|
2020-04-08 14:13:33 +05:30
|
|
|
optional key, type: String, allow_blank: false
|
|
|
|
end
|
|
|
|
|
2021-11-11 11:23:49 +05:30
|
|
|
at_least_one_of(*Gitlab::SidekiqQueue::ALLOWED_KEYS)
|
2020-04-08 14:13:33 +05:30
|
|
|
end
|
|
|
|
delete ':queue_name' do
|
|
|
|
result =
|
|
|
|
Gitlab::SidekiqQueue
|
|
|
|
.new(params[:queue_name])
|
|
|
|
.drop_jobs!(declared_params, timeout: 30)
|
|
|
|
|
|
|
|
present result
|
|
|
|
rescue Gitlab::SidekiqQueue::NoMetadataError
|
|
|
|
render_api_error!("Invalid metadata: #{declared_params}", 400)
|
|
|
|
rescue Gitlab::SidekiqQueue::InvalidQueueError
|
|
|
|
not_found!(params[:queue_name])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|