From 22e2cad910171bd3ed54ce65da55169c4c6d70b7 Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Sat, 24 Feb 2018 00:56:50 +0100 Subject: [PATCH] Use deployment platform to find cluster with prometheus application --- app/models/environment.rb | 8 ++--- spec/models/environment_spec.rb | 57 ++++++--------------------------- 2 files changed, 12 insertions(+), 53 deletions(-) diff --git a/app/models/environment.rb b/app/models/environment.rb index 2a91bd07b28..966ce17a48a 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -233,12 +233,10 @@ class Environment < ActiveRecord::Base end def cluster_prometheus_adapter - # sort results by descending order based on environment_scope being longer - # thus more closely matching environment slug - clusters = project.clusters.enabled.for_environment(self).sort_by { |c| c.environment_scope&.length }.reverse! + cluster = project.deployment_platform&.cluster + return unless cluster&.application_prometheus&.installed? - cluster = clusters&.detect { |cluster| cluster.application_prometheus&.installed? } - cluster&.application_prometheus + cluster.application_prometheus end private diff --git a/spec/models/environment_spec.rb b/spec/models/environment_spec.rb index 1049e47d25d..8c052888b04 100644 --- a/spec/models/environment_spec.rb +++ b/spec/models/environment_spec.rb @@ -1,7 +1,7 @@ require 'spec_helper' describe Environment do - set(:project) { create(:project) } + let(:project) { create(:project) } subject(:environment) { create(:environment, project: project) } it { is_expected.to belong_to(:project) } @@ -623,10 +623,7 @@ describe Environment do end describe '#prometheus_adapter' do - let!(:cluster_for_all) { create(:cluster, environment_scope: '*', projects: [project]) } - let!(:cluster_for_dev) { create(:cluster, environment_scope: 'dev', projects: [project]) } - - let!(:prometheus_for_dev) { create(:clusters_applications_prometheus, :installed, cluster: cluster_for_dev) } + let(:cluster) { create(:cluster, :provided_by_user, environment_scope: '*', projects: [project]) } context 'prometheus service can execute queries' do let(:prometheus_service) { double(:prometheus_service, can_query?: true) } @@ -643,53 +640,17 @@ describe Environment do context "prometheus service can't execute queries" do let(:prometheus_service) { double(:prometheus_service, can_query?: false) } - context 'with cluster for all environments with prometheus installed' do - let!(:prometheus_for_all) { create(:clusters_applications_prometheus, :installed, cluster: cluster_for_all) } + context 'with cluster with prometheus installed' do + let!(:prometheus) { create(:clusters_applications_prometheus, :installed, cluster: cluster) } - context 'without environment supplied' do - it 'returns application handling all environments' do - expect(environment.prometheus_adapter).to eq(prometheus_for_all) - end - end - - context 'with dev environment supplied' do - let!(:environment) { create(:environment, project: project, name: 'dev') } - - it 'returns dev cluster prometheus application' do - expect(environment.prometheus_adapter).to eq(prometheus_for_dev) - end - end - - context 'with prod environment supplied' do - let!(:environment) { create(:environment, project: project, name: 'prod') } - - it 'returns application handling all environments' do - expect(environment.prometheus_adapter).to eq(prometheus_for_all) - end + it 'returns application handling all environments' do + expect(environment.prometheus_adapter).to eq(prometheus) end end - context 'with cluster for all environments without prometheus installed' do - context 'without environment supplied' do - it 'returns nil' do - expect(environment.prometheus_adapter).to be_nil - end - end - - context 'with dev environment supplied' do - let!(:environment) { create(:environment, project: project, name: 'dev') } - - it 'returns dev cluster prometheus application' do - expect(environment.prometheus_adapter).to eq(prometheus_for_dev) - end - end - - context 'with prod environment supplied' do - let!(:environment) { create(:environment, project: project, name: 'prod') } - - it 'returns nil' do - expect(environment.prometheus_adapter).to be_nil - end + context 'with cluster without prometheus installed' do + it 'returns nil' do + expect(environment.prometheus_adapter).to be_nil end end end