81 lines
2.2 KiB
Ruby
81 lines
2.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class AddWebHookCallsToPlanLimitsPaidTiers < Gitlab::Database::Migration[2.0]
|
|
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
|
|
|
MAX_RATE_LIMIT_NAME = 'web_hook_calls'
|
|
MID_RATE_LIMIT_NAME = 'web_hook_calls_mid'
|
|
MIN_RATE_LIMIT_NAME = 'web_hook_calls_low'
|
|
|
|
UP_FREE_LIMITS = {
|
|
MAX_RATE_LIMIT_NAME => 500,
|
|
MID_RATE_LIMIT_NAME => 500,
|
|
MIN_RATE_LIMIT_NAME => 500
|
|
}.freeze
|
|
|
|
UP_PREMIUM_LIMITS = {
|
|
MAX_RATE_LIMIT_NAME => 4_000,
|
|
MID_RATE_LIMIT_NAME => 2_800,
|
|
MIN_RATE_LIMIT_NAME => 1_600
|
|
}.freeze
|
|
|
|
UP_ULTIMATE_LIMITS = {
|
|
MAX_RATE_LIMIT_NAME => 13_000,
|
|
MID_RATE_LIMIT_NAME => 9_000,
|
|
MIN_RATE_LIMIT_NAME => 6_000
|
|
}.freeze
|
|
|
|
DOWN_FREE_LIMITS = {
|
|
# 120 is the value for 'free' migrated in `db/migrate/20210601131742_update_web_hook_calls_limit.rb`
|
|
MAX_RATE_LIMIT_NAME => 120,
|
|
MID_RATE_LIMIT_NAME => 0,
|
|
MIN_RATE_LIMIT_NAME => 0
|
|
}.freeze
|
|
|
|
DOWN_PAID_LIMITS = {
|
|
MAX_RATE_LIMIT_NAME => 0,
|
|
MID_RATE_LIMIT_NAME => 0,
|
|
MIN_RATE_LIMIT_NAME => 0
|
|
}.freeze
|
|
|
|
def up
|
|
return unless Gitlab.com?
|
|
|
|
apply_limits('free', UP_FREE_LIMITS)
|
|
|
|
# Apply Premium limits
|
|
apply_limits('bronze', UP_PREMIUM_LIMITS)
|
|
apply_limits('silver', UP_PREMIUM_LIMITS)
|
|
apply_limits('premium', UP_PREMIUM_LIMITS)
|
|
apply_limits('premium_trial', UP_PREMIUM_LIMITS)
|
|
|
|
# Apply Ultimate limits
|
|
apply_limits('gold', UP_ULTIMATE_LIMITS)
|
|
apply_limits('ultimate', UP_ULTIMATE_LIMITS)
|
|
apply_limits('ultimate_trial', UP_ULTIMATE_LIMITS)
|
|
apply_limits('opensource', UP_ULTIMATE_LIMITS)
|
|
end
|
|
|
|
def down
|
|
return unless Gitlab.com?
|
|
|
|
apply_limits('free', DOWN_FREE_LIMITS)
|
|
|
|
apply_limits('bronze', DOWN_PAID_LIMITS)
|
|
apply_limits('silver', DOWN_PAID_LIMITS)
|
|
apply_limits('premium', DOWN_PAID_LIMITS)
|
|
apply_limits('premium_trial', DOWN_PAID_LIMITS)
|
|
apply_limits('gold', DOWN_PAID_LIMITS)
|
|
apply_limits('ultimate', DOWN_PAID_LIMITS)
|
|
apply_limits('ultimate_trial', DOWN_PAID_LIMITS)
|
|
apply_limits('opensource', DOWN_PAID_LIMITS)
|
|
end
|
|
|
|
private
|
|
|
|
def apply_limits(plan_name, limits)
|
|
limits.each_pair do |limit_name, limit|
|
|
create_or_update_plan_limit(limit_name, plan_name, limit)
|
|
end
|
|
end
|
|
end
|