summaryrefslogtreecommitdiff
path: root/app/workers
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/all_queues.yml1
-rw-r--r--app/workers/concerns/self_monitoring_project_worker.rb36
-rw-r--r--app/workers/self_monitoring_project_create_worker.rb29
-rw-r--r--app/workers/self_monitoring_project_delete_worker.rb13
4 files changed, 51 insertions, 28 deletions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml
index ca050887e0f..6afc326ed37 100644
--- a/app/workers/all_queues.yml
+++ b/app/workers/all_queues.yml
@@ -188,3 +188,4 @@
- create_evidence
- group_export
- self_monitoring_project_create
+- self_monitoring_project_delete
diff --git a/app/workers/concerns/self_monitoring_project_worker.rb b/app/workers/concerns/self_monitoring_project_worker.rb
new file mode 100644
index 00000000000..44dd6866fad
--- /dev/null
+++ b/app/workers/concerns/self_monitoring_project_worker.rb
@@ -0,0 +1,36 @@
+# frozen_string_literal: true
+
+module SelfMonitoringProjectWorker
+ extend ActiveSupport::Concern
+
+ included do
+ # This worker falls under Self-monitoring with Monitor::APM group. However,
+ # self-monitoring is not classified as a feature category but rather as
+ # Other Functionality. Metrics seems to be the closest feature_category for
+ # this worker.
+ feature_category :metrics
+ end
+
+ LEASE_TIMEOUT = 15.minutes.to_i
+ EXCLUSIVE_LEASE_KEY = 'self_monitoring_service_creation_deletion'
+
+ class_methods do
+ # @param job_id [String]
+ # Job ID that is used to construct the cache keys.
+ # @return [Hash]
+ # Returns true if the job is enqueued or in progress and false otherwise.
+ def in_progress?(job_id)
+ Gitlab::SidekiqStatus.job_status(Array.wrap(job_id)).first
+ end
+ end
+
+ private
+
+ def lease_key
+ EXCLUSIVE_LEASE_KEY
+ end
+
+ def lease_timeout
+ self.class::LEASE_TIMEOUT
+ end
+end
diff --git a/app/workers/self_monitoring_project_create_worker.rb b/app/workers/self_monitoring_project_create_worker.rb
index 69bc5431ff7..429ac8aacc4 100644
--- a/app/workers/self_monitoring_project_create_worker.rb
+++ b/app/workers/self_monitoring_project_create_worker.rb
@@ -3,38 +3,11 @@
class SelfMonitoringProjectCreateWorker
include ApplicationWorker
include ExclusiveLeaseGuard
-
- # This worker falls under Self-monitoring with Monitor::APM group. However,
- # self-monitoring is not classified as a feature category but rather as
- # Other Functionality. Metrics seems to be the closest feature_category for
- # this worker.
- feature_category :metrics
-
- LEASE_TIMEOUT = 15.minutes.to_i
-
- EXCLUSIVE_LEASE_KEY = 'self_monitoring_service_creation_deletion'
+ include SelfMonitoringProjectWorker
def perform
try_obtain_lease do
Gitlab::DatabaseImporters::SelfMonitoring::Project::CreateService.new.execute
end
end
-
- # @param job_id [String]
- # Job ID that is used to construct the cache keys.
- # @return [Hash]
- # Returns true if the job is enqueued or in progress and false otherwise.
- def self.in_progress?(job_id)
- Gitlab::SidekiqStatus.job_status(Array.wrap(job_id)).first
- end
-
- private
-
- def lease_key
- EXCLUSIVE_LEASE_KEY
- end
-
- def lease_timeout
- LEASE_TIMEOUT
- end
end
diff --git a/app/workers/self_monitoring_project_delete_worker.rb b/app/workers/self_monitoring_project_delete_worker.rb
new file mode 100644
index 00000000000..07a7d3f6c45
--- /dev/null
+++ b/app/workers/self_monitoring_project_delete_worker.rb
@@ -0,0 +1,13 @@
+# frozen_string_literal: true
+
+class SelfMonitoringProjectDeleteWorker
+ include ApplicationWorker
+ include ExclusiveLeaseGuard
+ include SelfMonitoringProjectWorker
+
+ def perform
+ try_obtain_lease do
+ Gitlab::DatabaseImporters::SelfMonitoring::Project::DeleteService.new.execute
+ end
+ end
+end