From be32f492e66e1e99160178ff7f1b21a1aaa1ebd8 Mon Sep 17 00:00:00 2001 From: Daniele Rossetti <drossetti@gitlab.com> Date: Tue, 16 Jul 2024 16:03:52 +0000 Subject: [PATCH] Add new observability feature and policy Changelog: changed --- .../operations/_observability.html.haml | 2 +- .../development/observability_metrics.yml | 8 - .../wip/observability_features.yml | 8 + .../feature_flags/wip/observability_logs.yml | 8 - .../controllers/projects/logs_controller.rb | 2 +- .../projects/metrics_controller.rb | 2 +- .../projects/tracing_controller.rb | 2 +- .../models/gitlab_subscriptions/features.rb | 4 +- ee/app/policies/ee/project_policy.rb | 44 +-- .../tabs_content/_observability.html.haml | 2 +- .../sidebars/projects/menus/monitor_menu.rb | 6 +- .../projects/menus/monitor_menu_spec.rb | 19 +- ee/spec/policies/project_policy_spec.rb | 254 ++---------------- .../requests/projects/logs_controller_spec.rb | 9 +- .../projects/metrics_controller_spec.rb | 9 +- .../projects/tracing_controller_spec.rb | 9 +- lib/gitlab/observability.rb | 3 +- spec/lib/gitlab/auth_spec.rb | 2 +- spec/lib/gitlab/observability_spec.rb | 2 +- 19 files changed, 72 insertions(+), 323 deletions(-) delete mode 100644 config/feature_flags/development/observability_metrics.yml create mode 100644 config/feature_flags/wip/observability_features.yml delete mode 100644 config/feature_flags/wip/observability_logs.yml diff --git a/app/views/projects/settings/operations/_observability.html.haml b/app/views/projects/settings/operations/_observability.html.haml index 482a0703b8de..5c88b0521764 100644 --- a/app/views/projects/settings/operations/_observability.html.haml +++ b/app/views/projects/settings/operations/_observability.html.haml @@ -1,3 +1,3 @@ -- return unless can?(current_user, :read_tracing, @project) || can?(current_user, :read_observability_metrics, @project) || can?(current_user, :read_observability_logs, @project) +- return unless can?(current_user, :read_observability, @project) .js-observability-settings diff --git a/config/feature_flags/development/observability_metrics.yml b/config/feature_flags/development/observability_metrics.yml deleted file mode 100644 index c8bb1d3c2e28..000000000000 --- a/config/feature_flags/development/observability_metrics.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: observability_metrics -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/134393 -rollout_issue_url: https://gitlab.com/gitlab-org/opstrace/opstrace/-/issues/2444 -milestone: '16.6' -type: development -group: group::observability -default_enabled: false diff --git a/config/feature_flags/wip/observability_features.yml b/config/feature_flags/wip/observability_features.yml new file mode 100644 index 000000000000..d878d66174bb --- /dev/null +++ b/config/feature_flags/wip/observability_features.yml @@ -0,0 +1,8 @@ +--- +name: observability_features +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/158786 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/472815 +milestone: '17.3' +type: wip +group: group::observability +default_enabled: false \ No newline at end of file diff --git a/config/feature_flags/wip/observability_logs.yml b/config/feature_flags/wip/observability_logs.yml deleted file mode 100644 index 8b262d268b37..000000000000 --- a/config/feature_flags/wip/observability_logs.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: observability_logs -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/142989 -rollout_issue_url: https://gitlab.com/gitlab-org/opstrace/opstrace/-/issues/2643 -milestone: '16.9' -type: wip -group: group::observability -default_enabled: false diff --git a/ee/app/controllers/projects/logs_controller.rb b/ee/app/controllers/projects/logs_controller.rb index 5370bf695c77..d1833325e3a3 100644 --- a/ee/app/controllers/projects/logs_controller.rb +++ b/ee/app/controllers/projects/logs_controller.rb @@ -6,7 +6,7 @@ class LogsController < Projects::ApplicationController feature_category :metrics - before_action :authorize_read_observability_logs! + before_action :authorize_read_observability! def index; end end diff --git a/ee/app/controllers/projects/metrics_controller.rb b/ee/app/controllers/projects/metrics_controller.rb index f7dcb6097547..84a93adcabc2 100644 --- a/ee/app/controllers/projects/metrics_controller.rb +++ b/ee/app/controllers/projects/metrics_controller.rb @@ -6,7 +6,7 @@ class MetricsController < Projects::ApplicationController feature_category :metrics - before_action :authorize_read_observability_metrics! + before_action :authorize_read_observability! def index; end diff --git a/ee/app/controllers/projects/tracing_controller.rb b/ee/app/controllers/projects/tracing_controller.rb index cf82c4409530..838174ac4d9b 100644 --- a/ee/app/controllers/projects/tracing_controller.rb +++ b/ee/app/controllers/projects/tracing_controller.rb @@ -6,7 +6,7 @@ class TracingController < Projects::ApplicationController feature_category :tracing - before_action :authorize_read_tracing! + before_action :authorize_read_observability! def index; end diff --git a/ee/app/models/gitlab_subscriptions/features.rb b/ee/app/models/gitlab_subscriptions/features.rb index 627857413829..a1a169c44c95 100644 --- a/ee/app/models/gitlab_subscriptions/features.rb +++ b/ee/app/models/gitlab_subscriptions/features.rb @@ -134,8 +134,6 @@ class Features admin_merge_request_approvers_rules merge_trains metrics_reports - metrics_observability - logs_observability multiple_alert_http_integrations multiple_approval_rules multiple_group_issue_boards @@ -262,7 +260,7 @@ class Features status_page suggested_reviewers subepics - tracing + observability unique_project_download_limit vulnerability_finding_signatures container_scanning_for_registry diff --git a/ee/app/policies/ee/project_policy.rb b/ee/app/policies/ee/project_policy.rb index 10a6c36a1fec..12946c191f3a 100644 --- a/ee/app/policies/ee/project_policy.rb +++ b/ee/app/policies/ee/project_policy.rb @@ -253,22 +253,10 @@ module ProjectPolicy project.project_feature&.private?(:merge_requests) end - condition(:tracing_enabled) do - # Can be enabled for all projects in root namespace. Maintains backward - # compatibility by falling back to checking against project - (::Feature.enabled?(:observability_tracing, - @subject.root_namespace) || ::Feature.enabled?(:observability_tracing, @subject)) && - @subject.licensed_feature_available?(:tracing) - end - - condition(:observability_metrics_enabled) do - ::Feature.enabled?(:observability_metrics, @subject.root_namespace) && - @subject.licensed_feature_available?(:metrics_observability) - end - - condition(:observability_logs_enabled) do - ::Feature.enabled?(:observability_logs, @subject.root_namespace, type: :wip) && - @subject.licensed_feature_available?(:logs_observability) + condition(:observability_enabled) do + # temporarily checking :observability_tracing for backward compability until all existing users have the new FF enabled + (::Feature.enabled?(:observability_tracing, @subject.root_namespace) || ::Feature.enabled?(:observability_features, @subject.root_namespace)) && + @subject.licensed_feature_available?(:observability) end # We are overriding the already defined condition in CE version @@ -840,28 +828,8 @@ module ProjectPolicy (maintainer | owner | admin) & pages_multiple_versions_available end.enable :pages_multiple_versions - rule { can?(:reporter_access) & tracing_enabled }.policy do - enable :read_tracing - end - - rule { can?(:developer_access) & tracing_enabled }.policy do - enable :write_tracing - end - - rule { can?(:reporter_access) & observability_metrics_enabled }.policy do - enable :read_observability_metrics - end - - rule { can?(:developer_access) & observability_metrics_enabled }.policy do - enable :write_observability_metrics - end - - rule { can?(:reporter_access) & observability_logs_enabled }.policy do - enable :read_observability_logs - end - - rule { can?(:developer_access) & observability_logs_enabled }.policy do - enable :write_observability_logs + rule { can?(:reporter_access) & observability_enabled }.policy do + enable :read_observability end rule { ci_cancellation_maintainers_only & ~can?(:maintainer_access) }.policy do diff --git a/ee/app/views/shared/usage_quotas/tabs_content/_observability.html.haml b/ee/app/views/shared/usage_quotas/tabs_content/_observability.html.haml index c52ed546056d..19ae09df377d 100644 --- a/ee/app/views/shared/usage_quotas/tabs_content/_observability.html.haml +++ b/ee/app/views/shared/usage_quotas/tabs_content/_observability.html.haml @@ -1,3 +1,3 @@ -- return unless can?(current_user, :read_tracing, @project) || can?(current_user, :read_observability_metrics, @project) || can?(current_user, :read_observability_logs, @project) +- return unless can?(current_user, :read_observability, @project) #js-observability-usage-quota-app{ data: { view_model: observability_usage_quota_view_model(@project) } } diff --git a/ee/lib/ee/sidebars/projects/menus/monitor_menu.rb b/ee/lib/ee/sidebars/projects/menus/monitor_menu.rb index 686f8339829b..a8751affc5da 100644 --- a/ee/lib/ee/sidebars/projects/menus/monitor_menu.rb +++ b/ee/lib/ee/sidebars/projects/menus/monitor_menu.rb @@ -51,7 +51,7 @@ def escalation_policies_menu_item end def tracing_menu_item - unless can?(context.current_user, :read_tracing, context.project) + unless can?(context.current_user, :read_observability, context.project) return ::Sidebars::NilMenuItem.new(item_id: :tracing) end @@ -65,7 +65,7 @@ def tracing_menu_item end def metrics_menu_item - unless can?(context.current_user, :read_observability_metrics, context.project) + unless can?(context.current_user, :read_observability, context.project) return ::Sidebars::NilMenuItem.new(item_id: :metrics) end @@ -79,7 +79,7 @@ def metrics_menu_item end def logs_menu_item - unless can?(context.current_user, :read_observability_logs, context.project) + unless can?(context.current_user, :read_observability, context.project) return ::Sidebars::NilMenuItem.new(item_id: :logs) end diff --git a/ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb b/ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb index af8000c6dd41..c5396e1988bd 100644 --- a/ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb +++ b/ee/spec/lib/ee/sidebars/projects/menus/monitor_menu_spec.rb @@ -48,7 +48,7 @@ let(:role) { :reporter } before do - stub_licensed_features(tracing: true) + stub_licensed_features(observability: true) stub_member_access_level(project, role => user) end @@ -56,6 +56,7 @@ describe 'when feature flag is disabled' do before do + stub_feature_flags(observability_features: false) stub_feature_flags(observability_tracing: false) end @@ -64,7 +65,7 @@ describe 'when unlicensed' do before do - stub_licensed_features(tracing: false) + stub_licensed_features(observability: false) end it { is_expected.to be_nil } @@ -83,7 +84,7 @@ let(:role) { :reporter } before do - stub_licensed_features(metrics_observability: true) + stub_licensed_features(observability: true) stub_member_access_level(project, role => user) end @@ -91,7 +92,8 @@ describe 'when feature flag is disabled' do before do - stub_feature_flags(observability_metrics: false) + stub_feature_flags(observability_features: false) + stub_feature_flags(observability_tracing: false) end it { is_expected.to be_nil } @@ -99,7 +101,7 @@ describe 'when unlicensed' do before do - stub_licensed_features(metrics_observability: false) + stub_licensed_features(observability: false) end it { is_expected.to be_nil } @@ -118,7 +120,7 @@ let(:role) { :reporter } before do - stub_licensed_features(logs_observability: true) + stub_licensed_features(observability: true) stub_member_access_level(project, role => user) end @@ -126,7 +128,8 @@ describe 'when feature flag is disabled' do before do - stub_feature_flags(observability_logs: false) + stub_feature_flags(observability_features: false) + stub_feature_flags(observability_tracing: false) end it { is_expected.to be_nil } @@ -134,7 +137,7 @@ describe 'when unlicensed' do before do - stub_licensed_features(logs_observability: false) + stub_licensed_features(observability: false) end it { is_expected.to be_nil } diff --git a/ee/spec/policies/project_policy_spec.rb b/ee/spec/policies/project_policy_spec.rb index 34bbba7bb2dc..1c3d16433105 100644 --- a/ee/spec/policies/project_policy_spec.rb +++ b/ee/spec/policies/project_policy_spec.rb @@ -3367,107 +3367,65 @@ def create_member_role(member, abilities = member_role_abilities) end end - describe 'read_tracing policy' do + describe 'read_observability policy' do let(:current_user) { reporter } before do - stub_licensed_features(tracing: true) + stub_licensed_features(observability: true) end - describe 'when feature flag is disabled' do + describe 'when observability and observability_tracing feature flags are disabled' do before do + stub_feature_flags(observability_features: false) stub_feature_flags(observability_tracing: false) end - it { is_expected.to be_disallowed(:read_tracing) } + it { is_expected.to be_disallowed(:read_observability) } end - describe 'when feature flag is enabled for project' do + describe 'when observability feature flag is enabled for root namespace' do before do - stub_feature_flags(observability_tracing: false) - stub_feature_flags(observability_tracing: project) + stub_feature_flags(observability_features: project.root_namespace) end - it { is_expected.to be_allowed(:read_tracing) } + it { is_expected.to be_allowed(:read_observability) } end - describe 'when feature flag is enabled for root namespace' do + describe 'when observability_tracing feature flag is enabled for root namespace' do before do - stub_feature_flags(observability_tracing: false) stub_feature_flags(observability_tracing: project.root_namespace) end - it { is_expected.to be_allowed(:read_tracing) } + it { is_expected.to be_allowed(:read_observability) } end describe 'when the project does not have the correct license' do before do - stub_licensed_features(tracing: false) + stub_feature_flags(observability_features: true) + stub_licensed_features(observability: false) end - it { is_expected.to be_disallowed(:read_tracing) } + it { is_expected.to be_disallowed(:read_observability) } end describe 'when the user does not have permission' do let(:current_user) { guest } - it { is_expected.to be_disallowed(:read_tracing) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:read_tracing) } - end - end - - describe 'write_tracing policy' do - let(:current_user) { developer } - - before do - stub_licensed_features(tracing: true) - end - - describe 'when feature flag is disabled' do - before do - stub_feature_flags(observability_tracing: false) - end - - it { is_expected.to be_disallowed(:write_tracing) } - end - - describe 'when feature flag is enabled for project' do - before do - stub_feature_flags(observability_tracing: false) - stub_feature_flags(observability_tracing: project) - end - - it { is_expected.to be_allowed(:write_tracing) } - end - - describe 'when feature flag is enabled for root namespace' do before do - stub_feature_flags(observability_tracing: false) - stub_feature_flags(observability_tracing: project.root_namespace) + stub_feature_flags(observability_features: true) + stub_licensed_features(observability: true) end - it { is_expected.to be_allowed(:write_tracing) } + it { is_expected.to be_disallowed(:read_observability) } end - describe 'when the project does not have the correct license' do + describe 'when the user has permission' do before do - stub_licensed_features(tracing: false) + stub_feature_flags(observability_features: true) + stub_licensed_features(observability: true) end - it { is_expected.to be_disallowed(:write_tracing) } - end - - describe 'when the user does not have permission' do - let(:current_user) { reporter } - - it { is_expected.to be_disallowed(:write_tracing) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:write_tracing) } + it { is_expected.to be_allowed(:read_observability) } end end @@ -3507,178 +3465,6 @@ def create_member_role(member, abilities = member_role_abilities) end end - describe 'read_observability_metrics policy' do - let(:current_user) { reporter } - - before do - stub_licensed_features(metrics_observability: true) - end - - describe 'when feature flag is disabled' do - before do - stub_feature_flags(observability_metrics: false) - end - - it { is_expected.to be_disallowed(:read_observability_metrics) } - end - - describe 'when feature flag is enabled for root namespace' do - before do - stub_feature_flags(observability_metrics: false) - stub_feature_flags(observability_metrics: project.root_namespace) - end - - it { is_expected.to be_allowed(:read_observability_metrics) } - end - - describe 'when the project does not have the correct license' do - before do - stub_licensed_features(metrics_observability: false) - end - - it { is_expected.to be_disallowed(:read_observability_metrics) } - end - - describe 'when the user does not have permission' do - let(:current_user) { guest } - - it { is_expected.to be_disallowed(:read_observability_metrics) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:read_observability_metrics) } - end - end - - describe 'write_observability_metrics policy' do - let(:current_user) { developer } - - before do - stub_licensed_features(metrics_observability: true) - end - - describe 'when feature flag is disabled' do - before do - stub_feature_flags(observability_metrics: false) - end - - it { is_expected.to be_disallowed(:write_observability_metrics) } - end - - describe 'when feature flag is enabled for root namespace' do - before do - stub_feature_flags(observability_metrics: false) - stub_feature_flags(observability_metrics: project.root_namespace) - end - - it { is_expected.to be_allowed(:write_observability_metrics) } - end - - describe 'when the project does not have the correct license' do - before do - stub_licensed_features(metrics_observability: false) - end - - it { is_expected.to be_disallowed(:write_observability_metrics) } - end - - describe 'when the user does not have permission' do - let(:current_user) { reporter } - - it { is_expected.to be_disallowed(:write_observability_metrics) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:write_observability_metrics) } - end - end - - describe 'read_observability_logs policy' do - let(:current_user) { reporter } - - before do - stub_licensed_features(logs_observability: true) - end - - describe 'when feature flag is disabled' do - before do - stub_feature_flags(observability_logs: false) - end - - it { is_expected.to be_disallowed(:read_observability_logs) } - end - - describe 'when feature flag is enabled for root namespace' do - before do - stub_feature_flags(observability_logs: false) - stub_feature_flags(observability_logs: project.root_namespace) - end - - it { is_expected.to be_allowed(:read_observability_logs) } - end - - describe 'when the project does not have the correct license' do - before do - stub_licensed_features(logs_observability: false) - end - - it { is_expected.to be_disallowed(:read_observability_logs) } - end - - describe 'when the user does not have permission' do - let(:current_user) { guest } - - it { is_expected.to be_disallowed(:read_observability_logs) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:read_observability_logs) } - end - end - - describe 'write_observability_logs policy' do - let(:current_user) { developer } - - before do - stub_licensed_features(logs_observability: true) - end - - describe 'when feature flag is disabled' do - before do - stub_feature_flags(observability_logs: false) - end - - it { is_expected.to be_disallowed(:write_observability_logs) } - end - - describe 'when feature flag is enabled for root namespace' do - before do - stub_feature_flags(observability_logs: false) - stub_feature_flags(observability_logs: project.root_namespace) - end - - it { is_expected.to be_allowed(:write_observability_logs) } - end - - describe 'when the project does not have the correct license' do - before do - stub_licensed_features(logs_observability: false) - end - - it { is_expected.to be_disallowed(:write_observability_logs) } - end - - describe 'when the user does not have permission' do - let(:current_user) { reporter } - - it { is_expected.to be_disallowed(:write_observability_logs) } - end - - describe 'when the user has permission' do - it { is_expected.to be_allowed(:write_observability_logs) } - end - end - describe 'generate_cube_query policy' do let(:current_user) { owner } diff --git a/ee/spec/requests/projects/logs_controller_spec.rb b/ee/spec/requests/projects/logs_controller_spec.rb index db845b560c76..452a3c7ec1d1 100644 --- a/ee/spec/requests/projects/logs_controller_spec.rb +++ b/ee/spec/requests/projects/logs_controller_spec.rb @@ -7,7 +7,7 @@ let_it_be(:project) { create(:project, group: group) } let_it_be(:user) { create(:user) } let(:path) { nil } - let(:observability_logs_ff) { true } + let(:observability_ff) { true } let(:expected_api_config) do { oauthUrl: Gitlab::Observability.oauth_url, @@ -31,8 +31,9 @@ end before do - stub_licensed_features(logs_observability: true) - stub_feature_flags(observability_logs: observability_logs_ff) + stub_licensed_features(observability: true) + stub_feature_flags(observability_features: observability_ff) + stub_feature_flags(observability_tracing: observability_ff) sign_in(user) end @@ -65,7 +66,7 @@ end context 'when feature is disabled' do - let(:observability_logs_ff) { false } + let(:observability_ff) { false } it 'returns 404' do expect(html_response).to have_gitlab_http_status(:not_found) diff --git a/ee/spec/requests/projects/metrics_controller_spec.rb b/ee/spec/requests/projects/metrics_controller_spec.rb index ea6cda42f22b..ed25e5bea565 100644 --- a/ee/spec/requests/projects/metrics_controller_spec.rb +++ b/ee/spec/requests/projects/metrics_controller_spec.rb @@ -7,7 +7,7 @@ let_it_be(:project) { create(:project, group: group) } let_it_be(:user) { create(:user) } let(:path) { nil } - let(:observability_metrics_ff) { true } + let(:observability_ff) { true } let(:expected_api_config) do { oauthUrl: Gitlab::Observability.oauth_url, @@ -31,8 +31,9 @@ end before do - stub_licensed_features(metrics_observability: true) - stub_feature_flags(observability_metrics: observability_metrics_ff) + stub_licensed_features(observability: true) + stub_feature_flags(observability_tracing: observability_ff) + stub_feature_flags(observability_features: observability_ff) sign_in(user) end @@ -65,7 +66,7 @@ end context 'when feature is disabled' do - let(:observability_metrics_ff) { false } + let(:observability_ff) { false } it 'returns 404' do expect(html_response).to have_gitlab_http_status(:not_found) diff --git a/ee/spec/requests/projects/tracing_controller_spec.rb b/ee/spec/requests/projects/tracing_controller_spec.rb index 570208fc0a5f..280b86d46035 100644 --- a/ee/spec/requests/projects/tracing_controller_spec.rb +++ b/ee/spec/requests/projects/tracing_controller_spec.rb @@ -7,7 +7,7 @@ let_it_be(:project) { create(:project, group: group) } let_it_be(:user) { create(:user) } let(:path) { nil } - let(:observability_tracing_ff) { true } + let(:observability_ff) { true } let(:expected_api_config) do { oauthUrl: Gitlab::Observability.oauth_url, @@ -31,8 +31,9 @@ end before do - stub_licensed_features(tracing: true) - stub_feature_flags(observability_tracing: observability_tracing_ff) + stub_licensed_features(observability: true) + stub_feature_flags(observability_tracing: observability_ff) + stub_feature_flags(observability_features: observability_ff) sign_in(user) end @@ -65,7 +66,7 @@ end context 'when feature is disabled' do - let(:observability_tracing_ff) { false } + let(:observability_ff) { false } it 'returns 404' do expect(subject).to have_gitlab_http_status(:not_found) diff --git a/lib/gitlab/observability.rb b/lib/gitlab/observability.rb index 14af6975b809..d1e6fad6e9ee 100644 --- a/lib/gitlab/observability.rb +++ b/lib/gitlab/observability.rb @@ -26,8 +26,7 @@ def should_enable_observability_auth_scopes?(resource) # Enable the needed oauth scopes if tracing is enabled. if resource.is_a?(Group) || resource.is_a?(Project) return Feature.enabled?(:observability_tracing, resource.root_ancestor) || - Feature.enabled?(:observability_metrics, resource.root_ancestor) || - Feature.enabled?(:observability_logs, resource.root_ancestor) + Feature.enabled?(:observability_features, resource.root_ancestor) end false diff --git a/spec/lib/gitlab/auth_spec.rb b/spec/lib/gitlab/auth_spec.rb index f259db1f749b..551197add7f4 100644 --- a/spec/lib/gitlab/auth_spec.rb +++ b/spec/lib/gitlab/auth_spec.rb @@ -95,7 +95,7 @@ end context 'with observability feature flags' do - feature_flags = [:observability_tracing, :observability_metrics, :observability_logs] + feature_flags = [:observability_tracing, :observability_features] context 'when all disabled' do before do diff --git a/spec/lib/gitlab/observability_spec.rb b/spec/lib/gitlab/observability_spec.rb index 3a5abd393bd1..f8fa67735ebf 100644 --- a/spec/lib/gitlab/observability_spec.rb +++ b/spec/lib/gitlab/observability_spec.rb @@ -56,7 +56,7 @@ end end - feature_flags = [:observability_tracing, :observability_metrics, :observability_logs] + feature_flags = [:observability_tracing, :observability_features] flag_states = [true, false].repeated_permutation(feature_flags.length) flag_tests = flag_states.map { |flags| Hash[feature_flags.zip(flags)] } -- GitLab