summaryrefslogtreecommitdiff
path: root/lib/api/admin
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-03-03 15:08:08 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-03-03 15:08:08 +0000
commit946771d0b016ae92b15a60bc3290a33b94191ffe (patch)
tree64862c2433989483f5fce45d5539242577a362eb /lib/api/admin
parentf1e2fca19a90a6992c2020cf8c2159cfb0b61bca (diff)
downloadgitlab-ce-946771d0b016ae92b15a60bc3290a33b94191ffe.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/api/admin')
-rw-r--r--lib/api/admin/sidekiq.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/api/admin/sidekiq.rb b/lib/api/admin/sidekiq.rb
new file mode 100644
index 00000000000..a700bea0fd7
--- /dev/null
+++ b/lib/api/admin/sidekiq.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module API
+ module Admin
+ class Sidekiq < Grape::API
+ before { authenticated_as_admin! }
+
+ namespace 'admin' do
+ namespace 'sidekiq' do
+ namespace 'queues' do
+ desc 'Drop jobs matching the given metadata from the Sidekiq queue'
+ params do
+ Labkit::Context::KNOWN_KEYS.each do |key|
+ optional key, type: String, allow_blank: false
+ end
+
+ at_least_one_of(*Labkit::Context::KNOWN_KEYS)
+ 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