Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2018-01-06 21:02:18 +0300
committerMatija Čupić <matteeyah@gmail.com>2018-01-06 21:41:28 +0300
commita180306da8daff608f7910af0f759a7dba8f15be (patch)
tree7cce1e58c931d71a43fdf6bf1a7560a8090ea05a /app/workers
parent2885dc06602d8bff42421d38502f85965b7e8b34 (diff)
Use token from redis in gcp project billing worker
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/check_gcp_project_billing_worker.rb15
1 files changed, 14 insertions, 1 deletions
diff --git a/app/workers/check_gcp_project_billing_worker.rb b/app/workers/check_gcp_project_billing_worker.rb
index 42aa6b39d86..784d17c4654 100644
--- a/app/workers/check_gcp_project_billing_worker.rb
+++ b/app/workers/check_gcp_project_billing_worker.rb
@@ -1,14 +1,23 @@
+require 'securerandom'
+
class CheckGcpProjectBillingWorker
include ApplicationWorker
include ClusterQueue
LEASE_TIMEOUT = 15.seconds.to_i
+ def self.generate_redis_token_key
+ SecureRandom.uuid
+ end
+
def self.redis_shared_state_key_for(token)
"gitlab:gcp:#{token.hash}:billing_enabled"
end
- def perform(token)
+ def perform(token_key)
+ return unless token_key
+
+ token = get_token(token_key)
return unless token
return unless try_obtain_lease_for(token)
@@ -20,6 +29,10 @@ class CheckGcpProjectBillingWorker
private
+ def get_token(token_key)
+ Gitlab::Redis::SharedState.with { |redis| redis.get(token_key) }
+ end
+
def try_obtain_lease_for(token)
Gitlab::ExclusiveLease
.new("check_gcp_project_billing_worker:#{token.hash}", timeout: LEASE_TIMEOUT)