From 447e088a7fbf2ff73494ad8ee34c15c6637545b1 Mon Sep 17 00:00:00 2001
From: Jose Vargas <jvargas@gitlab.com>
Date: Tue, 21 Jul 2020 18:41:14 -0500
Subject: [PATCH] Add metrics dashboard template finder

This adds the necessary backend that manages
the *.metrics-dashboard.yml template files
---
 app/finders/template_finder.rb                |   3 +-
 app/helpers/blob_helper.rb                    |   4 ++
 ...ics_dashboard_template_selection_v13_3.png | Bin 0 -> 36268 bytes
 ...board_template_selection_web_ide_v13_3.png | Bin 0 -> 26123 bytes
 .../operations/metrics/templates.md           |  20 ++++++
 ee/app/finders/ee/template_finder.rb          |   3 +-
 lib/api/project_templates.rb                  |   4 +-
 .../templates/Default.metrics-dashboard.yml   |  24 +++++++
 lib/gitlab/metrics/templates/index.md         |   3 +
 .../template/metrics_dashboard_template.rb    |  32 +++++++++
 .../metrics_dashboard_template_spec.rb        |  66 ++++++++++++++++++
 spec/requests/api/project_templates_spec.rb   |  21 ++++++
 12 files changed, 176 insertions(+), 4 deletions(-)
 create mode 100644 doc/development/operations/metrics/img/metrics_dashboard_template_selection_v13_3.png
 create mode 100644 doc/development/operations/metrics/img/metrics_dashboard_template_selection_web_ide_v13_3.png
 create mode 100644 doc/development/operations/metrics/templates.md
 create mode 100644 lib/gitlab/metrics/templates/Default.metrics-dashboard.yml
 create mode 100644 lib/gitlab/metrics/templates/index.md
 create mode 100644 lib/gitlab/template/metrics_dashboard_template.rb
 create mode 100644 spec/lib/gitlab/template/metrics_dashboard_template_spec.rb

diff --git a/app/finders/template_finder.rb b/app/finders/template_finder.rb
index 78c8392f1cd..9f7fca154ec 100644
--- a/app/finders/template_finder.rb
+++ b/app/finders/template_finder.rb
@@ -6,7 +6,8 @@ class TemplateFinder
   VENDORED_TEMPLATES = HashWithIndifferentAccess.new(
     dockerfiles: ::Gitlab::Template::DockerfileTemplate,
     gitignores: ::Gitlab::Template::GitignoreTemplate,
-    gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate
+    gitlab_ci_ymls: ::Gitlab::Template::GitlabCiYmlTemplate,
+    metrics_dashboard_ymls: ::Gitlab::Template::MetricsDashboardTemplate
   ).freeze
 
   class << self
diff --git a/app/helpers/blob_helper.rb b/app/helpers/blob_helper.rb
index 3a7b649b1fa..615c834c529 100644
--- a/app/helpers/blob_helper.rb
+++ b/app/helpers/blob_helper.rb
@@ -200,6 +200,10 @@ module BlobHelper
     @gitlab_ci_ymls ||= template_dropdown_names(TemplateFinder.build(:gitlab_ci_ymls, project).execute)
   end
 
+  def metrics_dashboard_ymls(project)
+    @metrics_dashboard_ymls ||= template_dropdown_names(TemplateFinder.build(:metrics_dashboard_ymls, project).execute)
+  end
+
   def dockerfile_names(project)
     @dockerfile_names ||= template_dropdown_names(TemplateFinder.build(:dockerfiles, project).execute)
   end
diff --git a/doc/development/operations/metrics/img/metrics_dashboard_template_selection_v13_3.png b/doc/development/operations/metrics/img/metrics_dashboard_template_selection_v13_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..bd8401a1747530df4095b28f472917cfc35aaaf8
GIT binary patch
literal 36268
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

literal 0
HcmV?d00001

diff --git a/doc/development/operations/metrics/img/metrics_dashboard_template_selection_web_ide_v13_3.png b/doc/development/operations/metrics/img/metrics_dashboard_template_selection_web_ide_v13_3.png
new file mode 100644
index 0000000000000000000000000000000000000000..650f66e9a307650943d7224131e943ccc38cff84
GIT binary patch
literal 26123
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
ZPV6i(GNW*-C%4>m*x16T@WAmae+SNeFcbg)

literal 0
HcmV?d00001

diff --git a/doc/development/operations/metrics/templates.md b/doc/development/operations/metrics/templates.md
new file mode 100644
index 00000000000..c77af2693c4
--- /dev/null
+++ b/doc/development/operations/metrics/templates.md
@@ -0,0 +1,20 @@
+# Development guide for Metrics Dashboards templates
+
+This document explains how to develop Metrics Dashboards templates
+
+## Place the template file in the relevant directory
+
+All template files reside in the `lib/gitlab/metrics/templates` directory
+
+## Criteria
+
+All the templates must be named with the `*.metrics-dashboard.yml` suffix.
+
+The file must follow the [custom dashboard syntax](../../../operations/metrics/dashboards/yaml.md).
+
+### Make sure the new template can be selected in the UI
+
+All the templates available in `lib/gitlab/metrics/templates` are selectable in the **New File** UI from the repository view as well from the **WebIDE** New File template selector.
+
+![Metrics dashboard template selection](img/metrics_dashboard_template_selection_v13_3.png)
+![Metrics dashboard template selection WebIDE](img/metrics_dashboard_template_selection_web_ide_v13_3.png)
diff --git a/ee/app/finders/ee/template_finder.rb b/ee/app/finders/ee/template_finder.rb
index 759087d8336..1d0885c3138 100644
--- a/ee/app/finders/ee/template_finder.rb
+++ b/ee/app/finders/ee/template_finder.rb
@@ -7,7 +7,8 @@ module EE
     CUSTOM_TEMPLATES = HashWithIndifferentAccess.new(
       dockerfiles: ::Gitlab::Template::CustomDockerfileTemplate,
       gitignores: ::Gitlab::Template::CustomGitignoreTemplate,
-      gitlab_ci_ymls: ::Gitlab::Template::CustomGitlabCiYmlTemplate
+      gitlab_ci_ymls: ::Gitlab::Template::CustomGitlabCiYmlTemplate,
+      metrics_dashboard_ymls: ::Gitlab::Template::MetricsDashboardTemplate
     ).freeze
 
     attr_reader :custom_templates
diff --git a/lib/api/project_templates.rb b/lib/api/project_templates.rb
index f0fe4d85c8f..400893bc659 100644
--- a/lib/api/project_templates.rb
+++ b/lib/api/project_templates.rb
@@ -4,7 +4,7 @@ module API
   class ProjectTemplates < Grape::API::Instance
     include PaginationParams
 
-    TEMPLATE_TYPES = %w[dockerfiles gitignores gitlab_ci_ymls licenses].freeze
+    TEMPLATE_TYPES = %w[dockerfiles gitignores gitlab_ci_ymls licenses metrics_dashboard_ymls].freeze
     # The regex is needed to ensure a period (e.g. agpl-3.0)
     # isn't confused with a format type. We also need to allow encoded
     # values (e.g. C%2B%2B for C++), so allow % and + as well.
@@ -14,7 +14,7 @@ module API
 
     params do
       requires :id, type: String, desc: 'The ID of a project'
-      requires :type, type: String, values: TEMPLATE_TYPES, desc: 'The type (dockerfiles|gitignores|gitlab_ci_ymls|licenses) of the template'
+      requires :type, type: String, values: TEMPLATE_TYPES, desc: 'The type (dockerfiles|gitignores|gitlab_ci_ymls|licenses|metrics_dashboard_ymls) of the template'
     end
     resource :projects, requirements: API::NAMESPACE_OR_PROJECT_REQUIREMENTS do
       desc 'Get a list of templates available to this project' do
diff --git a/lib/gitlab/metrics/templates/Default.metrics-dashboard.yml b/lib/gitlab/metrics/templates/Default.metrics-dashboard.yml
new file mode 100644
index 00000000000..cd425c06651
--- /dev/null
+++ b/lib/gitlab/metrics/templates/Default.metrics-dashboard.yml
@@ -0,0 +1,24 @@
+# Only one dashboard should be defined per file
+# More info: https://docs.gitlab.com/ee/operations/metrics/dashboards/yaml.html
+dashboard: 'Single Stat'
+
+# This is where all of the variables that can be manipulated via the UI
+# are initialized
+# Check out: https://docs.gitlab.com/ee/operations/metrics/dashboards/templating_variables.html#templating-variables-for-metrics-dashboards-core
+templating:
+  variables:
+    job: 'prometheus'
+
+# For more information about the required properties of panel_groups
+# please visit: https://docs.gitlab.com/ee/operations/metrics/dashboards/yaml.html#panel-group-panel_groups-properties
+panel_groups:
+  - group: 'Memory'
+    panels:
+      - title: Prometheus
+        type: single-stat
+        metrics:
+            # Queries that make use of variables need to have double curly brackets {}
+            # set to the variables, per the example below
+            query: 'max(go_memstats_alloc_bytes{job="{{job}}"}) / 1024 /1024'
+            unit: '%'
+            label: "Max"
diff --git a/lib/gitlab/metrics/templates/index.md b/lib/gitlab/metrics/templates/index.md
new file mode 100644
index 00000000000..59fc85899da
--- /dev/null
+++ b/lib/gitlab/metrics/templates/index.md
@@ -0,0 +1,3 @@
+# Development guide for Metrics Dashboard templates
+
+Please follow [the development guideline](../../../../doc/development/operations/metrics/templates.md)
diff --git a/lib/gitlab/template/metrics_dashboard_template.rb b/lib/gitlab/template/metrics_dashboard_template.rb
new file mode 100644
index 00000000000..88fc3007b63
--- /dev/null
+++ b/lib/gitlab/template/metrics_dashboard_template.rb
@@ -0,0 +1,32 @@
+# frozen_string_literal: true
+
+module Gitlab
+  module Template
+    class MetricsDashboardTemplate < BaseTemplate
+      def content
+        explanation = "# This file is a template, and might need editing before it works on your project."
+        [explanation, super].join("\n")
+      end
+
+      class << self
+        def extension
+          '.metrics-dashboard.yml'
+        end
+
+        def categories
+          {
+            "General" => ''
+          }
+        end
+
+        def base_dir
+          Rails.root.join('lib/gitlab/metrics/templates')
+        end
+
+        def finder(project = nil)
+          Gitlab::Template::Finders::GlobalTemplateFinder.new(self.base_dir, self.extension, self.categories)
+        end
+      end
+    end
+  end
+end
diff --git a/spec/lib/gitlab/template/metrics_dashboard_template_spec.rb b/spec/lib/gitlab/template/metrics_dashboard_template_spec.rb
new file mode 100644
index 00000000000..163e4349b70
--- /dev/null
+++ b/spec/lib/gitlab/template/metrics_dashboard_template_spec.rb
@@ -0,0 +1,66 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+RSpec.describe Gitlab::Template::MetricsDashboardTemplate do
+  subject { described_class }
+
+  describe '.all' do
+    it 'strips the metrics-dashboard suffix' do
+      expect(subject.all.first.name).not_to end_with('metrics-dashboard.yml')
+    end
+
+    it 'combines the globals and rest' do
+      all = subject.all.map(&:name)
+
+      expect(all).to include('Default')
+    end
+
+    it 'ensures that the template name is used exactly once' do
+      all = subject.all.group_by(&:name)
+      duplicates = all.select { |_, templates| templates.length > 1 }
+
+      expect(duplicates).to be_empty
+    end
+  end
+
+  describe '.find' do
+    it 'returns nil if the file does not exist' do
+      expect(subject.find('nonexistent-file')).to be nil
+    end
+
+    it 'returns the MetricsDashboardYml object of a valid file' do
+      default_dashboard = subject.find('Default')
+
+      expect(default_dashboard).to be_a described_class
+      expect(default_dashboard.name).to eq('Default')
+    end
+  end
+
+  describe '.by_category' do
+    it 'returns sorted results' do
+      result = described_class.by_category('General')
+
+      expect(result).to eq(result.sort)
+    end
+  end
+
+  describe '#content' do
+    it 'loads the full file' do
+      example_dashboard = subject.new(Rails.root.join('lib/gitlab/metrics/templates/Default.metrics-dashboard.yml'))
+
+      expect(example_dashboard.name).to eq 'Default'
+      expect(example_dashboard.content).to start_with('#')
+    end
+  end
+
+  describe '#<=>' do
+    it 'sorts lexicographically' do
+      one = described_class.new('a.metrics-dashboard.yml')
+      other = described_class.new('z.metrics-dashboard.yml')
+
+      expect(one.<=>(other)).to be(-1)
+      expect([other, one].sort).to eq([one, other])
+    end
+  end
+end
diff --git a/spec/requests/api/project_templates_spec.rb b/spec/requests/api/project_templates_spec.rb
index 59b2b09f0bf..51123837a50 100644
--- a/spec/requests/api/project_templates_spec.rb
+++ b/spec/requests/api/project_templates_spec.rb
@@ -62,6 +62,15 @@ RSpec.describe API::ProjectTemplates do
       expect(json_response).to satisfy_one { |template| template['key'] == 'mit' }
     end
 
+    it 'returns metrics_dashboard_ymls' do
+      get api("/projects/#{public_project.id}/templates/metrics_dashboard_ymls")
+
+      expect(response).to have_gitlab_http_status(:ok)
+      expect(response).to include_pagination_headers
+      expect(response).to match_response_schema('public_api/v4/template_list')
+      expect(json_response).to satisfy_one { |template| template['key'] == 'Default' }
+    end
+
     it 'returns 400 for an unknown template type' do
       get api("/projects/#{public_project.id}/templates/unknown")
 
@@ -136,6 +145,14 @@ RSpec.describe API::ProjectTemplates do
       expect(json_response['name']).to eq('Android')
     end
 
+    it 'returns a specific metrics_dashboard_yml' do
+      get api("/projects/#{public_project.id}/templates/metrics_dashboard_ymls/Default")
+
+      expect(response).to have_gitlab_http_status(:ok)
+      expect(response).to match_response_schema('public_api/v4/template')
+      expect(json_response['name']).to eq('Default')
+    end
+
     it 'returns a specific license' do
       get api("/projects/#{public_project.id}/templates/licenses/mit")
 
@@ -166,6 +183,10 @@ RSpec.describe API::ProjectTemplates do
       subject { get api("/projects/#{url_encoded_path}/templates/gitlab_ci_ymls/Android") }
     end
 
+    it_behaves_like 'accepts project paths with dots' do
+      subject { get api("/projects/#{url_encoded_path}/templates/metrics_dashboard_ymls/Default") }
+    end
+
     shared_examples 'path traversal attempt' do |template_type|
       it 'rejects invalid filenames' do
         get api("/projects/#{public_project.id}/templates/#{template_type}/%2e%2e%2fPython%2ea")
-- 
2.30.9