Merge branch 'specify-dashboard-name' into 'master'

Specify a dropdown name for dashboards

See merge request gitlab-org/gitlab-ce!29343
This commit is contained in:
Mayra Cabrera 2019-06-14 15:55:09 +00:00
commit 9ba797e629
5 changed files with 55 additions and 3 deletions

View File

@ -13,12 +13,23 @@ module Gitlab
def all_dashboard_paths(project)
file_finder(project)
.list_files_for(DASHBOARD_ROOT)
.map { |filepath| { path: filepath, default: false } }
.map do |filepath|
{
path: filepath,
display_name: name_for_path(filepath),
default: false
}
end
end
def file_finder(project)
Gitlab::Template::Finders::RepoTemplateFinder.new(project, DASHBOARD_ROOT, '.yml')
end
# Grabs the filepath after the base directory.
def name_for_path(filepath)
filepath.delete_prefix("#{DASHBOARD_ROOT}/")
end
end
private

View File

@ -7,11 +7,13 @@ module Gitlab
module Dashboard
class SystemDashboardService < Gitlab::Metrics::Dashboard::BaseService
SYSTEM_DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
SYSTEM_DASHBOARD_NAME = 'Default'
class << self
def all_dashboard_paths(_project)
[{
path: SYSTEM_DASHBOARD_PATH,
display_name: SYSTEM_DASHBOARD_NAME,
default: true
}]
end

View File

@ -49,7 +49,7 @@ describe Gitlab::Metrics::Dashboard::Finder, :use_clean_rails_memory_store_cachi
describe '.find_all_paths' do
let(:all_dashboard_paths) { described_class.find_all_paths(project) }
let(:system_dashboard) { { path: system_dashboard_path, default: true } }
let(:system_dashboard) { { path: system_dashboard_path, display_name: 'Default', default: true } }
it 'includes only the system dashboard by default' do
expect(all_dashboard_paths).to eq([system_dashboard])
@ -60,7 +60,7 @@ describe Gitlab::Metrics::Dashboard::Finder, :use_clean_rails_memory_store_cachi
let(:project) { project_with_dashboard(dashboard_path) }
it 'includes system and project dashboards' do
project_dashboard = { path: dashboard_path, default: false }
project_dashboard = { path: dashboard_path, display_name: 'test.yml', default: false }
expect(all_dashboard_paths).to contain_exactly(system_dashboard, project_dashboard)
end

View File

@ -59,4 +59,29 @@ describe Gitlab::Metrics::Dashboard::ProjectDashboardService, :use_clean_rails_m
it_behaves_like 'misconfigured dashboard service response', :unprocessable_entity
end
end
describe '::all_dashboard_paths' do
let(:all_dashboards) { described_class.all_dashboard_paths(project) }
context 'when there are no project dashboards' do
it 'returns an empty array' do
expect(all_dashboards).to be_empty
end
end
context 'when there are project dashboards available' do
let(:dashboard_path) { '.gitlab/dashboards/test.yml' }
let(:project) { project_with_dashboard(dashboard_path) }
it 'returns the dashboard attributes' do
expect(all_dashboards).to eq(
[{
path: dashboard_path,
display_name: 'test.yml',
default: false
}]
)
end
end
end
end

View File

@ -29,4 +29,18 @@ describe Gitlab::Metrics::Dashboard::SystemDashboardService, :use_clean_rails_me
it_behaves_like 'valid dashboard service response'
end
end
describe '::all_dashboard_paths' do
it 'returns the dashboard attributes' do
all_dashboards = described_class.all_dashboard_paths(project)
expect(all_dashboards).to eq(
[{
path: described_class::SYSTEM_DASHBOARD_PATH,
display_name: described_class::SYSTEM_DASHBOARD_NAME,
default: true
}]
)
end
end
end