summaryrefslogtreecommitdiff
path: root/app/workers/check_gcp_project_billing_worker.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/workers/check_gcp_project_billing_worker.rb')
-rw-r--r--app/workers/check_gcp_project_billing_worker.rb43
1 files changed, 22 insertions, 21 deletions
diff --git a/app/workers/check_gcp_project_billing_worker.rb b/app/workers/check_gcp_project_billing_worker.rb
index c3a7929bd14..1a2894f6268 100644
--- a/app/workers/check_gcp_project_billing_worker.rb
+++ b/app/workers/check_gcp_project_billing_worker.rb
@@ -22,8 +22,11 @@ class CheckGcpProjectBillingWorker
end
end
- def self.redis_shared_state_key_for(token)
- "gitlab:gcp:#{Digest::SHA1.hexdigest(token)}:billing_enabled"
+ def self.get_billing_state(token)
+ Gitlab::Redis::SharedState.with do |redis|
+ value = redis.get(redis_shared_state_key_for(token))
+ ActiveRecord::Type::Boolean.new.type_cast_from_user(value)
+ end
end
def perform(token_key)
@@ -33,15 +36,9 @@ class CheckGcpProjectBillingWorker
return unless token
return unless try_obtain_lease_for(token)
- billing_enabled_projects = CheckGcpProjectBillingService.new.execute(token)
-
- update_billing_change_counter(check_previous_state(token), !billing_enabled_projects.empty?)
-
- Gitlab::Redis::SharedState.with do |redis|
- redis.set(self.class.redis_shared_state_key_for(token),
- !billing_enabled_projects.empty?,
- ex: BILLING_TIMEOUT)
- end
+ billing_enabled_state = !CheckGcpProjectBillingService.new.execute(token).empty?
+ update_billing_change_counter(self.class.get_billing_state(token), billing_enabled_state)
+ self.class.set_billing_state(token, billing_enabled_state)
end
private
@@ -54,11 +51,14 @@ class CheckGcpProjectBillingWorker
"gitlab:gcp:session:#{token_key}"
end
- def billing_changed_counter
- @billing_changed_counter ||= Gitlab::Metrics.counter(
- :gcp_billing_change_count,
- "Counts the number of times a GCP project changed billing_enabled state from false to true"
- )
+ def self.redis_shared_state_key_for(token)
+ "gitlab:gcp:#{Digest::SHA1.hexdigest(token)}:billing_enabled"
+ end
+
+ def self.set_billing_state(token, value)
+ Gitlab::Redis::SharedState.with do |redis|
+ redis.set(redis_shared_state_key_for(token), value, ex: BILLING_TIMEOUT)
+ end
end
def try_obtain_lease_for(token)
@@ -67,14 +67,15 @@ class CheckGcpProjectBillingWorker
.try_obtain
end
- def check_previous_state(token)
- Gitlab::Redis::SharedState.with do |redis|
- redis.get(self.class.redis_shared_state_key_for(token))
- end
+ def billing_changed_counter
+ @billing_changed_counter ||= Gitlab::Metrics.counter(
+ :gcp_billing_change_count,
+ "Counts the number of times a GCP project changed billing_enabled state from false to true"
+ )
end
def update_billing_change_counter(previous_state, current_state)
- return unless previous_state == 'false' && current_state
+ return unless !previous_state && current_state
billing_changed_counter.increment
end