summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Cobb <rcobb@gitlab.com>2019-07-01 14:43:21 -0700
committerRyan Cobb <rcobb@gitlab.com>2019-07-09 17:02:08 -0600
commitab2a8e2ba839c92530838e2766ab6d8aa0228bda (patch)
treeac52ac44cdf1d8eba68538153bb5f54fb69e60bc
parent9aad4174e052ba330fdaf4abc0276d8497c7de03 (diff)
downloadgitlab-ce-ab2a8e2ba839c92530838e2766ab6d8aa0228bda.tar.gz
Move importers to lib folder
This moves our metric importers into the lib folder. This will allow them to be autoloaded instead of having to explicitly require them.
-rw-r--r--db/importers/common_metrics.rb17
-rw-r--r--db/importers/common_metrics/importer.rb76
-rw-r--r--db/importers/common_metrics/prometheus_metric.rb8
-rw-r--r--db/importers/common_metrics/prometheus_metric_enums.rb36
-rw-r--r--db/importers/common_metrics_importer.rb10
-rw-r--r--lib/gitlab/importers/common_metrics.rb10
-rw-r--r--lib/gitlab/importers/common_metrics/importer.rb80
-rw-r--r--lib/gitlab/importers/common_metrics/prometheus_metric.rb12
-rw-r--r--lib/gitlab/importers/common_metrics/prometheus_metric_enums.rb40
-rw-r--r--spec/db/importers/common_metrics_importer_spec.rb6
10 files changed, 153 insertions, 142 deletions
diff --git a/db/importers/common_metrics.rb b/db/importers/common_metrics.rb
deleted file mode 100644
index 411d366ef83..00000000000
--- a/db/importers/common_metrics.rb
+++ /dev/null
@@ -1,17 +0,0 @@
-require_relative './common_metrics/importer'
-require_relative './common_metrics/prometheus_metric'
-require_relative './common_metrics/prometheus_metric_enums'
-
-require Rails.root.join('ee', 'db', 'importers', 'common_metrics') if Gitlab.ee?
-
-module Importers
- module CommonMetrics
- end
-
- # Patch to preserve old CommonMetricsImporter api
- module CommonMetricsImporter
- def self.new(*args)
- Importers::CommonMetrics::Importer.new(*args)
- end
- end
-end
diff --git a/db/importers/common_metrics/importer.rb b/db/importers/common_metrics/importer.rb
deleted file mode 100644
index 24149fbbea6..00000000000
--- a/db/importers/common_metrics/importer.rb
+++ /dev/null
@@ -1,76 +0,0 @@
-# frozen_string_literal: true
-
-module Importers
- module CommonMetrics
- class Importer
- MissingQueryId = Class.new(StandardError)
-
- attr_reader :content
-
- def initialize(filename = 'common_metrics.yml')
- @content = YAML.load_file(Rails.root.join('config', 'prometheus', filename))
- end
-
- def execute
- PrometheusMetric.reset_column_information
-
- process_content do |id, attributes|
- find_or_build_metric!(id)
- .update!(**attributes)
- end
- end
-
- private
-
- def process_content(&blk)
- content['panel_groups'].map do |group|
- process_group(group, &blk)
- end
- end
-
- def process_group(group, &blk)
- attributes = {
- group: find_group_title_key(group['group'])
- }
-
- group['panels'].map do |panel|
- process_panel(panel, attributes, &blk)
- end
- end
-
- def process_panel(panel, attributes, &blk)
- attributes = attributes.merge(
- title: panel['title'],
- y_label: panel['y_label'])
-
- panel['metrics'].map do |metric_details|
- process_metric_details(metric_details, attributes, &blk)
- end
- end
-
- def process_metric_details(metric_details, attributes, &blk)
- attributes = attributes.merge(
- legend: metric_details['label'],
- query: metric_details['query_range'],
- unit: metric_details['unit'])
-
- yield(metric_details['id'], attributes)
- end
-
- def find_or_build_metric!(id)
- raise MissingQueryId unless id
-
- PrometheusMetric.common.find_by(identifier: id) ||
- PrometheusMetric.new(common: true, identifier: id)
- end
-
- def find_group_title_key(title)
- PrometheusMetricEnums.groups[find_group_title(title)]
- end
-
- def find_group_title(title)
- PrometheusMetricEnums.group_titles.invert[title]
- end
- end
- end
-end
diff --git a/db/importers/common_metrics/prometheus_metric.rb b/db/importers/common_metrics/prometheus_metric.rb
deleted file mode 100644
index 9149549c750..00000000000
--- a/db/importers/common_metrics/prometheus_metric.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-module Importers
- module CommonMetrics
- class PrometheusMetric < ActiveRecord::Base
- enum group: PrometheusMetricEnums.groups
- scope :common, -> { where(common: true) }
- end
- end
-end
diff --git a/db/importers/common_metrics/prometheus_metric_enums.rb b/db/importers/common_metrics/prometheus_metric_enums.rb
deleted file mode 100644
index 50a1081a629..00000000000
--- a/db/importers/common_metrics/prometheus_metric_enums.rb
+++ /dev/null
@@ -1,36 +0,0 @@
-module Importers
- module CommonMetrics
- module PrometheusMetricEnums
- def self.groups
- {
- # built-in groups
- nginx_ingress_vts: -1,
- ha_proxy: -2,
- aws_elb: -3,
- nginx: -4,
- kubernetes: -5,
- nginx_ingress: -6,
-
- # custom groups
- business: 0,
- response: 1,
- system: 2
- }
- end
-
- def self.group_titles
- {
- business: _('Business metrics (Custom)'),
- response: _('Response metrics (Custom)'),
- system: _('System metrics (Custom)'),
- nginx_ingress_vts: _('Response metrics (NGINX Ingress VTS)'),
- nginx_ingress: _('Response metrics (NGINX Ingress)'),
- ha_proxy: _('Response metrics (HA Proxy)'),
- aws_elb: _('Response metrics (AWS ELB)'),
- nginx: _('Response metrics (NGINX)'),
- kubernetes: _('System metrics (Kubernetes)')
- }
- end
- end
- end
-end
diff --git a/db/importers/common_metrics_importer.rb b/db/importers/common_metrics_importer.rb
index cf5f5e181de..a2e3996a123 100644
--- a/db/importers/common_metrics_importer.rb
+++ b/db/importers/common_metrics_importer.rb
@@ -1,3 +1,9 @@
-# This functionality has been moved to the common_metrics module.
+# This functionality has been moved to the lib/gitlab/importers/common_metrics module.
# This is here only to preserve existing ::Importers::CommonMetricsImporter api
-require_relative './common_metrics'
+module Importers
+ module CommonMetricsImporter
+ def self.new(*args)
+ Gitlab::Importers::CommonMetrics::Importer.new(*args)
+ end
+ end
+end
diff --git a/lib/gitlab/importers/common_metrics.rb b/lib/gitlab/importers/common_metrics.rb
new file mode 100644
index 00000000000..210ae6cb14a
--- /dev/null
+++ b/lib/gitlab/importers/common_metrics.rb
@@ -0,0 +1,10 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Importers
+ module CommonMetrics
+ end
+ end
+end
+
+Gitlab::Importers::CommonMetrics.prepend(EE::Gitlab::Importers::CommonMetrics)
diff --git a/lib/gitlab/importers/common_metrics/importer.rb b/lib/gitlab/importers/common_metrics/importer.rb
new file mode 100644
index 00000000000..c916af58820
--- /dev/null
+++ b/lib/gitlab/importers/common_metrics/importer.rb
@@ -0,0 +1,80 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Importers
+ module CommonMetrics
+ class Importer
+ MissingQueryId = Class.new(StandardError)
+
+ attr_reader :content
+
+ def initialize(filename = 'common_metrics.yml')
+ @content = YAML.load_file(Rails.root.join('config', 'prometheus', filename))
+ end
+
+ def execute
+ PrometheusMetric.reset_column_information
+
+ process_content do |id, attributes|
+ find_or_build_metric!(id)
+ .update!(**attributes)
+ end
+ end
+
+ private
+
+ def process_content(&blk)
+ content['panel_groups'].map do |group|
+ process_group(group, &blk)
+ end
+ end
+
+ def process_group(group, &blk)
+ attributes = {
+ group: find_group_title_key(group['group'])
+ }
+
+ group['panels'].map do |panel|
+ process_panel(panel, attributes, &blk)
+ end
+ end
+
+ def process_panel(panel, attributes, &blk)
+ attributes = attributes.merge(
+ title: panel['title'],
+ y_label: panel['y_label'])
+
+ panel['metrics'].map do |metric_details|
+ process_metric_details(metric_details, attributes, &blk)
+ end
+ end
+
+ def process_metric_details(metric_details, attributes, &blk)
+ attributes = attributes.merge(
+ legend: metric_details['label'],
+ query: metric_details['query_range'],
+ unit: metric_details['unit'])
+
+ yield(metric_details['id'], attributes)
+ end
+
+ # rubocop: disable CodeReuse/ActiveRecord
+ def find_or_build_metric!(id)
+ raise MissingQueryId unless id
+
+ PrometheusMetric.common.find_by(identifier: id) ||
+ PrometheusMetric.new(common: true, identifier: id)
+ end
+ # rubocop: enable CodeReuse/ActiveRecord
+
+ def find_group_title_key(title)
+ PrometheusMetricEnums.groups[find_group_title(title)]
+ end
+
+ def find_group_title(title)
+ PrometheusMetricEnums.group_titles.invert[title]
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/importers/common_metrics/prometheus_metric.rb b/lib/gitlab/importers/common_metrics/prometheus_metric.rb
new file mode 100644
index 00000000000..a9397f4c055
--- /dev/null
+++ b/lib/gitlab/importers/common_metrics/prometheus_metric.rb
@@ -0,0 +1,12 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Importers
+ module CommonMetrics
+ class PrometheusMetric < ApplicationRecord
+ enum group: PrometheusMetricEnums.groups
+ scope :common, -> { where(common: true) }
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/importers/common_metrics/prometheus_metric_enums.rb b/lib/gitlab/importers/common_metrics/prometheus_metric_enums.rb
new file mode 100644
index 00000000000..dbf4c9e9b55
--- /dev/null
+++ b/lib/gitlab/importers/common_metrics/prometheus_metric_enums.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Importers
+ module CommonMetrics
+ module PrometheusMetricEnums
+ def self.groups
+ {
+ # built-in groups
+ nginx_ingress_vts: -1,
+ ha_proxy: -2,
+ aws_elb: -3,
+ nginx: -4,
+ kubernetes: -5,
+ nginx_ingress: -6,
+
+ # custom groups
+ business: 0,
+ response: 1,
+ system: 2
+ }
+ end
+
+ def self.group_titles
+ {
+ business: _('Business metrics (Custom)'),
+ response: _('Response metrics (Custom)'),
+ system: _('System metrics (Custom)'),
+ nginx_ingress_vts: _('Response metrics (NGINX Ingress VTS)'),
+ nginx_ingress: _('Response metrics (NGINX Ingress)'),
+ ha_proxy: _('Response metrics (HA Proxy)'),
+ aws_elb: _('Response metrics (AWS ELB)'),
+ nginx: _('Response metrics (NGINX)'),
+ kubernetes: _('System metrics (Kubernetes)')
+ }
+ end
+ end
+ end
+ end
+end
diff --git a/spec/db/importers/common_metrics_importer_spec.rb b/spec/db/importers/common_metrics_importer_spec.rb
index c47effa6803..02e7d51c268 100644
--- a/spec/db/importers/common_metrics_importer_spec.rb
+++ b/spec/db/importers/common_metrics_importer_spec.rb
@@ -3,7 +3,7 @@
require 'rails_helper'
require Rails.root.join("db", "importers", "common_metrics_importer.rb")
-describe Importers::CommonMetrics::PrometheusMetric do
+describe Gitlab::Importers::CommonMetrics::PrometheusMetric do
let(:existing_group_titles) do
::PrometheusMetricEnums.group_details.each_with_object({}) do |(key, value), memo|
memo[key] = value[:group_title]
@@ -15,7 +15,7 @@ describe Importers::CommonMetrics::PrometheusMetric do
end
it 'GROUP_TITLES equals ::PrometheusMetric' do
- expect(Importers::CommonMetrics::PrometheusMetricEnums.group_titles).to eq(existing_group_titles)
+ expect(Gitlab::Importers::CommonMetrics::PrometheusMetricEnums.group_titles).to eq(existing_group_titles)
end
end
@@ -104,7 +104,7 @@ describe Importers::CommonMetricsImporter do
let(:query_identifier) { }
it 'raises exception' do
- expect { subject.execute }.to raise_error(Importers::CommonMetrics::Importer::MissingQueryId)
+ expect { subject.execute }.to raise_error(Gitlab::Importers::CommonMetrics::Importer::MissingQueryId)
end
end