Add database part of ai_enabled settings
What does this MR do and why?
Adds instance and group settings for enabling/disabling Artificial Intelligence features.
Screenshots or screen recordings
Screen_Recording_2023-04-13_at_16.25.56
Database (migration) plans
UP:
main: == [advisory_lock_connection] object_id: 273960, pg_backend_pid: 24279
main: == 20230406143026 AddAiEnabledToNamespaceSettings: migrating ==================
main: -- column_exists?(:namespace_settings, :ai_enabled)
main: -> 0.0980s
main: -- column_exists?(:namespace_settings, :lock_ai_enabled)
main: -> 0.0018s
main: -- column_exists?(:application_settings, :ai_enabled)
main: -> 0.1865s
main: -- column_exists?(:application_settings, :lock_ai_enabled)
main: -> 0.1362s
main: -- add_column(:namespace_settings, :ai_enabled, :boolean, {:default=>nil, :null=>true})
main: -> 0.0028s
main: -- add_column(:namespace_settings, :lock_ai_enabled, :boolean, {:default=>false, :null=>false})
main: -> 0.0019s
main: -- add_column(:application_settings, :ai_enabled, :boolean, {:default=>false, :null=>false})
main: -> 0.0021s
main: -- add_column(:application_settings, :lock_ai_enabled, :boolean, {:default=>false, :null=>false})
main: -> 0.0009s
main: == 20230406143026 AddAiEnabledToNamespaceSettings: migrated (0.4354s) =========
down:
main: == [advisory_lock_connection] object_id: 278620, pg_backend_pid: 23869
main: == 20230406143026 AddAiEnabledToNamespaceSettings: reverting ==================
main: -- column_exists?(:namespace_settings, :ai_enabled)
main: -> 0.0820s
main: -- remove_column(:namespace_settings, :ai_enabled)
main: -> 0.0011s
main: -- column_exists?(:namespace_settings, :lock_ai_enabled)
main: -> 0.0015s
main: -- remove_column(:namespace_settings, :lock_ai_enabled)
main: -> 0.0004s
main: -- column_exists?(:application_settings, :ai_enabled)
main: -> 0.1096s
main: -- remove_column(:application_settings, :ai_enabled)
main: -> 0.0018s
main: -- column_exists?(:application_settings, :lock_ai_enabled)
main: -> 0.1092s
main: -- remove_column(:application_settings, :lock_ai_enabled)
main: -> 0.0021s
main: == 20230406143026 AddAiEnabledToNamespaceSettings: reverted (0.3193s) =========
How to set up and validate locally
- Enable the feature flags
Feature.enable(:ai_enabling_settings, groups) Feature.enable(:openai_experimentation)
- Visit the admin settings to enable the setting in Admin > Settings > General > Account and limits > Artificial intelligence.
- Visit the group edit page for the group that was used for feature flag enablement and toggle the setting.
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.
related to https://gitlab.com/gitlab-org/gitlab/-/issues/404856
Edited by Gosia Ksionek