From 2eceee7c7570d3c1a28d54a736179e614c6a351f Mon Sep 17 00:00:00 2001
From: Rajendra Kadam <rkadam@gitlab.com>
Date: Wed, 7 Jun 2023 14:13:50 +0000
Subject: [PATCH] Remove/Update alerts controller, specs and prometheus proxy
 class

* Remove promoetheus proxy
* Remove alerts controller
* Remove alerts controller specs
---
 app/controllers/clusters/base_controller.rb   |   2 +-
 .../clusters/clusters_controller.rb           |   1 -
 .../metrics/dashboard/prometheus_api_proxy.rb |  53 ------
 .../environments/prometheus_api_controller.rb |  20 ---
 .../projects/prometheus/alerts_controller.rb  |  21 ---
 .../admin/clusters_controller_spec.rb         |  10 --
 .../admin/clusters_controller_spec.rb         |  68 --------
 .../groups/clusters_controller_spec.rb        |  75 --------
 .../projects/clusters_controller_spec.rb      |  86 ---------
 .../prometheus_api_controller_spec.rb         |  96 -----------
 .../prometheus/alerts_controller_spec.rb      |  71 --------
 .../clusters/cluster_health_dashboard_spec.rb | 126 --------------
 .../prometheus_api_proxy_shared_examples.rb   | 163 ------------------
 13 files changed, 1 insertion(+), 791 deletions(-)
 delete mode 100644 app/controllers/concerns/metrics/dashboard/prometheus_api_proxy.rb
 delete mode 100644 app/controllers/projects/environments/prometheus_api_controller.rb
 delete mode 100644 spec/controllers/projects/environments/prometheus_api_controller_spec.rb
 delete mode 100644 spec/features/clusters/cluster_health_dashboard_spec.rb
 delete mode 100644 spec/support/shared_examples/controllers/metrics/dashboard/prometheus_api_proxy_shared_examples.rb

diff --git a/app/controllers/clusters/base_controller.rb b/app/controllers/clusters/base_controller.rb
index dd5be596ad14c..e7b76b87ad948 100644
--- a/app/controllers/clusters/base_controller.rb
+++ b/app/controllers/clusters/base_controller.rb
@@ -10,7 +10,7 @@ class Clusters::BaseController < ApplicationController
 
   feature_category :deployment_management
   urgency :low, [
-    :index, :show, :environments, :cluster_status, :prometheus_proxy,
+    :index, :show, :environments, :cluster_status,
     :destroy, :new_cluster_docs, :connect, :new, :create_user
   ]
 
diff --git a/app/controllers/clusters/clusters_controller.rb b/app/controllers/clusters/clusters_controller.rb
index 873aa5e18dc27..2f6331a682257 100644
--- a/app/controllers/clusters/clusters_controller.rb
+++ b/app/controllers/clusters/clusters_controller.rb
@@ -2,7 +2,6 @@
 
 class Clusters::ClustersController < Clusters::BaseController
   include RoutableActions
-  include Metrics::Dashboard::PrometheusApiProxy
   include MetricsDashboard
 
   before_action :cluster, only: [:cluster_status, :show, :update, :destroy, :clear_cache]
diff --git a/app/controllers/concerns/metrics/dashboard/prometheus_api_proxy.rb b/app/controllers/concerns/metrics/dashboard/prometheus_api_proxy.rb
deleted file mode 100644
index 6a24a7308b707..0000000000000
--- a/app/controllers/concerns/metrics/dashboard/prometheus_api_proxy.rb
+++ /dev/null
@@ -1,53 +0,0 @@
-# frozen_string_literal: true
-
-module Metrics::Dashboard::PrometheusApiProxy
-  extend ActiveSupport::Concern
-  include RenderServiceResults
-
-  included do
-    before_action :authorize_read_prometheus!, only: [:prometheus_proxy]
-  end
-
-  def prometheus_proxy
-    return not_found if Feature.enabled?(:remove_monitor_metrics)
-
-    variable_substitution_result =
-      proxy_variable_substitution_service.new(proxyable, permit_params).execute
-
-    return error_response(variable_substitution_result) if variable_substitution_result[:status] == :error
-
-    prometheus_result = ::Prometheus::ProxyService.new(
-      proxyable,
-      proxy_method,
-      proxy_path,
-      variable_substitution_result[:params]
-    ).execute
-
-    return continue_polling_response if prometheus_result.nil?
-    return error_response(prometheus_result) if prometheus_result[:status] == :error
-
-    success_response(prometheus_result)
-  end
-
-  private
-
-  def proxyable
-    raise NotImplementedError, "#{self.class} must implement method: #{__callee__}"
-  end
-
-  def proxy_variable_substitution_service
-    raise NotImplementedError, "#{self.class} must implement method: #{__callee__}"
-  end
-
-  def permit_params
-    params.permit!
-  end
-
-  def proxy_method
-    request.method
-  end
-
-  def proxy_path
-    params[:proxy_path]
-  end
-end
diff --git a/app/controllers/projects/environments/prometheus_api_controller.rb b/app/controllers/projects/environments/prometheus_api_controller.rb
deleted file mode 100644
index cbb16d596a000..0000000000000
--- a/app/controllers/projects/environments/prometheus_api_controller.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# frozen_string_literal: true
-
-class Projects::Environments::PrometheusApiController < Projects::ApplicationController
-  include Metrics::Dashboard::PrometheusApiProxy
-
-  before_action :proxyable
-
-  feature_category :metrics
-  urgency :low
-
-  private
-
-  def proxyable
-    @proxyable ||= project.environments.find(params[:id])
-  end
-
-  def proxy_variable_substitution_service
-    ::Prometheus::ProxyVariableSubstitutionService
-  end
-end
diff --git a/app/controllers/projects/prometheus/alerts_controller.rb b/app/controllers/projects/prometheus/alerts_controller.rb
index 27ac64e5758de..80a8dbf4729eb 100644
--- a/app/controllers/projects/prometheus/alerts_controller.rb
+++ b/app/controllers/projects/prometheus/alerts_controller.rb
@@ -3,8 +3,6 @@
 module Projects
   module Prometheus
     class AlertsController < Projects::ApplicationController
-      include MetricsDashboard
-
       respond_to :json
 
       protect_from_forgery except: [:notify]
@@ -14,7 +12,6 @@ class AlertsController < Projects::ApplicationController
       prepend_before_action :repository, :project_without_auth, only: [:notify]
 
       before_action :authorize_read_prometheus_alerts!, except: [:notify]
-      before_action :alert, only: [:metrics_dashboard]
 
       feature_category :incident_management
       urgency :low
@@ -33,17 +30,6 @@ def notify_service
           .new(project, params.permit!)
       end
 
-      def alert
-        @alert ||= alerts_finder(metric: params[:id]).execute.first || render_404
-      end
-
-      def alerts_finder(opts = {})
-        Projects::Prometheus::AlertsFinder.new({
-          project: project,
-          environment: params[:environment_id]
-        }.reverse_merge(opts))
-      end
-
       def extract_alert_manager_token(request)
         Doorkeeper::OAuth::Token.from_bearer_authorization(request)
       end
@@ -52,13 +38,6 @@ def project_without_auth
         @project ||= Project
           .find_by_full_path("#{params[:namespace_id]}/#{params[:project_id]}")
       end
-
-      def metrics_dashboard_params
-        {
-          embedded: true,
-          prometheus_alert_id: alert.id
-        }
-      end
     end
   end
 end
diff --git a/ee/spec/controllers/admin/clusters_controller_spec.rb b/ee/spec/controllers/admin/clusters_controller_spec.rb
index 844343870514c..b079d092d3196 100644
--- a/ee/spec/controllers/admin/clusters_controller_spec.rb
+++ b/ee/spec/controllers/admin/clusters_controller_spec.rb
@@ -76,14 +76,4 @@ def get_cluster
       get_cluster
     end
   end
-
-  private
-
-  def prometheus_proxy_params(params = {})
-    {
-      id: cluster.id.to_s,
-      proxy_path: 'query',
-      query: '1'
-    }.merge(params)
-  end
 end
diff --git a/spec/controllers/admin/clusters_controller_spec.rb b/spec/controllers/admin/clusters_controller_spec.rb
index d04cd20f4e65b..35bfb829bf717 100644
--- a/spec/controllers/admin/clusters_controller_spec.rb
+++ b/spec/controllers/admin/clusters_controller_spec.rb
@@ -102,39 +102,6 @@ def get_index(params = {})
     end
   end
 
-  it_behaves_like 'GET #metrics_dashboard for dashboard', 'Cluster health' do
-    let(:cluster) { create(:cluster, :instance, :provided_by_gcp) }
-
-    let(:metrics_dashboard_req_params) do
-      {
-        id: cluster.id
-      }
-    end
-  end
-
-  describe 'GET #prometheus_proxy' do
-    let(:user) { admin }
-    let(:proxyable) do
-      create(:cluster, :instance, :provided_by_gcp)
-    end
-
-    it_behaves_like 'metrics dashboard prometheus api proxy' do
-      context 'with anonymous user' do
-        let(:prometheus_body) { nil }
-
-        before do
-          sign_out(admin)
-        end
-
-        it 'returns 404' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to have_gitlab_http_status(:not_found)
-        end
-      end
-    end
-  end
-
   describe 'POST #create_user' do
     let(:params) do
       {
@@ -283,41 +250,6 @@ def get_show(tab: nil)
       let(:subject) { get_show }
     end
 
-    describe 'functionality' do
-      context 'when remove_monitor_metrics FF is disabled' do
-        before do
-          stub_feature_flags(remove_monitor_metrics: false)
-        end
-
-        render_views
-
-        it 'responds successfully' do
-          get_show
-
-          expect(response).to have_gitlab_http_status(:ok)
-          expect(assigns(:cluster)).to eq(cluster)
-        end
-
-        it 'renders integration tab view' do
-          get_show(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_integrations')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-
-      context 'when remove_monitor_metrics FF is enabled' do
-        render_views
-
-        it 'renders details tab view' do
-          get_show(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_details')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-    end
-
     describe 'security' do
       it { expect { get_show }.to be_allowed_for(:admin) }
       it { expect { get_show }.to be_denied_for(:user) }
diff --git a/spec/controllers/groups/clusters_controller_spec.rb b/spec/controllers/groups/clusters_controller_spec.rb
index f36494c3d7826..6c747d4f00f75 100644
--- a/spec/controllers/groups/clusters_controller_spec.rb
+++ b/spec/controllers/groups/clusters_controller_spec.rb
@@ -115,46 +115,6 @@ def go(params = {})
     end
   end
 
-  it_behaves_like 'GET #metrics_dashboard for dashboard', 'Cluster health' do
-    let(:cluster) { create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group]) }
-
-    let(:metrics_dashboard_req_params) do
-      {
-        id: cluster.id,
-        group_id: group.name
-      }
-    end
-  end
-
-  describe 'GET #prometheus_proxy' do
-    let(:proxyable) do
-      create(:cluster, :provided_by_gcp, cluster_type: :group_type, groups: [group])
-    end
-
-    it_behaves_like 'metrics dashboard prometheus api proxy' do
-      let(:proxyable_params) do
-        {
-          id: proxyable.id.to_s,
-          group_id: group.name
-        }
-      end
-
-      context 'with anonymous user' do
-        let(:prometheus_body) { nil }
-
-        before do
-          sign_out(user)
-        end
-
-        it 'returns 404' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to have_gitlab_http_status(:not_found)
-        end
-      end
-    end
-  end
-
   describe 'POST create for existing cluster' do
     let(:params) do
       {
@@ -353,41 +313,6 @@ def go(tab: nil)
       let(:subject) { go }
     end
 
-    describe 'functionality' do
-      context 'when remove_monitor_metrics FF is disabled' do
-        before do
-          stub_feature_flags(remove_monitor_metrics: false)
-        end
-
-        render_views
-
-        it 'renders view' do
-          go
-
-          expect(response).to have_gitlab_http_status(:ok)
-          expect(assigns(:cluster)).to eq(cluster)
-        end
-
-        it 'renders integration tab view', :aggregate_failures do
-          go(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_integrations')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-
-      context 'when remove_monitor_metrics FF is enabled' do
-        render_views
-
-        it 'renders details tab view', :aggregate_failures do
-          go(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_details')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-    end
-
     describe 'security' do
       it('is allowed for admin when admin mode is enabled', :enable_admin_mode) { expect { go }.to be_allowed_for(:admin) }
       it('is denied for admin when admin mode is disabled') { expect { go }.to be_denied_for(:admin) }
diff --git a/spec/controllers/projects/clusters_controller_spec.rb b/spec/controllers/projects/clusters_controller_spec.rb
index f976b5bfe670e..bface88667401 100644
--- a/spec/controllers/projects/clusters_controller_spec.rb
+++ b/spec/controllers/projects/clusters_controller_spec.rb
@@ -113,57 +113,6 @@ def go(params = {})
     end
   end
 
-  describe 'GET #prometheus_proxy' do
-    let(:proxyable) do
-      create(:cluster, :provided_by_gcp, projects: [project])
-    end
-
-    it_behaves_like 'metrics dashboard prometheus api proxy' do
-      let(:proxyable_params) do
-        {
-          id: proxyable.id.to_s,
-          namespace_id: project.namespace.full_path,
-          project_id: project.path
-        }
-      end
-
-      context 'with anonymous user' do
-        let(:prometheus_body) { nil }
-
-        before do
-          sign_out(user)
-        end
-
-        it 'redirects to signin page' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to redirect_to(new_user_session_path)
-        end
-      end
-
-      context 'with a public project' do
-        before do
-          project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
-          project.project_feature.update!(metrics_dashboard_access_level: ProjectFeature::ENABLED)
-        end
-
-        context 'with guest user' do
-          let(:prometheus_body) { nil }
-
-          before do
-            project.add_guest(user)
-          end
-
-          it 'returns 404' do
-            get :prometheus_proxy, params: prometheus_proxy_params
-
-            expect(response).to have_gitlab_http_status(:not_found)
-          end
-        end
-      end
-    end
-  end
-
   it_behaves_like 'GET #metrics_dashboard for dashboard', 'Cluster health' do
     let(:cluster) { create(:cluster, :provided_by_gcp, projects: [project]) }
 
@@ -396,41 +345,6 @@ def go(tab: nil)
       let(:subject) { go }
     end
 
-    describe 'functionality' do
-      context 'when remove_monitor_metrics FF is disabled' do
-        before do
-          stub_feature_flags(remove_monitor_metrics: false)
-        end
-
-        render_views
-
-        it "renders view" do
-          go
-
-          expect(response).to have_gitlab_http_status(:ok)
-          expect(assigns(:cluster)).to eq(cluster)
-        end
-
-        it 'renders integration tab view' do
-          go(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_integrations')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-
-      context 'when remove_monitor_metrics FF is enabled' do
-        render_views
-
-        it 'renders details tab view', :aggregate_failures do
-          go(tab: 'integrations')
-
-          expect(response).to render_template('clusters/clusters/_details')
-          expect(response).to have_gitlab_http_status(:ok)
-        end
-      end
-    end
-
     describe 'security' do
       it 'is allowed for admin when admin mode enabled', :enable_admin_mode do
         expect { go }.to be_allowed_for(:admin)
diff --git a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb b/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
deleted file mode 100644
index ef2d743c82f70..0000000000000
--- a/spec/controllers/projects/environments/prometheus_api_controller_spec.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe Projects::Environments::PrometheusApiController do
-  let_it_be(:user) { create(:user) }
-  let_it_be_with_reload(:project) { create(:project) }
-  let_it_be(:proxyable) { create(:environment, project: project) }
-
-  before do
-    project.add_reporter(user)
-    sign_in(user)
-  end
-
-  describe 'GET #prometheus_proxy' do
-    it_behaves_like 'metrics dashboard prometheus api proxy' do
-      let(:proxyable_params) do
-        {
-          id: proxyable.id.to_s,
-          namespace_id: project.namespace.full_path,
-          project_id: project.path
-        }
-      end
-
-      context 'with variables' do
-        let(:prometheus_body) { '{"status":"success"}' }
-        let(:pod_name) { "pod1" }
-
-        before do
-          expected_params[:query] = %{up{pod_name="#{pod_name}"}}
-          expected_params[:variables] = { 'pod_name' => pod_name }
-        end
-
-        it 'replaces variables with values' do
-          get :prometheus_proxy, params: prometheus_proxy_params.merge(
-            query: 'up{pod_name="{{pod_name}}"}', variables: { 'pod_name' => pod_name }
-          )
-
-          expect(response).to have_gitlab_http_status(:success)
-          expect(Prometheus::ProxyService).to have_received(:new)
-                                                .with(proxyable, 'GET', 'query', expected_params)
-        end
-
-        context 'with invalid variables' do
-          let(:params_with_invalid_variables) do
-            prometheus_proxy_params.merge(
-              query: 'up{pod_name="{{pod_name}}"}', variables: ['a']
-            )
-          end
-
-          it 'returns 400' do
-            get :prometheus_proxy, params: params_with_invalid_variables
-
-            expect(response).to have_gitlab_http_status(:bad_request)
-            expect(Prometheus::ProxyService).not_to receive(:new)
-          end
-        end
-      end
-
-      context 'with anonymous user' do
-        let(:prometheus_body) { nil }
-
-        before do
-          sign_out(user)
-        end
-
-        it 'redirects to signin page' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to redirect_to(new_user_session_path)
-        end
-      end
-
-      context 'with a public project' do
-        before do
-          project.update!(visibility_level: Gitlab::VisibilityLevel::PUBLIC)
-          project.project_feature.update!(metrics_dashboard_access_level: ProjectFeature::ENABLED)
-        end
-
-        context 'with guest user' do
-          let(:prometheus_body) { nil }
-
-          before do
-            project.add_guest(user)
-          end
-
-          it 'returns 404' do
-            get :prometheus_proxy, params: prometheus_proxy_params
-
-            expect(response).to have_gitlab_http_status(:not_found)
-          end
-        end
-      end
-    end
-  end
-end
diff --git a/spec/controllers/projects/prometheus/alerts_controller_spec.rb b/spec/controllers/projects/prometheus/alerts_controller_spec.rb
index 44292b9ce194d..3e64631fbf1c0 100644
--- a/spec/controllers/projects/prometheus/alerts_controller_spec.rb
+++ b/spec/controllers/projects/prometheus/alerts_controller_spec.rb
@@ -6,7 +6,6 @@
   let_it_be(:user) { create(:user) }
   let_it_be(:project) { create(:project) }
   let_it_be(:environment) { create(:environment, project: project) }
-  let_it_be(:metric) { create(:prometheus_metric, project: project) }
 
   before do
     project.add_maintainer(user)
@@ -43,16 +42,6 @@
     end
   end
 
-  shared_examples 'project non-specific metric' do |status|
-    let(:other) { create(:prometheus_alert) }
-
-    it "returns #{status}" do
-      make_request(id: other.prometheus_metric_id)
-
-      expect(response).to have_gitlab_http_status(status)
-    end
-  end
-
   describe 'POST #notify' do
     let(:alert_1) { build(:alert_management_alert, :prometheus, project: project) }
     let(:alert_2) { build(:alert_management_alert, :prometheus, project: project) }
@@ -115,67 +104,7 @@
     end
   end
 
-  describe 'GET #metrics_dashboard', feature_category: :metrics do
-    let!(:alert) do
-      create(:prometheus_alert, project: project, environment: environment, prometheus_metric: metric)
-    end
-
-    before do
-      stub_feature_flags(remove_monitor_metrics: false)
-    end
-
-    it 'returns a json object with the correct keys' do
-      get :metrics_dashboard, params: request_params(id: metric.id, environment_id: alert.environment.id), format: :json
-
-      expect(response).to have_gitlab_http_status(:ok)
-      expect(json_response.keys).to contain_exactly('dashboard', 'status', 'metrics_data')
-    end
-
-    it 'is the correct embed' do
-      get :metrics_dashboard, params: request_params(id: metric.id, environment_id: alert.environment.id), format: :json
-
-      title = json_response['dashboard']['panel_groups'][0]['panels'][0]['title']
-
-      expect(title).to eq(metric.title)
-    end
-
-    it 'finds the first alert embed without environment_id' do
-      get :metrics_dashboard, params: request_params(id: metric.id), format: :json
-
-      title = json_response['dashboard']['panel_groups'][0]['panels'][0]['title']
-
-      expect(title).to eq(metric.title)
-    end
-
-    it 'returns 404 for non-existant alerts' do
-      get :metrics_dashboard, params: request_params(id: 0), format: :json
-
-      expect(response).to have_gitlab_http_status(:not_found)
-    end
-
-    it 'returns 404 when metrics dashboard feature is unavailable' do
-      stub_feature_flags(remove_monitor_metrics: true)
-
-      get :metrics_dashboard, params: request_params(id: 0), format: :json
-
-      expect(response).to have_gitlab_http_status(:not_found)
-    end
-  end
-
   def project_params(opts = {})
     opts.reverse_merge(namespace_id: project.namespace, project_id: project)
   end
-
-  def request_params(opts = {}, defaults = {})
-    project_params(opts.reverse_merge(defaults))
-  end
-
-  def alert_path(alert)
-    project_prometheus_alert_path(
-      project,
-      alert.prometheus_metric_id,
-      environment_id: alert.environment,
-      format: :json
-    )
-  end
 end
diff --git a/spec/features/clusters/cluster_health_dashboard_spec.rb b/spec/features/clusters/cluster_health_dashboard_spec.rb
deleted file mode 100644
index e932f8c6b98ef..0000000000000
--- a/spec/features/clusters/cluster_health_dashboard_spec.rb
+++ /dev/null
@@ -1,126 +0,0 @@
-# frozen_string_literal: true
-
-require 'spec_helper'
-
-RSpec.describe 'Cluster Health board', :js, :kubeclient, :use_clean_rails_memory_store_caching, :sidekiq_inline,
-feature_category: :deployment_management do
-  include KubernetesHelpers
-  include PrometheusHelpers
-
-  let_it_be(:current_user) { create(:user) }
-  let_it_be(:clusterable) { create(:project) }
-  let_it_be(:cluster) { create(:cluster, :provided_by_gcp, :project, projects: [clusterable]) }
-  let_it_be(:cluster_path) { project_cluster_path(clusterable, cluster) }
-
-  before do
-    stub_feature_flags(remove_monitor_metrics: false)
-
-    clusterable.add_maintainer(current_user)
-
-    sign_in(current_user)
-  end
-
-  it 'shows cluster board section within the page' do
-    visit cluster_path
-
-    expect(page).to have_text('Health')
-
-    click_link 'Health'
-
-    expect(page).to have_css('.cluster-health-graphs')
-  end
-
-  context 'feature remove_monitor_metrics enabled' do
-    before do
-      stub_feature_flags(remove_monitor_metrics: true)
-    end
-
-    it 'does not show the cluster health tab' do
-      visit cluster_path
-
-      expect(page).not_to have_text('Health')
-    end
-
-    it 'does not show the cluster health section' do
-      visit project_cluster_path(clusterable, cluster, { tab: 'health' })
-
-      expect(page).not_to have_text('you must first enable Prometheus in the Integrations tab')
-    end
-  end
-
-  context 'no prometheus available' do
-    it 'shows enable Prometheus message' do
-      visit cluster_path
-
-      click_link 'Health'
-
-      expect(page).to have_text('you must first enable Prometheus in the Integrations tab')
-    end
-  end
-
-  context 'when there is cluster with enabled prometheus' do
-    before do
-      create(:clusters_integrations_prometheus, enabled: true, cluster: cluster)
-      stub_kubeclient_discover(cluster.platform.api_url)
-    end
-
-    context 'waiting for data' do
-      before do
-        stub_empty_response
-      end
-
-      it 'shows container and waiting for data message' do
-        visit cluster_path
-
-        click_link 'Health'
-
-        wait_for_requests
-
-        expect(page).to have_css('.prometheus-graphs')
-        expect(page).to have_text('Waiting for performance data')
-      end
-    end
-
-    context 'connected, prometheus returns data' do
-      before do
-        stub_connected
-
-        visit cluster_path
-
-        click_link 'Health'
-
-        wait_for_requests
-      end
-
-      it 'renders charts' do
-        expect(page).to have_css('.prometheus-graphs')
-        expect(page).to have_css('.prometheus-graph')
-        expect(page).to have_css('.prometheus-graph-title')
-        expect(page).to have_css('[_echarts_instance_]')
-        expect(page).to have_css('.prometheus-graph', count: 2)
-        expect(page).to have_content('Avg')
-      end
-
-      it 'focuses the single panel on toggle' do
-        click_button('More actions', match: :first)
-        click_button('Expand panel')
-
-        expect(page).to have_css('.prometheus-graph', count: 1)
-
-        click_button('Collapse panel')
-
-        expect(page).to have_css('.prometheus-graph', count: 2)
-      end
-    end
-
-    def stub_empty_response
-      stub_prometheus_request(/prometheus-prometheus-server/, status: 204, body: {})
-      stub_prometheus_request(%r{prometheus/api/v1}, status: 204, body: {})
-    end
-
-    def stub_connected
-      stub_prometheus_request(/prometheus-prometheus-server/, body: prometheus_values_body)
-      stub_prometheus_request(%r{prometheus/api/v1}, body: prometheus_values_body)
-    end
-  end
-end
diff --git a/spec/support/shared_examples/controllers/metrics/dashboard/prometheus_api_proxy_shared_examples.rb b/spec/support/shared_examples/controllers/metrics/dashboard/prometheus_api_proxy_shared_examples.rb
deleted file mode 100644
index 9cdde13b36b01..0000000000000
--- a/spec/support/shared_examples/controllers/metrics/dashboard/prometheus_api_proxy_shared_examples.rb
+++ /dev/null
@@ -1,163 +0,0 @@
-# frozen_string_literal: true
-
-RSpec.shared_examples_for 'metrics dashboard prometheus api proxy' do
-  let(:service_params) { [proxyable, 'GET', 'query', expected_params] }
-  let(:service_result) { { status: :success, body: prometheus_body } }
-  let(:prometheus_proxy_service) { instance_double(Prometheus::ProxyService) }
-  let(:proxyable_params) do
-    {
-      id: proxyable.id.to_s
-    }
-  end
-
-  let(:expected_params) do
-    ActionController::Parameters.new(
-      prometheus_proxy_params(
-        proxy_path: 'query',
-        controller: described_class.controller_path,
-        action: 'prometheus_proxy'
-      )
-    ).permit!
-  end
-
-  before do
-    stub_feature_flags(remove_monitor_metrics: false)
-
-    allow_next_instance_of(Prometheus::ProxyService, *service_params) do |proxy_service|
-      allow(proxy_service).to receive(:execute).and_return(service_result)
-    end
-  end
-
-  context 'with valid requests' do
-    context 'with success result' do
-      let(:prometheus_body) { '{"status":"success"}' }
-      let(:prometheus_json_body) { Gitlab::Json.parse(prometheus_body) }
-
-      it 'returns prometheus response' do
-        get :prometheus_proxy, params: prometheus_proxy_params
-
-        expect(Prometheus::ProxyService).to have_received(:new).with(*service_params)
-        expect(response).to have_gitlab_http_status(:ok)
-        expect(json_response).to eq(prometheus_json_body)
-      end
-
-      context 'with nil query' do
-        let(:params_without_query) do
-          prometheus_proxy_params.except(:query)
-        end
-
-        before do
-          expected_params.delete(:query)
-        end
-
-        it 'does not raise error' do
-          get :prometheus_proxy, params: params_without_query
-
-          expect(Prometheus::ProxyService).to have_received(:new).with(*service_params)
-        end
-      end
-    end
-
-    context 'with nil result' do
-      let(:service_result) { nil }
-
-      it 'returns 204 no_content' do
-        get :prometheus_proxy, params: prometheus_proxy_params
-
-        expect(json_response['status']).to eq(_('processing'))
-        expect(json_response['message']).to eq(_('Not ready yet. Try again later.'))
-        expect(response).to have_gitlab_http_status(:no_content)
-      end
-    end
-
-    context 'with 404 result' do
-      let(:service_result) { { http_status: 404, status: :success, body: '{"body": "value"}' } }
-
-      it 'returns body' do
-        get :prometheus_proxy, params: prometheus_proxy_params
-
-        expect(response).to have_gitlab_http_status(:not_found)
-        expect(json_response['body']).to eq('value')
-      end
-    end
-
-    context 'with error result' do
-      context 'with http_status' do
-        let(:service_result) do
-          { http_status: :service_unavailable, status: :error, message: 'error message' }
-        end
-
-        it 'sets the http response status code' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to have_gitlab_http_status(:service_unavailable)
-          expect(json_response['status']).to eq('error')
-          expect(json_response['message']).to eq('error message')
-        end
-      end
-
-      context 'without http_status' do
-        let(:service_result) { { status: :error, message: 'error message' } }
-
-        it 'returns bad_request' do
-          get :prometheus_proxy, params: prometheus_proxy_params
-
-          expect(response).to have_gitlab_http_status(:bad_request)
-          expect(json_response['status']).to eq('error')
-          expect(json_response['message']).to eq('error message')
-        end
-      end
-    end
-
-    context 'when metrics dashboard feature is unavailable' do
-      before do
-        stub_feature_flags(remove_monitor_metrics: true)
-      end
-
-      it 'returns 404 not found' do
-        get :prometheus_proxy, params: prometheus_proxy_params
-
-        expect(response).to have_gitlab_http_status(:not_found)
-        expect(response.body).to be_empty
-      end
-    end
-  end
-
-  context 'with inappropriate requests' do
-    let(:prometheus_body) { nil }
-
-    context 'without correct permissions' do
-      let(:user2) { create(:user) }
-
-      before do
-        sign_out(user)
-        sign_in(user2)
-      end
-
-      it 'returns 404' do
-        get :prometheus_proxy, params: prometheus_proxy_params
-
-        expect(response).to have_gitlab_http_status(:not_found)
-      end
-    end
-  end
-
-  context 'with invalid proxyable id' do
-    let(:prometheus_body) { nil }
-
-    it 'returns 404' do
-      get :prometheus_proxy, params: prometheus_proxy_params(id: proxyable.id + 1)
-
-      expect(response).to have_gitlab_http_status(:not_found)
-    end
-  end
-
-  private
-
-  def prometheus_proxy_params(params = {})
-    {
-      proxy_path: 'query',
-      query: '1'
-    }.merge(proxyable_params).merge(params)
-  end
-end
-- 
GitLab