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:
commit
9ba797e629
|
@ -13,12 +13,23 @@ module Gitlab
|
||||||
def all_dashboard_paths(project)
|
def all_dashboard_paths(project)
|
||||||
file_finder(project)
|
file_finder(project)
|
||||||
.list_files_for(DASHBOARD_ROOT)
|
.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
|
end
|
||||||
|
|
||||||
def file_finder(project)
|
def file_finder(project)
|
||||||
Gitlab::Template::Finders::RepoTemplateFinder.new(project, DASHBOARD_ROOT, '.yml')
|
Gitlab::Template::Finders::RepoTemplateFinder.new(project, DASHBOARD_ROOT, '.yml')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Grabs the filepath after the base directory.
|
||||||
|
def name_for_path(filepath)
|
||||||
|
filepath.delete_prefix("#{DASHBOARD_ROOT}/")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -7,11 +7,13 @@ module Gitlab
|
||||||
module Dashboard
|
module Dashboard
|
||||||
class SystemDashboardService < Gitlab::Metrics::Dashboard::BaseService
|
class SystemDashboardService < Gitlab::Metrics::Dashboard::BaseService
|
||||||
SYSTEM_DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
|
SYSTEM_DASHBOARD_PATH = 'config/prometheus/common_metrics.yml'
|
||||||
|
SYSTEM_DASHBOARD_NAME = 'Default'
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def all_dashboard_paths(_project)
|
def all_dashboard_paths(_project)
|
||||||
[{
|
[{
|
||||||
path: SYSTEM_DASHBOARD_PATH,
|
path: SYSTEM_DASHBOARD_PATH,
|
||||||
|
display_name: SYSTEM_DASHBOARD_NAME,
|
||||||
default: true
|
default: true
|
||||||
}]
|
}]
|
||||||
end
|
end
|
||||||
|
|
|
@ -49,7 +49,7 @@ describe Gitlab::Metrics::Dashboard::Finder, :use_clean_rails_memory_store_cachi
|
||||||
|
|
||||||
describe '.find_all_paths' do
|
describe '.find_all_paths' do
|
||||||
let(:all_dashboard_paths) { described_class.find_all_paths(project) }
|
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
|
it 'includes only the system dashboard by default' do
|
||||||
expect(all_dashboard_paths).to eq([system_dashboard])
|
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) }
|
let(:project) { project_with_dashboard(dashboard_path) }
|
||||||
|
|
||||||
it 'includes system and project dashboards' do
|
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)
|
expect(all_dashboard_paths).to contain_exactly(system_dashboard, project_dashboard)
|
||||||
end
|
end
|
||||||
|
|
|
@ -59,4 +59,29 @@ describe Gitlab::Metrics::Dashboard::ProjectDashboardService, :use_clean_rails_m
|
||||||
it_behaves_like 'misconfigured dashboard service response', :unprocessable_entity
|
it_behaves_like 'misconfigured dashboard service response', :unprocessable_entity
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
@ -29,4 +29,18 @@ describe Gitlab::Metrics::Dashboard::SystemDashboardService, :use_clean_rails_me
|
||||||
it_behaves_like 'valid dashboard service response'
|
it_behaves_like 'valid dashboard service response'
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
Loading…
Reference in New Issue