Skip to content
Snippets Groups Projects
Commit ebf87fd9 authored by Thong Kuah's avatar Thong Kuah :speech_balloon:
Browse files

Unify into :group_clusters feature flag

With this MR, group clusters is now functional, so default to enabled.

Have a single setting on the root ancestor group to enabled or disable
group clusters feature as a whole
parent f85440e6
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -3,8 +3,8 @@
class Groups::ClustersController < Clusters::ClustersController
include ControllerWithCrossProjectAccessCheck
 
prepend_before_action :check_group_clusters_feature_flag!
prepend_before_action :group
prepend_before_action :check_group_clusters_feature_flag!
requires_cross_project_access
 
layout 'group'
Loading
Loading
@@ -20,6 +20,10 @@ class Groups::ClustersController < Clusters::ClustersController
end
 
def check_group_clusters_feature_flag!
render_404 unless Feature.enabled?(:group_clusters)
render_404 unless group_clusters_enabled?
end
def group_clusters_enabled?
group.group_clusters_enabled?
end
end
Loading
Loading
@@ -140,7 +140,7 @@ module GroupsHelper
can?(current_user, "read_group_#{resource}".to_sym, @group)
end
 
if can?(current_user, :read_cluster, @group) && Feature.enabled?(:group_clusters)
if can?(current_user, :read_cluster, @group) && @group.group_clusters_enabled?
links << :kubernetes
end
 
Loading
Loading
Loading
Loading
@@ -25,7 +25,7 @@ module DeploymentPlatform
end
 
def find_group_cluster_platform_kubernetes_with_feature_guard(environment: nil)
return unless Feature.enabled?(:deploy_group_clusters, default_enabled: true)
return unless group_clusters_enabled?
 
find_group_cluster_platform_kubernetes(environment: environment)
end
Loading
Loading
Loading
Loading
@@ -400,6 +400,10 @@ class Group < Namespace
ensure_runners_token!
end
 
def group_clusters_enabled?
Feature.enabled?(:group_clusters, root_ancestor, default_enabled: true)
end
private
 
def update_two_factor_requirement
Loading
Loading
Loading
Loading
@@ -243,7 +243,7 @@ class Namespace < ActiveRecord::Base
end
 
def root_ancestor
ancestors.reorder(nil).find_by(parent_id: nil)
self_and_ancestors.reorder(nil).find_by(parent_id: nil)
end
 
def subgroup?
Loading
Loading
Loading
Loading
@@ -291,6 +291,8 @@ class Project < ActiveRecord::Base
delegate :add_guest, :add_reporter, :add_developer, :add_maintainer, :add_role, to: :team
delegate :add_master, to: :team # @deprecated
delegate :group_runners_enabled, :group_runners_enabled=, :group_runners_enabled?, to: :ci_cd_settings
delegate :group_clusters_enabled?, to: :group, allow_nil: true
delegate :root_ancestor, to: :namespace, allow_nil: true
 
# Validations
validates :creator, presence: true, on: :create
Loading
Loading
Loading
Loading
@@ -69,8 +69,6 @@ describe DeploymentPlatform do
let(:group) { group_cluster.group }
 
before do
stub_feature_flags(deploy_group_clusters: true)
project.update!(group: group)
end
 
Loading
Loading
@@ -118,7 +116,7 @@ describe DeploymentPlatform do
 
context 'feature flag disabled' do
before do
stub_feature_flags(deploy_group_clusters: false)
stub_feature_flags(group_clusters: false)
end
 
it 'returns nil' do
Loading
Loading
Loading
Loading
@@ -745,4 +745,33 @@ describe Group do
let(:uploader_class) { AttachmentUploader }
end
end
describe '#group_clusters_enabled?' do
before do
# Override global stub in spec/spec_helper.rb
expect(Feature).to receive(:enabled?).and_call_original
end
subject { group.group_clusters_enabled? }
it { is_expected.to be_truthy }
context 'explicitly disabled for root ancestor' do
before do
feature = Feature.get(:group_clusters)
feature.disable(group.root_ancestor)
end
it { is_expected.to be_falsey }
end
context 'explicitly disabled for root ancestor' do
before do
feature = Feature.get(:group_clusters)
feature.enable(group.root_ancestor)
end
it { is_expected.to be_truthy }
end
end
end
Loading
Loading
@@ -721,6 +721,7 @@ describe Namespace do
deep_nested_group = create(:group, parent: nested_group)
very_deep_nested_group = create(:group, parent: deep_nested_group)
 
expect(root_group.root_ancestor).to eq(root_group)
expect(nested_group.root_ancestor).to eq(root_group)
expect(deep_nested_group.root_ancestor).to eq(root_group)
expect(very_deep_nested_group.root_ancestor).to eq(root_group)
Loading
Loading
Loading
Loading
@@ -412,6 +412,8 @@ describe Project do
 
it { is_expected.to delegate_method(:members).to(:team).with_prefix(true) }
it { is_expected.to delegate_method(:name).to(:owner).with_prefix(true).with_arguments(allow_nil: true) }
it { is_expected.to delegate_method(:group_clusters_enabled?).to(:group).with_arguments(allow_nil: true) }
it { is_expected.to delegate_method(:root_ancestor).to(:namespace).with_arguments(allow_nil: true) }
end
 
describe '#to_reference_with_postfix' do
Loading
Loading
@@ -2129,6 +2131,29 @@ describe Project do
end
end
 
describe '#root_ancestor' do
let(:project) { create(:project) }
subject { project.root_ancestor }
it { is_expected.to eq(project.namespace) }
context 'in a group' do
let(:group) { create(:group) }
let(:project) { create(:project, group: group) }
it { is_expected.to eq(group) }
end
context 'in a nested group', :nested_groups do
let(:root) { create(:group) }
let(:child) { create(:group, parent: root) }
let(:project) { create(:project, group: child) }
it { is_expected.to eq(root) }
end
end
describe '#lfs_enabled?' do
let(:project) { create(:project) }
 
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment