Commit 3613fed3 authored by Mayra Cabrera's avatar Mayra Cabrera

Fix deployment_platform assignation when multiple clusters & environments

Closes #5347
parent cac6a815
...@@ -6,7 +6,7 @@ module EE ...@@ -6,7 +6,7 @@ module EE
def deployment_platform(environment: nil) def deployment_platform(environment: nil)
return super unless environment && feature_available?(:multiple_clusters) return super unless environment && feature_available?(:multiple_clusters)
@deployment_platform ||= # rubocop:disable Gitlab/ModuleWithInstanceVariables @deployment_platform = # rubocop:disable Gitlab/ModuleWithInstanceVariables
clusters.enabled.on_environment(environment.name) clusters.enabled.on_environment(environment.name)
.last&.platform_kubernetes .last&.platform_kubernetes
......
---
title: Fixes incorrect assignation of cluster details
merge_request: 5047
author:
type: fixed
...@@ -4,15 +4,8 @@ describe EE::DeploymentPlatform do ...@@ -4,15 +4,8 @@ describe EE::DeploymentPlatform do
describe '#deployment_platform' do describe '#deployment_platform' do
let(:project) { create(:project) } let(:project) { create(:project) }
context 'when environment is specified' do
let(:environment) { create(:environment, project: project, name: 'review/name') }
let!(:default_cluster) { create(:cluster, :provided_by_user, projects: [project], environment_scope: '*') }
let!(:cluster) { create(:cluster, :provided_by_user, environment_scope: 'review/*', projects: [project]) }
subject { project.deployment_platform(environment: environment) }
shared_examples 'matching environment scope' do shared_examples 'matching environment scope' do
context 'when multiple clusters is available' do context 'when multiple clusters license is available' do
before do before do
stub_licensed_features(multiple_clusters: true) stub_licensed_features(multiple_clusters: true)
end end
...@@ -22,7 +15,7 @@ describe EE::DeploymentPlatform do ...@@ -22,7 +15,7 @@ describe EE::DeploymentPlatform do
end end
end end
context 'when multiple clusters is unavailable' do context 'when multiple clusters licence is unavailable' do
before do before do
stub_licensed_features(multiple_clusters: false) stub_licensed_features(multiple_clusters: false)
end end
...@@ -34,7 +27,7 @@ describe EE::DeploymentPlatform do ...@@ -34,7 +27,7 @@ describe EE::DeploymentPlatform do
end end
shared_examples 'not matching environment scope' do shared_examples 'not matching environment scope' do
context 'when multiple clusters is available' do context 'when multiple clusters license is available' do
before do before do
stub_licensed_features(multiple_clusters: true) stub_licensed_features(multiple_clusters: true)
end end
...@@ -44,7 +37,7 @@ describe EE::DeploymentPlatform do ...@@ -44,7 +37,7 @@ describe EE::DeploymentPlatform do
end end
end end
context 'when multiple clusters is unavailable' do context 'when multiple clusters license is unavailable' do
before do before do
stub_licensed_features(multiple_clusters: false) stub_licensed_features(multiple_clusters: false)
end end
...@@ -55,6 +48,13 @@ describe EE::DeploymentPlatform do ...@@ -55,6 +48,13 @@ describe EE::DeploymentPlatform do
end end
end end
context 'when environment is specified' do
let!(:default_cluster) { create(:cluster, :provided_by_user, projects: [project], environment_scope: '*') }
let!(:cluster) { create(:cluster, :provided_by_user, environment_scope: 'review/*', projects: [project]) }
let(:environment) { create(:environment, project: project, name: 'review/name') }
subject { project.deployment_platform(environment: environment) }
context 'when environment scope is exactly matched' do context 'when environment scope is exactly matched' do
before do before do
cluster.update!(environment_scope: 'review/name') cluster.update!(environment_scope: 'review/name')
...@@ -133,5 +133,21 @@ describe EE::DeploymentPlatform do ...@@ -133,5 +133,21 @@ describe EE::DeploymentPlatform do
end end
end end
end end
context 'with multiple clusters and multiple environments' do
let!(:cluster_1) { create(:cluster, :provided_by_user, projects: [project], environment_scope: 'staging/*') }
let!(:cluster_2) { create(:cluster, :provided_by_user, projects: [project], environment_scope: 'test/*') }
let(:environment_1) { create(:environment, project: project, name: 'staging/name') }
let(:environment_2) { create(:environment, project: project, name: 'test/name') }
before do
stub_licensed_features(multiple_clusters: true)
end
it 'should return the appropriate cluster' do
expect(project.deployment_platform(environment: environment_1)).to eq(cluster_1.platform_kubernetes)
expect(project.deployment_platform(environment: environment_2)).to eq(cluster_2.platform_kubernetes)
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