From 5ceec83a0154e513480a9bb08e252371bf7886c6 Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Mon, 5 Mar 2018 19:34:59 +0100 Subject: Implemente Prometheus:AdapterService --- .../projects/prometheus/metrics_controller.rb | 6 ++-- app/models/concerns/prometheus_adapter_locator.rb | 26 ---------------- app/models/environment.rb | 6 ++-- app/services/prometheus/adapter_service.rb | 36 ++++++++++++++++++++++ 4 files changed, 44 insertions(+), 30 deletions(-) delete mode 100644 app/models/concerns/prometheus_adapter_locator.rb create mode 100644 app/services/prometheus/adapter_service.rb (limited to 'app') diff --git a/app/controllers/projects/prometheus/metrics_controller.rb b/app/controllers/projects/prometheus/metrics_controller.rb index ec3c49059e1..523abce35fb 100644 --- a/app/controllers/projects/prometheus/metrics_controller.rb +++ b/app/controllers/projects/prometheus/metrics_controller.rb @@ -1,8 +1,6 @@ module Projects module Prometheus class MetricsController < Projects::ApplicationController - include PrometheusAdapterLocator - before_action :authorize_admin_project! before_action :require_prometheus_metrics! @@ -22,6 +20,10 @@ module Projects private + def prometheus_adapter + @prometheus_adapter ||= Prometheus::AdapterService.new(project).prometheus_adapter + end + def require_prometheus_metrics! render_404 unless prometheus_adapter.can_query? end diff --git a/app/models/concerns/prometheus_adapter_locator.rb b/app/models/concerns/prometheus_adapter_locator.rb deleted file mode 100644 index d8a3ed0de2d..00000000000 --- a/app/models/concerns/prometheus_adapter_locator.rb +++ /dev/null @@ -1,26 +0,0 @@ -module PrometheusAdapterLocator - def deployment_platform - project.deployment_platform - end - - def prometheus_adapter - @prometheus_adapter ||= if service_prometheus_adapter.can_query? - service_prometheus_adapter - else - cluster_prometheus_adapter - end - end - - def service_prometheus_adapter - project.find_or_initialize_service('prometheus') - end - - def cluster_prometheus_adapter - return unless deployment_platform.respond_to?(:cluster) - - cluster = deployment_platform.cluster - return unless cluster.application_prometheus&.installed? - - cluster.application_prometheus - end -end diff --git a/app/models/environment.rb b/app/models/environment.rb index baba023c92d..24d4f1d8761 100644 --- a/app/models/environment.rb +++ b/app/models/environment.rb @@ -1,6 +1,4 @@ class Environment < ActiveRecord::Base - include PrometheusAdapterLocator - # Used to generate random suffixes for the slug LETTERS = 'a'..'z' NUMBERS = '0'..'9' @@ -159,6 +157,10 @@ class Environment < ActiveRecord::Base prometheus_adapter.query(:additional_metrics_environment, self) if has_metrics? end + def prometheus_adapter + @prometheus_adapter ||= Prometheus::AdapterService.new(project, deployment_platform).prometheus_adapter + end + def slug super.presence || generate_slug end diff --git a/app/services/prometheus/adapter_service.rb b/app/services/prometheus/adapter_service.rb new file mode 100644 index 00000000000..4504d2ccfe6 --- /dev/null +++ b/app/services/prometheus/adapter_service.rb @@ -0,0 +1,36 @@ +module Prometheus + class AdapterService + def initialize(project, deployment_platform = nil) + @project = project + + @deployment_platform = if deployment_platform + deployment_platform + else + project.deployment_platform + end + end + + attr_reader :deployment_platform, :project + + def prometheus_adapter + @prometheus_adapter ||= if service_prometheus_adapter.can_query? + service_prometheus_adapter + else + cluster_prometheus_adapter + end + end + + def service_prometheus_adapter + project.find_or_initialize_service('prometheus') + end + + def cluster_prometheus_adapter + return unless deployment_platform.respond_to?(:cluster) + + cluster = deployment_platform.cluster + return unless cluster.application_prometheus&.installed? + + cluster.application_prometheus + end + end +end -- cgit v1.2.1