Skip to content

Add database part of ai_enabled settings

Gosia Ksionek requested to merge mk-add-ai-enablement-setting into master

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

  1. Enable the feature flags
    Feature.enable(:ai_enabling_settings, groups)
    Feature.enable(:openai_experimentation)
  2. Visit the admin settings to enable the setting in Admin > Settings > General > Account and limits > Artificial intelligence.
  3. 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.

related to https://gitlab.com/gitlab-org/gitlab/-/issues/404856

Edited by Gosia Ksionek

Merge request reports