diff --git a/changelogs/unreleased/7527-ci-variables-are-not-parameterized-for-alerting-rules-ce.yml b/changelogs/unreleased/7527-ci-variables-are-not-parameterized-for-alerting-rules-ce.yml new file mode 100644 index 00000000000..c44206dde63 --- /dev/null +++ b/changelogs/unreleased/7527-ci-variables-are-not-parameterized-for-alerting-rules-ce.yml @@ -0,0 +1,5 @@ +--- +title: Extract into Gitlab::Prometheus::QueryVariables +merge_request: 23335 +author: +type: other diff --git a/lib/gitlab/prometheus/queries/query_additional_metrics.rb b/lib/gitlab/prometheus/queries/query_additional_metrics.rb index 43508af96a7..960d3536ec0 100644 --- a/lib/gitlab/prometheus/queries/query_additional_metrics.rb +++ b/lib/gitlab/prometheus/queries/query_additional_metrics.rb @@ -83,11 +83,8 @@ module Gitlab end def common_query_context(environment, timeframe_start:, timeframe_end:) - base_query_context(timeframe_start, timeframe_end).merge({ - ci_environment_slug: environment.slug, - kube_namespace: environment.deployment_platform&.actual_namespace || '', - environment_filter: %{container_name!="POD",environment="#{environment.slug}"} - }) + base_query_context(timeframe_start, timeframe_end) + .merge(QueryVariables.call(environment)) end def base_query_context(timeframe_start, timeframe_end) diff --git a/lib/gitlab/prometheus/query_variables.rb b/lib/gitlab/prometheus/query_variables.rb new file mode 100644 index 00000000000..1cc85d4b4a6 --- /dev/null +++ b/lib/gitlab/prometheus/query_variables.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +module Gitlab + module Prometheus + module QueryVariables + def self.call(environment) + { + ci_environment_slug: environment.slug, + kube_namespace: environment.deployment_platform&.actual_namespace || '', + environment_filter: %{container_name!="POD",environment="#{environment.slug}"} + } + end + end + end +end diff --git a/spec/lib/gitlab/prometheus/query_variables_spec.rb b/spec/lib/gitlab/prometheus/query_variables_spec.rb new file mode 100644 index 00000000000..78974cadb69 --- /dev/null +++ b/spec/lib/gitlab/prometheus/query_variables_spec.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::Prometheus::QueryVariables do + describe '.call' do + set(:environment) { create(:environment) } + let(:slug) { environment.slug } + + subject { described_class.call(environment) } + + it { is_expected.to include(ci_environment_slug: slug) } + + it do + is_expected.to include(environment_filter: + %{container_name!="POD",environment="#{slug}"}) + end + + context 'without deployment platform' do + it { is_expected.to include(kube_namespace: '') } + end + + context 'with deplyoment platform' do + let(:kube_namespace) { environment.deployment_platform.actual_namespace } + + before do + create(:cluster, :provided_by_user, projects: [environment.project]) + end + + it { is_expected.to include(kube_namespace: kube_namespace) } + end + end +end