Add plan limits of project access tokens
What does this MR do and why?
Related issue: #386041 (closed) | Related MR and comment: !113111 (comment 1317780468)
Add a new restriction by Plan limits: Trail Plan can only create one project access token.
Plan | Before | After |
---|---|---|
GitLab Premium | support for creating PATs | support for creating PATs |
GitLab Ultimate | support for creating PATs | support for creating PATs |
GitLab Premium Trail | not support for creating PATs | support for creating one PAT |
GitLab Ultimate Trail | not support for creating PATs | support for creating one PAT |
Others Plan | not support for creating PATs | not support for creating PATs |
("PAT" means "Project Access Token")
Migration log
Migrate
$ bin/rails db:migrate
WARNING: This version of GitLab depends on gitlab-shell 14.18.0, but you're running 14.17.0. Please update gitlab-shell.
main: == 20230321161218 AddProjectAccessTokenLimitToPlanLimits: migrating ======================
main: -- add_column(:plan_limits, :project_access_token_limit, :integer, {:default=>0, :null=>false})
main: -> 0.0029s
main: == 20230321161218 AddProjectAccessTokenLimitToPlanLimits: migrated (0.0070s) =============
main: == 20230321161441 InsertProjectAccessTokenLimit: migrating =========================
main: -- quote_column_name("project_access_token_limit")
main: -> 0.0000s
main: -- quote("premium_trial")
main: -> 0.0000s
main: -- quote(1)
main: -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"project_access_token_limit\")\nSELECT id, '1' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"project_access_token_limit\" = EXCLUDED.\"project_access_token_limit\";\n")
main: -> 0.0013s
main: -- quote_column_name("project_access_token_limit")
main: -> 0.0000s
main: -- quote("ultimate_trial")
main: -> 0.0000s
main: -- quote(1)
main: -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"project_access_token_limit\")\nSELECT id, '1' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"project_access_token_limit\" = EXCLUDED.\"project_access_token_limit\";\n")
main: -> 0.0008s
main: == 20230321161441 InsertProjectAccessTokenLimit: migrated (0.0062s) ================
Rollback
$ bin/rails db:rollback:main STEP=2
WARNING: This version of GitLab depends on gitlab-shell 14.18.0, but you're running 14.17.0. Please update gitlab-shell.
main: == 20230321161441 InsertProjectAccessTokenLimit: reverting =========================
main: -- quote_column_name("project_access_token_limit")
main: -> 0.0000s
main: -- quote("premium_trial")
main: -> 0.0000s
main: -- quote(0)
main: -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"project_access_token_limit\")\nSELECT id, '0' FROM plans WHERE name = 'premium_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"project_access_token_limit\" = EXCLUDED.\"project_access_token_limit\";\n")
main: -> 0.0014s
main: -- quote_column_name("project_access_token_limit")
main: -> 0.0000s
main: -- quote("ultimate_trial")
main: -> 0.0000s
main: -- quote(0)
main: -> 0.0000s
main: -- execute("INSERT INTO plan_limits (plan_id, \"project_access_token_limit\")\nSELECT id, '0' FROM plans WHERE name = 'ultimate_trial' LIMIT 1\nON CONFLICT (plan_id) DO UPDATE SET \"project_access_token_limit\" = EXCLUDED.\"project_access_token_limit\";\n")
main: -> 0.0007s
main: == 20230321161441 InsertProjectAccessTokenLimit: reverted (0.0067s) ================
main: == 20230321161218 AddProjectAccessTokenLimitToPlanLimits: reverting ======================
main: -- remove_column(:plan_limits, :project_access_token_limit, :integer, {:default=>0, :null=>false})
main: -> 0.0011s
main: == 20230321161218 AddProjectAccessTokenLimitToPlanLimits: reverted (0.0057s) =============
Screenshots or screen recordings
No UI changes.
How to set up and validate locally
Numbered steps to set up and validate the change are strongly suggested.
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Zhiyuan Lu