Add organization quota setting to database
Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.
Summary
Add database columns to store the SecurityProjectTrackedContext quota settings:
- Per-namespace quota override in
namespace_settings - Global default quota in
application_settings
This is a foundational task that all other quota work depends on.
Closed Beta Context
During closed beta, we need:
- Default quota of 2 for all VAC-enabled namespaces
- Ability to set explicit per-namespace quotas to grant more capacity
- Global default adjustable without code changes
Implementation
Migration 1: Add column to namespace_settings
# db/migrate/YYYYMMDDHHMMSS_add_security_tracked_context_quota_to_namespace_settings.rb
class AddSecurityTrackedContextQuotaToNamespaceSettings < Gitlab::Database::Migration[2.2]
milestone '19.1'
def change
add_column :namespace_settings, :security_tracked_context_quota, :integer, null: true
end
endMigration 2: Add column to application_settings
# db/migrate/YYYYMMDDHHMMSS_add_default_security_tracked_context_quota_to_application_settings.rb
class AddDefaultSecurityTrackedContextQuotaToApplicationSettings < Gitlab::Database::Migration[2.2]
milestone '19.1'
def change
# Default of 2 for closed beta - conservative starting point
add_column :application_settings, :default_security_tracked_context_quota, :integer, default: 2
end
endModel changes in ee/app/models/ee/namespace_setting.rb
# Validation
validates :security_tracked_context_quota,
numericality: { only_integer: true, greater_than_or_equal_to: 1, allow_nil: true }
# Add to EE_NAMESPACE_SETTINGS_PARAMS
:security_tracked_context_quota
# New methods
def security_tracked_context_quota_with_default
return security_tracked_context_quota if security_tracked_context_quota.present?
return unless Gitlab::Saas.feature_available?(:gitlab_saas_features)
Gitlab::CurrentSettings.default_security_tracked_context_quota || 2
end
def security_tracked_context_quota_explicitly_set?
security_tracked_context_quota.present?
endAcceptance Criteria
-
namespace_settings.security_tracked_context_quotacolumn exists (integer, nullable) -
application_settings.default_security_tracked_context_quotacolumn exists (integer, default: 2) - Validation ensures quota is >= 1 when set
-
security_tracked_context_quota_with_defaultreturns explicit value if set, else default -
security_tracked_context_quota_explicitly_set?returns true only when explicitly set - Setting quota to
nilreverts to using default - Unit tests for model methods
Dependencies
None - this is the foundation.
Downstream Issues
- #598087 (Quota enforcement service)
- #598088 (Model validation)
- #585971 (Query API)
- #585972 (Update API)
Related
- Parent Epic: &20475
Edited by 🤖 GitLab Bot 🤖