Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/banzai/filter/inline_grafana_metrics_filter.rb')
-rw-r--r--lib/banzai/filter/inline_grafana_metrics_filter.rb79
1 files changed, 0 insertions, 79 deletions
diff --git a/lib/banzai/filter/inline_grafana_metrics_filter.rb b/lib/banzai/filter/inline_grafana_metrics_filter.rb
deleted file mode 100644
index 07bde9858e8..00000000000
--- a/lib/banzai/filter/inline_grafana_metrics_filter.rb
+++ /dev/null
@@ -1,79 +0,0 @@
-# frozen_string_literal: true
-
-module Banzai
- module Filter
- # HTML filter that inserts a placeholder element for each
- # reference to a grafana dashboard.
- class InlineGrafanaMetricsFilter < Banzai::Filter::InlineEmbedsFilter
- # Placeholder element for the frontend to use as an
- # injection point for charts.
- def create_element(params)
- begin_loading_dashboard(params[:url])
-
- super
- end
-
- # @return [Hash<Symbol, String>] with keys :grafana_url, :start, and :end
- def embed_params(node)
- query_params = Gitlab::Metrics::Dashboard::Url.parse_query(node['href'])
-
- time_window = Grafana::TimeWindow.new(query_params[:from], query_params[:to])
- url = url_with_window(node['href'], query_params, time_window.in_milliseconds)
-
- { grafana_url: url }.merge(time_window.formatted)
- end
-
- # Selects any links with an href contains the configured
- # grafana domain for the project
- def xpath_search
- return unless grafana_url.present?
-
- %(descendant-or-self::a[starts-with(@href, '#{grafana_url}')])
- end
-
- private
-
- def project
- context[:project]
- end
-
- def grafana_url
- project&.grafana_integration&.grafana_url
- end
-
- def metrics_dashboard_url(params)
- Gitlab::Routing.url_helpers.project_grafana_api_metrics_dashboard_url(
- project,
- embedded: true,
- **params
- )
- end
-
- # If the provided url is missing time window parameters,
- # this inserts the default window into the url, allowing
- # the embed service to correctly format prometheus
- # queries during embed processing.
- #
- # @param url [String]
- # @param query_params [Hash<Symbol, String>]
- # @param time_window_params [Hash<Symbol, Integer>]
- # @return [String]
- def url_with_window(url, query_params, time_window_params)
- uri = URI(url)
- uri.query = time_window_params.merge(query_params).to_query
-
- uri.to_s
- end
-
- # Fetches a dashboard and caches the result for the
- # FE to fetch quickly while rendering charts
- def begin_loading_dashboard(url)
- ::Gitlab::Metrics::Dashboard::Finder.find(
- project,
- embedded: true,
- grafana_url: url
- )
- end
- end
- end
-end