Commit fa5a6ae1 authored by Tiger's avatar Tiger

Stop configuring group clusters on creation

Immediate configuration is not ideal for group and instance
level clusters as projects that may never be deployed would
still have Kubernetes namespaces and service accounts created
for them.

As of https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/25586
we now create only the resources that are required for the
project being deployed, at the time of deployment.
parent e9ed0284
...@@ -378,8 +378,6 @@ module Ci ...@@ -378,8 +378,6 @@ module Ci
end end
def any_unmet_prerequisites? def any_unmet_prerequisites?
return false unless Feature.enabled?(:ci_preparing_state, default_enabled: true)
prerequisites.present? prerequisites.present?
end end
......
...@@ -21,11 +21,7 @@ module Clusters ...@@ -21,11 +21,7 @@ module Clusters
private_class_method :projects_with_missing_kubernetes_namespaces_for_cluster private_class_method :projects_with_missing_kubernetes_namespaces_for_cluster
def self.clusters_with_missing_kubernetes_namespaces_for_project(project) def self.clusters_with_missing_kubernetes_namespaces_for_project(project)
if Feature.enabled?(:ci_preparing_state, default_enabled: true)
project.clusters.managed.missing_kubernetes_namespace(project.kubernetes_namespaces) project.clusters.managed.missing_kubernetes_namespace(project.kubernetes_namespaces)
else
project.all_clusters.managed.missing_kubernetes_namespace(project.kubernetes_namespaces)
end
end end
private_class_method :clusters_with_missing_kubernetes_namespaces_for_project private_class_method :clusters_with_missing_kubernetes_namespaces_for_project
......
...@@ -100,8 +100,6 @@ module Projects ...@@ -100,8 +100,6 @@ module Projects
current_user.invalidate_personal_projects_count current_user.invalidate_personal_projects_count
create_readme if @initialize_with_readme create_readme if @initialize_with_readme
configure_group_clusters_for_project
end end
# Refresh the current user's authorizations inline (so they can access the # Refresh the current user's authorizations inline (so they can access the
...@@ -127,10 +125,6 @@ module Projects ...@@ -127,10 +125,6 @@ module Projects
Files::CreateService.new(@project, current_user, commit_attrs).execute Files::CreateService.new(@project, current_user, commit_attrs).execute
end end
def configure_group_clusters_for_project
ClusterProjectConfigureWorker.perform_async(@project.id)
end
def skip_wiki? def skip_wiki?
!@project.feature_available?(:wiki, current_user) || @skip_wiki !@project.feature_available?(:wiki, current_user) || @skip_wiki
end end
......
...@@ -54,7 +54,6 @@ module Projects ...@@ -54,7 +54,6 @@ module Projects
end end
attempt_transfer_transaction attempt_transfer_transaction
configure_group_clusters_for_project
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
...@@ -164,9 +163,5 @@ module Projects ...@@ -164,9 +163,5 @@ module Projects
@new_namespace.full_path @new_namespace.full_path
) )
end end
def configure_group_clusters_for_project
ClusterProjectConfigureWorker.perform_async(project.id)
end
end end
end end
...@@ -6,7 +6,7 @@ class ClusterConfigureWorker ...@@ -6,7 +6,7 @@ class ClusterConfigureWorker
def perform(cluster_id) def perform(cluster_id)
Clusters::Cluster.managed.find_by_id(cluster_id).try do |cluster| Clusters::Cluster.managed.find_by_id(cluster_id).try do |cluster|
if cluster.project_type? || Feature.disabled?(:ci_preparing_state, default_enabled: true) if cluster.project_type?
Clusters::RefreshService.create_or_update_namespaces_for_cluster(cluster) Clusters::RefreshService.create_or_update_namespaces_for_cluster(cluster)
end end
end end
......
---
title: Remove ability for group clusters to be automatically configured on creation
merge_request: 27245
author:
type: removed
...@@ -2925,26 +2925,18 @@ describe Ci::Build do ...@@ -2925,26 +2925,18 @@ describe Ci::Build do
subject { build.any_unmet_prerequisites? } subject { build.any_unmet_prerequisites? }
context 'build has prerequisites' do
before do before do
allow(build).to receive(:prerequisites).and_return([double]) allow(build).to receive(:prerequisites).and_return(prerequisites)
end end
it { is_expected.to be_truthy } context 'build has prerequisites' do
let(:prerequisites) { [double] }
context 'and the ci_preparing_state feature is disabled' do
before do
stub_feature_flags(ci_preparing_state: false)
end
it { is_expected.to be_falsey } it { is_expected.to be_truthy }
end
end end
context 'build does not have prerequisites' do context 'build does not have prerequisites' do
before do let(:prerequisites) { [] }
allow(build).to receive(:prerequisites).and_return([])
end
it { is_expected.to be_falsey } it { is_expected.to be_falsey }
end end
......
...@@ -93,7 +93,6 @@ describe Clusters::RefreshService do ...@@ -93,7 +93,6 @@ describe Clusters::RefreshService do
let(:group) { cluster.group } let(:group) { cluster.group }
let(:project) { create(:project, group: group) } let(:project) { create(:project, group: group) }
context 'when ci_preparing_state feature flag is enabled' do
include_examples 'does not create a kubernetes namespace' include_examples 'does not create a kubernetes namespace'
context 'when project already has kubernetes namespace' do context 'when project already has kubernetes namespace' do
...@@ -105,23 +104,6 @@ describe Clusters::RefreshService do ...@@ -105,23 +104,6 @@ describe Clusters::RefreshService do
end end
end end
context 'when ci_preparing_state feature flag is disabled' do
before do
stub_feature_flags(ci_preparing_state: false)
end
include_examples 'creates a kubernetes namespace'
context 'when project already has kubernetes namespace' do
before do
create(:cluster_kubernetes_namespace, project: project, cluster: cluster)
end
include_examples 'does not create a kubernetes namespace'
end
end
end
context 'cluster is not managed' do context 'cluster is not managed' do
let!(:cluster) { create(:cluster, :project, :not_managed, projects: [project]) } let!(:cluster) { create(:cluster, :project, :not_managed, projects: [project]) }
......
...@@ -268,33 +268,6 @@ describe Projects::CreateService, '#execute' do ...@@ -268,33 +268,6 @@ describe Projects::CreateService, '#execute' do
end end
end end
context 'when group has kubernetes cluster' do
let(:group_cluster) { create(:cluster, :group, :provided_by_gcp) }
let(:group) { group_cluster.group }
let(:token) { 'aaaa' }
let(:service_account_creator) { double(Clusters::Gcp::Kubernetes::CreateOrUpdateServiceAccountService, execute: true) }
let(:secrets_fetcher) { double(Clusters::Gcp::Kubernetes::FetchKubernetesTokenService, execute: token) }
before do
group.add_owner(user)
stub_feature_flags(ci_preparing_state: false)
expect(Clusters::Gcp::Kubernetes::CreateOrUpdateServiceAccountService).to receive(:namespace_creator).and_return(service_account_creator)
expect(Clusters::Gcp::Kubernetes::FetchKubernetesTokenService).to receive(:new).and_return(secrets_fetcher)
end
it 'creates kubernetes namespace for the project' do
project = create_project(user, opts.merge!(namespace_id: group.id))
expect(project).to be_valid
kubernetes_namespace = group_cluster.kubernetes_namespaces.first
expect(kubernetes_namespace).to be_present
expect(kubernetes_namespace.project).to eq(project)
end
end
context 'when there is an active service template' do context 'when there is an active service template' do
before do before do
create(:service, project: nil, template: true, active: true) create(:service, project: nil, template: true, active: true)
......
...@@ -73,33 +73,6 @@ describe Projects::TransferService do ...@@ -73,33 +73,6 @@ describe Projects::TransferService do
shard_name: project.repository_storage shard_name: project.repository_storage
) )
end end
context 'new group has a kubernetes cluster' do
let(:group_cluster) { create(:cluster, :group, :provided_by_gcp) }
let(:group) { group_cluster.group }
let(:token) { 'aaaa' }
let(:service_account_creator) { double(Clusters::Gcp::Kubernetes::CreateOrUpdateServiceAccountService, execute: true) }
let(:secrets_fetcher) { double(Clusters::Gcp::Kubernetes::FetchKubernetesTokenService, execute: token) }
subject { transfer_project(project, user, group) }
before do
stub_feature_flags(ci_preparing_state: false)
expect(Clusters::Gcp::Kubernetes::CreateOrUpdateServiceAccountService).to receive(:namespace_creator).and_return(service_account_creator)
expect(Clusters::Gcp::Kubernetes::FetchKubernetesTokenService).to receive(:new).and_return(secrets_fetcher)
end
it 'creates kubernetes namespace for the project' do
subject
expect(project.kubernetes_namespaces.count).to eq(1)
kubernetes_namespace = group_cluster.kubernetes_namespaces.first
expect(kubernetes_namespace).to be_present
expect(kubernetes_namespace.project).to eq(project)
end
end
end end
context 'when transfer fails' do context 'when transfer fails' do
......
...@@ -4,11 +4,6 @@ require 'spec_helper' ...@@ -4,11 +4,6 @@ require 'spec_helper'
describe ClusterConfigureWorker, '#perform' do describe ClusterConfigureWorker, '#perform' do
let(:worker) { described_class.new } let(:worker) { described_class.new }
let(:ci_preparing_state_enabled) { false }
before do
stub_feature_flags(ci_preparing_state: ci_preparing_state_enabled)
end
shared_examples 'configured cluster' do shared_examples 'configured cluster' do
it 'creates a namespace' do it 'creates a namespace' do
...@@ -33,28 +28,16 @@ describe ClusterConfigureWorker, '#perform' do ...@@ -33,28 +28,16 @@ describe ClusterConfigureWorker, '#perform' do
context 'when group has a project' do context 'when group has a project' do
let!(:project) { create(:project, group: group) } let!(:project) { create(:project, group: group) }
it_behaves_like 'configured cluster'
context 'ci_preparing_state feature is enabled' do
let(:ci_preparing_state_enabled) { true }
it_behaves_like 'unconfigured cluster' it_behaves_like 'unconfigured cluster'
end end
end
context 'when group has project in a sub-group' do context 'when group has project in a sub-group' do
let!(:subgroup) { create(:group, parent: group) } let!(:subgroup) { create(:group, parent: group) }
let!(:project) { create(:project, group: subgroup) } let!(:project) { create(:project, group: subgroup) }
it_behaves_like 'configured cluster'
context 'ci_preparing_state feature is enabled' do
let(:ci_preparing_state_enabled) { true }
it_behaves_like 'unconfigured cluster' it_behaves_like 'unconfigured cluster'
end end
end end
end
context 'when provider type is gcp' do context 'when provider type is gcp' do
let!(:cluster) { create(:cluster, :project, :provided_by_gcp) } let!(:cluster) { create(:cluster, :project, :provided_by_gcp) }
......
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