Commit 36451a75 authored by Stan Hu's avatar Stan Hu

Merge branch 'remove_group_and_instance_clusters_feature_flag' into 'master'

Remove group and instance clusters feature flag

Closes #63383

See merge request gitlab-org/gitlab-ce!30124
parents 62a40c51 8152efbe
...@@ -4,7 +4,6 @@ class Groups::ClustersController < Clusters::ClustersController ...@@ -4,7 +4,6 @@ class Groups::ClustersController < Clusters::ClustersController
include ControllerWithCrossProjectAccessCheck include ControllerWithCrossProjectAccessCheck
prepend_before_action :group prepend_before_action :group
prepend_before_action :check_group_clusters_feature_flag!
requires_cross_project_access requires_cross_project_access
layout 'group' layout 'group'
...@@ -18,12 +17,4 @@ class Groups::ClustersController < Clusters::ClustersController ...@@ -18,12 +17,4 @@ class Groups::ClustersController < Clusters::ClustersController
def group def group
@group ||= find_routable!(Group, params[:group_id] || params[:id]) @group ||= find_routable!(Group, params[:group_id] || params[:id])
end end
def check_group_clusters_feature_flag!
render_404 unless group_clusters_enabled?
end
def group_clusters_enabled?
group.group_clusters_enabled?
end
end end
...@@ -142,7 +142,7 @@ module GroupsHelper ...@@ -142,7 +142,7 @@ module GroupsHelper
can?(current_user, "read_group_#{resource}".to_sym, @group) can?(current_user, "read_group_#{resource}".to_sym, @group)
end end
if can?(current_user, :read_cluster, @group) && @group.group_clusters_enabled? if can?(current_user, :read_cluster, @group)
links << :kubernetes links << :kubernetes
end end
......
...@@ -9,9 +9,5 @@ module Clusters ...@@ -9,9 +9,5 @@ module Clusters
def feature_available?(feature) def feature_available?(feature)
::Feature.enabled?(feature, default_enabled: true) ::Feature.enabled?(feature, default_enabled: true)
end end
def self.enabled?
::Feature.enabled?(:instance_clusters, default_enabled: true)
end
end end
end end
...@@ -13,8 +13,8 @@ module DeploymentPlatform ...@@ -13,8 +13,8 @@ module DeploymentPlatform
def find_deployment_platform(environment) def find_deployment_platform(environment)
find_cluster_platform_kubernetes(environment: environment) || find_cluster_platform_kubernetes(environment: environment) ||
find_group_cluster_platform_kubernetes_with_feature_guard(environment: environment) || find_group_cluster_platform_kubernetes(environment: environment) ||
find_instance_cluster_platform_kubernetes_with_feature_guard(environment: environment) find_instance_cluster_platform_kubernetes(environment: environment)
end end
# EE would override this and utilize environment argument # EE would override this and utilize environment argument
...@@ -23,24 +23,12 @@ module DeploymentPlatform ...@@ -23,24 +23,12 @@ module DeploymentPlatform
.last&.platform_kubernetes .last&.platform_kubernetes
end end
def find_group_cluster_platform_kubernetes_with_feature_guard(environment: nil)
return unless group_clusters_enabled?
find_group_cluster_platform_kubernetes(environment: environment)
end
# EE would override this and utilize environment argument # EE would override this and utilize environment argument
def find_group_cluster_platform_kubernetes(environment: nil) def find_group_cluster_platform_kubernetes(environment: nil)
Clusters::Cluster.enabled.default_environment.ancestor_clusters_for_clusterable(self) Clusters::Cluster.enabled.default_environment.ancestor_clusters_for_clusterable(self)
.first&.platform_kubernetes .first&.platform_kubernetes
end end
def find_instance_cluster_platform_kubernetes_with_feature_guard(environment: nil)
return unless Clusters::Instance.enabled?
find_instance_cluster_platform_kubernetes(environment: environment)
end
# EE would override this and utilize environment argument # EE would override this and utilize environment argument
def find_instance_cluster_platform_kubernetes(environment: nil) def find_instance_cluster_platform_kubernetes(environment: nil)
Clusters::Instance.new.clusters.enabled.default_environment Clusters::Instance.new.clusters.enabled.default_environment
......
...@@ -410,10 +410,6 @@ class Group < Namespace ...@@ -410,10 +410,6 @@ class Group < Namespace
ensure_runners_token! ensure_runners_token!
end end
def group_clusters_enabled?
Feature.enabled?(:group_clusters, root_ancestor, default_enabled: true)
end
def project_creation_level def project_creation_level
super || ::Gitlab::CurrentSettings.default_project_creation super || ::Gitlab::CurrentSettings.default_project_creation
end end
......
...@@ -306,7 +306,6 @@ class Project < ApplicationRecord ...@@ -306,7 +306,6 @@ class Project < ApplicationRecord
delegate :add_guest, :add_reporter, :add_developer, :add_maintainer, :add_role, to: :team delegate :add_guest, :add_reporter, :add_developer, :add_maintainer, :add_role, to: :team
delegate :add_master, to: :team # @deprecated delegate :add_master, to: :team # @deprecated
delegate :group_runners_enabled, :group_runners_enabled=, :group_runners_enabled?, to: :ci_cd_settings 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 delegate :root_ancestor, to: :namespace, allow_nil: true
delegate :last_pipeline, to: :commit, allow_nil: true delegate :last_pipeline, to: :commit, allow_nil: true
delegate :external_dashboard_url, to: :metrics_setting, allow_nil: true, prefix: true delegate :external_dashboard_url, to: :metrics_setting, allow_nil: true, prefix: true
......
...@@ -6,9 +6,8 @@ module Clusters ...@@ -6,9 +6,8 @@ module Clusters
condition(:has_clusters, scope: :subject) { clusterable_has_clusters? } condition(:has_clusters, scope: :subject) { clusterable_has_clusters? }
condition(:can_have_multiple_clusters) { multiple_clusters_available? } condition(:can_have_multiple_clusters) { multiple_clusters_available? }
condition(:instance_clusters_enabled) { Instance.enabled? }
rule { admin & instance_clusters_enabled }.policy do rule { admin }.policy do
enable :read_cluster enable :read_cluster
enable :add_cluster enable :add_cluster
enable :create_cluster enable :create_cluster
......
---
title: Remove group and instance clusters feature flag
merge_request: 30124
author:
type: changed
...@@ -13,16 +13,6 @@ describe Admin::Clusters::ApplicationsController do ...@@ -13,16 +13,6 @@ describe Admin::Clusters::ApplicationsController do
it { expect { subject }.to be_allowed_for(:admin) } it { expect { subject }.to be_allowed_for(:admin) }
it { expect { subject }.to be_denied_for(:user) } it { expect { subject }.to be_denied_for(:user) }
it { expect { subject }.to be_denied_for(:external) } it { expect { subject }.to be_denied_for(:external) }
context 'when instance clusters are disabled' do
before do
stub_feature_flags(instance_clusters: false)
end
it 'returns 404' do
is_expected.to have_http_status(:not_found)
end
end
end end
let(:cluster) { create(:cluster, :instance, :provided_by_gcp) } let(:cluster) { create(:cluster, :instance, :provided_by_gcp) }
......
...@@ -17,66 +17,48 @@ describe Admin::ClustersController do ...@@ -17,66 +17,48 @@ describe Admin::ClustersController do
get :index, params: params get :index, params: params
end end
context 'when feature flag is not enabled' do describe 'functionality' do
before do context 'when instance has one or more clusters' do
stub_feature_flags(instance_clusters: false) let!(:enabled_cluster) do
end create(:cluster, :provided_by_gcp, :instance)
end
it 'responds with not found' do let!(:disabled_cluster) do
get_index create(:cluster, :disabled, :provided_by_gcp, :production_environment, :instance)
end
expect(response).to have_gitlab_http_status(404) it 'lists available clusters' do
end get_index
end
context 'when feature flag is enabled' do expect(response).to have_gitlab_http_status(:ok)
before do expect(response).to render_template(:index)
stub_feature_flags(instance_clusters: true) expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster])
end end
describe 'functionality' do context 'when page is specified' do
context 'when instance has one or more clusters' do let(:last_page) { Clusters::Cluster.instance_type.page.total_pages }
let!(:enabled_cluster) do
create(:cluster, :provided_by_gcp, :instance)
end
let!(:disabled_cluster) do before do
create(:cluster, :disabled, :provided_by_gcp, :production_environment, :instance) allow(Clusters::Cluster).to receive(:paginates_per).and_return(1)
create_list(:cluster, 2, :provided_by_gcp, :production_environment, :instance)
end end
it 'lists available clusters' do it 'redirects to the page' do
get_index get_index(page: last_page)
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:index) expect(assigns(:clusters).current_page).to eq(last_page)
expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster])
end
context 'when page is specified' do
let(:last_page) { Clusters::Cluster.instance_type.page.total_pages }
before do
allow(Clusters::Cluster).to receive(:paginates_per).and_return(1)
create_list(:cluster, 2, :provided_by_gcp, :production_environment, :instance)
end
it 'redirects to the page' do
get_index(page: last_page)
expect(response).to have_gitlab_http_status(:ok)
expect(assigns(:clusters).current_page).to eq(last_page)
end
end end
end end
end
context 'when instance does not have a cluster' do context 'when instance does not have a cluster' do
it 'returns an empty state page' do it 'returns an empty state page' do
get_index get_index
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:index, partial: :empty_state) expect(response).to render_template(:index, partial: :empty_state)
expect(assigns(:clusters)).to eq([]) expect(assigns(:clusters)).to eq([])
end
end end
end end
end end
......
...@@ -20,70 +20,52 @@ describe Groups::ClustersController do ...@@ -20,70 +20,52 @@ describe Groups::ClustersController do
get :index, params: params.reverse_merge(group_id: group) get :index, params: params.reverse_merge(group_id: group)
end end
context 'when feature flag is not enabled' do describe 'functionality' do
before do context 'when group has one or more clusters' do
stub_feature_flags(group_clusters: false) let(:group) { create(:group) }
end
it 'renders 404' do let!(:enabled_cluster) do
go create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group])
end
expect(response).to have_gitlab_http_status(404) let!(:disabled_cluster) do
end create(:cluster, :disabled, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group])
end end
context 'when feature flag is enabled' do it 'lists available clusters' do
before do go
stub_feature_flags(group_clusters: true)
end
describe 'functionality' do expect(response).to have_gitlab_http_status(:ok)
context 'when group has one or more clusters' do expect(response).to render_template(:index)
let(:group) { create(:group) } expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster])
end
let!(:enabled_cluster) do context 'when page is specified' do
create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) let(:last_page) { group.clusters.page.total_pages }
end
let!(:disabled_cluster) do before do
create(:cluster, :disabled, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group]) allow(Clusters::Cluster).to receive(:paginates_per).and_return(1)
create_list(:cluster, 2, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group])
end end
it 'lists available clusters' do it 'redirects to the page' do
go go(page: last_page)
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:index) expect(assigns(:clusters).current_page).to eq(last_page)
expect(assigns(:clusters)).to match_array([enabled_cluster, disabled_cluster])
end
context 'when page is specified' do
let(:last_page) { group.clusters.page.total_pages }
before do
allow(Clusters::Cluster).to receive(:paginates_per).and_return(1)
create_list(:cluster, 2, :provided_by_gcp, :production_environment, cluster_type: :group_type, groups: [group])
end
it 'redirects to the page' do
go(page: last_page)
expect(response).to have_gitlab_http_status(:ok)
expect(assigns(:clusters).current_page).to eq(last_page)
end
end end
end end
end
context 'when group does not have a cluster' do context 'when group does not have a cluster' do
let(:group) { create(:group) } let(:group) { create(:group) }
it 'returns an empty state page' do it 'returns an empty state page' do
go go
expect(response).to have_gitlab_http_status(:ok) expect(response).to have_gitlab_http_status(:ok)
expect(response).to render_template(:index, partial: :empty_state) expect(response).to render_template(:index, partial: :empty_state)
expect(assigns(:clusters)).to eq([]) expect(assigns(:clusters)).to eq([])
end
end end
end end
end end
......
...@@ -82,16 +82,6 @@ describe DeploymentPlatform do ...@@ -82,16 +82,6 @@ describe DeploymentPlatform do
end end
end end
end end
context 'feature flag disabled' do
before do
stub_feature_flags(group_clusters: false)
end
it 'returns nil' do
is_expected.to be_nil
end
end
end end
end end
end end
...@@ -866,35 +866,6 @@ describe Group do ...@@ -866,35 +866,6 @@ describe Group do
end end
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
describe '#first_auto_devops_config' do describe '#first_auto_devops_config' do
using RSpec::Parameterized::TableSyntax using RSpec::Parameterized::TableSyntax
......
...@@ -497,7 +497,6 @@ describe Project do ...@@ -497,7 +497,6 @@ describe Project do
it { is_expected.to delegate_method(:members).to(:team).with_prefix(true) } 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(: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) } it { is_expected.to delegate_method(:root_ancestor).to(:namespace).with_arguments(allow_nil: true) }
it { is_expected.to delegate_method(:last_pipeline).to(:commit).with_arguments(allow_nil: true) } it { is_expected.to delegate_method(:last_pipeline).to(:commit).with_arguments(allow_nil: true) }
end end
......
...@@ -16,21 +16,9 @@ describe Clusters::InstancePolicy do ...@@ -16,21 +16,9 @@ describe Clusters::InstancePolicy do
context 'when admin' do context 'when admin' do
let(:user) { create(:admin) } let(:user) { create(:admin) }
context 'with instance_level_clusters enabled' do it { expect(policy).to be_allowed :read_cluster }
it { expect(policy).to be_allowed :read_cluster } it { expect(policy).to be_allowed :update_cluster }
it { expect(policy).to be_allowed :update_cluster } it { expect(policy).to be_allowed :admin_cluster }
it { expect(policy).to be_allowed :admin_cluster }
end
context 'with instance_level_clusters disabled' do
before do
stub_feature_flags(instance_clusters: false)
end
it { expect(policy).to be_disallowed :read_cluster }
it { expect(policy).to be_disallowed :update_cluster }
it { expect(policy).to be_disallowed :admin_cluster }
end
end end
end end
end end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment