diff options
author | Matija Čupić <matteeyah@gmail.com> | 2018-01-06 19:02:18 +0100 |
---|---|---|
committer | Matija Čupić <matteeyah@gmail.com> | 2018-01-06 19:41:28 +0100 |
commit | a180306da8daff608f7910af0f759a7dba8f15be (patch) | |
tree | 7cce1e58c931d71a43fdf6bf1a7560a8090ea05a /app | |
parent | 2885dc06602d8bff42421d38502f85965b7e8b34 (diff) | |
download | gitlab-ce-a180306da8daff608f7910af0f759a7dba8f15be.tar.gz |
Use token from redis in gcp project billing worker
Diffstat (limited to 'app')
-rw-r--r-- | app/workers/check_gcp_project_billing_worker.rb | 15 |
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) |