From fa72bf51cfb0f223325de5dc8a04670f3a1bc98d Mon Sep 17 00:00:00 2001 From: Daniele Rossetti <drossetti@gitlab.com> Date: Mon, 22 Jul 2024 15:07:30 +0000 Subject: [PATCH] Remove deprecated observability_tracing feature flag Changelog: changed --- .../development/observability_tracing.yml | 8 -- ee/app/policies/ee/project_policy.rb | 3 +- .../projects/menus/monitor_menu_spec.rb | 3 - ee/spec/policies/project_policy_spec.rb | 11 +- .../requests/projects/logs_controller_spec.rb | 1 - .../projects/metrics_controller_spec.rb | 1 - .../projects/tracing_controller_spec.rb | 1 - lib/gitlab/observability.rb | 3 +- spec/lib/gitlab/auth_spec.rb | 102 ++++++++---------- spec/lib/gitlab/observability_spec.rb | 55 ++++++---- 10 files changed, 84 insertions(+), 104 deletions(-) delete mode 100644 config/feature_flags/development/observability_tracing.yml diff --git a/config/feature_flags/development/observability_tracing.yml b/config/feature_flags/development/observability_tracing.yml deleted file mode 100644 index a32d84096088d..0000000000000 --- a/config/feature_flags/development/observability_tracing.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: observability_tracing -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/124966 -rollout_issue_url: https://gitlab.com/gitlab-org/opstrace/opstrace/-/issues/2252 -milestone: '16.2' -type: development -group: group::observability -default_enabled: false diff --git a/ee/app/policies/ee/project_policy.rb b/ee/app/policies/ee/project_policy.rb index 12946c191f3ae..8aefe4ca77cd9 100644 --- a/ee/app/policies/ee/project_policy.rb +++ b/ee/app/policies/ee/project_policy.rb @@ -254,8 +254,7 @@ module ProjectPolicy end 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)) && + ::Feature.enabled?(:observability_features, @subject.root_namespace) && @subject.licensed_feature_available?(:observability) 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 c5396e1988bdc..380c55453e555 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 @@ -57,7 +57,6 @@ describe 'when feature flag is disabled' do before do stub_feature_flags(observability_features: false) - stub_feature_flags(observability_tracing: false) end it { is_expected.to be_nil } @@ -93,7 +92,6 @@ describe 'when feature flag is disabled' do before do stub_feature_flags(observability_features: false) - stub_feature_flags(observability_tracing: false) end it { is_expected.to be_nil } @@ -129,7 +127,6 @@ describe 'when feature flag is disabled' do before do stub_feature_flags(observability_features: false) - stub_feature_flags(observability_tracing: 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 1c3d164331054..6f71f01e0717f 100644 --- a/ee/spec/policies/project_policy_spec.rb +++ b/ee/spec/policies/project_policy_spec.rb @@ -3374,10 +3374,9 @@ def create_member_role(member, abilities = member_role_abilities) stub_licensed_features(observability: true) end - describe 'when observability and observability_tracing feature flags are disabled' do + describe 'when observability_features is disabled' do before do stub_feature_flags(observability_features: false) - stub_feature_flags(observability_tracing: false) end it { is_expected.to be_disallowed(:read_observability) } @@ -3391,14 +3390,6 @@ def create_member_role(member, abilities = member_role_abilities) it { is_expected.to be_allowed(:read_observability) } end - describe 'when observability_tracing feature flag is enabled for root namespace' do - before do - stub_feature_flags(observability_tracing: project.root_namespace) - end - - it { is_expected.to be_allowed(:read_observability) } - end - describe 'when the project does not have the correct license' do before do stub_feature_flags(observability_features: true) diff --git a/ee/spec/requests/projects/logs_controller_spec.rb b/ee/spec/requests/projects/logs_controller_spec.rb index 452a3c7ec1d15..e39c9b205dc0d 100644 --- a/ee/spec/requests/projects/logs_controller_spec.rb +++ b/ee/spec/requests/projects/logs_controller_spec.rb @@ -33,7 +33,6 @@ before do stub_licensed_features(observability: true) stub_feature_flags(observability_features: observability_ff) - stub_feature_flags(observability_tracing: observability_ff) sign_in(user) end diff --git a/ee/spec/requests/projects/metrics_controller_spec.rb b/ee/spec/requests/projects/metrics_controller_spec.rb index ed25e5bea565f..9b7e7922b4bc2 100644 --- a/ee/spec/requests/projects/metrics_controller_spec.rb +++ b/ee/spec/requests/projects/metrics_controller_spec.rb @@ -32,7 +32,6 @@ before do stub_licensed_features(observability: true) - stub_feature_flags(observability_tracing: observability_ff) stub_feature_flags(observability_features: observability_ff) sign_in(user) end diff --git a/ee/spec/requests/projects/tracing_controller_spec.rb b/ee/spec/requests/projects/tracing_controller_spec.rb index 280b86d460350..64794a4e8be50 100644 --- a/ee/spec/requests/projects/tracing_controller_spec.rb +++ b/ee/spec/requests/projects/tracing_controller_spec.rb @@ -32,7 +32,6 @@ before do stub_licensed_features(observability: true) - stub_feature_flags(observability_tracing: observability_ff) stub_feature_flags(observability_features: observability_ff) sign_in(user) end diff --git a/lib/gitlab/observability.rb b/lib/gitlab/observability.rb index d1e6fad6e9eea..e3af81efa71d9 100644 --- a/lib/gitlab/observability.rb +++ b/lib/gitlab/observability.rb @@ -25,8 +25,7 @@ def provisioning_url(project) 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_features, resource.root_ancestor) + return 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 551197add7f4f..c1dba7e19ac3d 100644 --- a/spec/lib/gitlab/auth_spec.rb +++ b/spec/lib/gitlab/auth_spec.rb @@ -95,11 +95,9 @@ end context 'with observability feature flags' do - feature_flags = [:observability_tracing, :observability_features] - context 'when all disabled' do before do - stub_feature_flags(feature_flags.index_with { false }) + stub_feature_flags(observability_features: false) end it 'contains for group all resource bot scopes without observability scopes' do @@ -126,70 +124,64 @@ end end - flag_states = [true, false].repeated_permutation(feature_flags.length) - flag_tests = flag_states.filter(&:any?).map { |flags| Hash[feature_flags.zip(flags)] } + context "with feature flag enabled for specific root group" do + let(:parent) { build_stubbed(:group) } + let(:group) do + build_stubbed(:group, parent: parent).tap { |g| g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) } + end - flag_tests.each do |flags| - context "with flags #{flags} enabled for specific root group" do - let(:parent) { build_stubbed(:group) } - let(:group) do - build_stubbed(:group, parent: parent).tap { |g| g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) } - end + let(:project) { build_stubbed(:project, namespace: group) } - let(:project) { build_stubbed(:project, namespace: group) } + before do + stub_feature_flags(observability_features: parent) + end - before do - flags.transform_values! { |v| v ? parent : false } - stub_feature_flags(flags) - end + it 'contains for group all resource bot scopes including observability scopes' do + expect(subject.available_scopes_for(group)).to match_array %i[ + api read_api read_repository write_repository read_registry write_registry + read_observability write_observability create_runner manage_runner k8s_proxy ai_features + ] + end - it 'contains for group all resource bot scopes including observability scopes' do - expect(subject.available_scopes_for(group)).to match_array %i[ - api read_api read_repository write_repository read_registry write_registry - read_observability write_observability create_runner manage_runner k8s_proxy ai_features - ] - end + it 'contains for admin user all non-default scopes with ADMIN access and without observability scopes' do + user = build_stubbed(:user, admin: true) - it 'contains for admin user all non-default scopes with ADMIN access and without observability scopes' do - user = build_stubbed(:user, admin: true) + expect(subject.available_scopes_for(user)).to match_array %i[ + api read_user read_api read_repository write_repository read_registry write_registry read_service_ping + sudo admin_mode create_runner manage_runner k8s_proxy ai_features + ] + end - expect(subject.available_scopes_for(user)).to match_array %i[ - api read_user read_api read_repository write_repository read_registry write_registry read_service_ping - sudo admin_mode create_runner manage_runner k8s_proxy ai_features - ] - end + it 'contains for project all resource bot scopes including observability scopes' do + expect(subject.available_scopes_for(project)).to match_array %i[ + api read_api read_repository write_repository read_registry write_registry + read_observability write_observability create_runner manage_runner k8s_proxy ai_features + ] + end - it 'contains for project all resource bot scopes including observability scopes' do - expect(subject.available_scopes_for(project)).to match_array %i[ - api read_api read_repository write_repository read_registry write_registry - read_observability write_observability create_runner manage_runner k8s_proxy ai_features - ] + it 'contains for other group all resource bot scopes without observability scopes' do + other_parent = build_stubbed(:group) + other_group = build_stubbed(:group, parent: other_parent).tap do |g| + g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) end - it 'contains for other group all resource bot scopes without observability scopes' do - other_parent = build_stubbed(:group) - other_group = build_stubbed(:group, parent: other_parent).tap do |g| - g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) - end + expect(subject.available_scopes_for(other_group)).to match_array %i[ + api read_api read_repository write_repository read_registry write_registry + create_runner manage_runner k8s_proxy ai_features + ] + end - expect(subject.available_scopes_for(other_group)).to match_array %i[ - api read_api read_repository write_repository read_registry write_registry - create_runner manage_runner k8s_proxy ai_features - ] + it 'contains for other project all resource bot scopes without observability scopes' do + other_parent = build_stubbed(:group) + other_group = build_stubbed(:group, parent: other_parent).tap do |g| + g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) end + other_project = build_stubbed(:project, namespace: other_group) - it 'contains for other project all resource bot scopes without observability scopes' do - other_parent = build_stubbed(:group) - other_group = build_stubbed(:group, parent: other_parent).tap do |g| - g.namespace_settings = build_stubbed(:namespace_settings, namespace: g) - end - other_project = build_stubbed(:project, namespace: other_group) - - expect(subject.available_scopes_for(other_project)).to match_array %i[ - api read_api read_repository write_repository read_registry write_registry - create_runner manage_runner k8s_proxy ai_features - ] - end + expect(subject.available_scopes_for(other_project)).to match_array %i[ + api read_api read_repository write_repository read_registry write_registry + create_runner manage_runner k8s_proxy ai_features + ] end end end diff --git a/spec/lib/gitlab/observability_spec.rb b/spec/lib/gitlab/observability_spec.rb index f8fa67735ebf3..8853198bb92fc 100644 --- a/spec/lib/gitlab/observability_spec.rb +++ b/spec/lib/gitlab/observability_spec.rb @@ -56,34 +56,47 @@ end end - 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)] } + context "when feature flag is enabled" do + before do + stub_feature_flags(observability_features: true) + end + + describe 'when resource is group' do + it { is_expected.to be true } + end + + describe 'when resource is project' do + let(:resource) { build_stubbed(:project, namespace: parent) } + + it { is_expected.to be true } + end - flag_tests.each do |flags| - context "with feature flag state #{flags}" do - before do - flags.transform_values! { |v| v ? parent : false } - stub_feature_flags(flags) - end + describe 'when resource is not a group or project' do + let(:resource) { build_stubbed(:user) } - let(:expected_enabled) { flags.values.any? } + it { is_expected.to be false } + end + end - describe 'when resource is group' do - it { is_expected.to be expected_enabled } - end + context "when feature flag is disabled" do + before do + stub_feature_flags(observability_features: false) + end - describe 'when resource is project' do - let(:resource) { build_stubbed(:project, namespace: parent) } + describe 'when resource is group' do + it { is_expected.to be false } + end + + describe 'when resource is project' do + let(:resource) { build_stubbed(:project, namespace: parent) } - it { is_expected.to be expected_enabled } - end + it { is_expected.to be false } + end - describe 'when resource is not a group or project' do - let(:resource) { build_stubbed(:user) } + describe 'when resource is not a group or project' do + let(:resource) { build_stubbed(:user) } - it { is_expected.to be false } - end + it { is_expected.to be false } end end end -- GitLab