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:
Diffstat (limited to 'app/models/plan_limits.rb')
-rw-r--r--app/models/plan_limits.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/app/models/plan_limits.rb b/app/models/plan_limits.rb
index bf69f425189..6795e7a3049 100644
--- a/app/models/plan_limits.rb
+++ b/app/models/plan_limits.rb
@@ -4,11 +4,18 @@ class PlanLimits < ApplicationRecord
include IgnorableColumns
ignore_column :ci_max_artifact_size_running_container_scanning, remove_with: '14.3', remove_after: '2021-08-22'
ignore_column :web_hook_calls_high, remove_with: '15.10', remove_after: '2022-02-22'
+ ignore_column :ci_active_pipelines, remove_with: '16.3', remove_after: '2022-07-22'
+
+ attribute :limits_history, :ind_jsonb, default: -> { {} }
+ validates :limits_history, json_schema: { filename: 'plan_limits_history' }
LimitUndefinedError = Class.new(StandardError)
belongs_to :plan
+ validates :notification_limit, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
+ validates :enforcement_limit, numericality: { only_integer: true, greater_than_or_equal_to: 0 }
+
def exceeded?(limit_name, subject, alternate_limit: 0)
limit = limit_for(limit_name, alternate_limit: alternate_limit)
return false unless limit
@@ -37,4 +44,39 @@ class PlanLimits < ApplicationRecord
limits = [limit, alternate_limit]
limits.map(&:to_i).select(&:positive?).min
end
+
+ # Overridden in EE
+ def dashboard_storage_limit_enabled?
+ false
+ end
+
+ def log_limits_changes(user, new_limits)
+ new_limits.each do |attribute, value|
+ limits_history[attribute] ||= []
+ limits_history[attribute] << {
+ user_id: user&.id,
+ username: user&.username,
+ timestamp: Time.current.utc.to_i,
+ value: value
+ }
+ end
+
+ update(limits_history: limits_history)
+ end
+
+ def limit_attribute_changes(attribute)
+ limit_history = limits_history[attribute]
+ return [] unless limit_history
+
+ limit_history.map do |entry|
+ {
+ timestamp: entry[:timestamp],
+ value: entry[:value],
+ username: entry[:username],
+ user_id: entry[:user_id]
+ }
+ end
+ end
end
+
+PlanLimits.prepend_mod_with('PlanLimits')