Skip to content

Limit invitations to trial groups and projects

Abdul Wadood requested to merge 396426-limit-invitations-ultimate-trial into master

What does this MR do and why?

Limits the number of invites to top-level namespaces having a premium trial or ultimate trial license to 50 per day.

To understand the reasoning, go through the related issue https://gitlab.com/gitlab-org/gitlab/-/issues/396426 and read more about it here https://gitlab.com/gitlab-org/tenant-scale-group/group-tasks/-/issues/78#note_1315719328.

The code to limit the member invitations is already present. Only a migration is needed.

Migration output

SaaS

up
GITLAB_SIMULATE_SAAS=true bin/rails db:migrate
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrating ================
main: -- quote_column_name("daily_invites")
main:    -> 0.0000s
main: -- quote("premium_trial")
main:    -> 0.0003s
main: -- quote(50)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"daily_invites\")\nSELECT id, '50' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"daily_invites\" = EXCLUDED.\"daily_invites\";\n")
main:    -> 0.0044s
main: -- quote_column_name("daily_invites")
main:    -> 0.0000s
main: -- quote("ultimate_trial")
main:    -> 0.0030s
main: -- quote(50)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"daily_invites\")\nSELECT id, '50' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"daily_invites\" = EXCLUDED.\"daily_invites\";\n")
main:    -> 0.0027s
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrated (0.0420s) =======
down
GITLAB_SIMULATE_SAAS=true bin/rails db:rollback:main
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: reverting ================
main: -- quote_column_name("daily_invites")
main:    -> 0.0000s
main: -- quote("premium_trial")
main:    -> 0.0000s
main: -- quote(0)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"daily_invites\")\nSELECT id, '0' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"daily_invites\" = EXCLUDED.\"daily_invites\";\n")
main:    -> 0.0017s
main: -- quote_column_name("daily_invites")
main:    -> 0.0000s
main: -- quote("ultimate_trial")
main:    -> 0.0000s
main: -- quote(0)
main:    -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"daily_invites\")\nSELECT id, '0' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"daily_invites\" = EXCLUDED.\"daily_invites\";\n")
main:    -> 0.0009s
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: reverted (0.0093s) =======

Self-managed

up
bin/rails db:migrate
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrating ================
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrated (0.0793s) =======

ci: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrating ================
ci: -- The migration is skipped since it modifies the schemas: [:gitlab_main].
ci: -- This database can only apply migrations in one of the following schemas: [:gitlab_ci, :gitlab_shared, :gitlab_internal].
ci: == 20230316093433 InsertDailyInvitesTrialPlanLimits: migrated (0.0084s) =======
down
bin/rails db:rollback:main
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: reverting ================
main: == 20230316093433 InsertDailyInvitesTrialPlanLimits: reverted (0.0249s) =======

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #396426

Edited by Abdul Wadood

Merge request reports

Loading