From 183507964c3c5b375f7738f5b33a1cd2a1f280a8 Mon Sep 17 00:00:00 2001 From: Leonard Gram Date: Tue, 16 Jan 2018 17:35:28 +0100 Subject: [PATCH 1/2] Clearer naming for dashboard provisioning config. Renames folder (in options) to path to make it different from the grafana folder wherein the dashboard will be created. --- pkg/services/provisioning/dashboards/config_reader_test.go | 4 ++-- .../test-configs/dashboards-from-disk/dev-dashboards.yaml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/services/provisioning/dashboards/config_reader_test.go b/pkg/services/provisioning/dashboards/config_reader_test.go index 56c5a5fcf3d..faca34438d8 100644 --- a/pkg/services/provisioning/dashboards/config_reader_test.go +++ b/pkg/services/provisioning/dashboards/config_reader_test.go @@ -33,7 +33,7 @@ func TestDashboardsAsConfig(t *testing.T) { So(ds.Editable, ShouldBeTrue) So(len(ds.Options), ShouldEqual, 1) - So(ds.Options["folder"], ShouldEqual, "/var/lib/grafana/dashboards") + So(ds.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") ds2 := cfg[1] @@ -44,7 +44,7 @@ func TestDashboardsAsConfig(t *testing.T) { So(ds2.Editable, ShouldBeFalse) So(len(ds2.Options), ShouldEqual, 1) - So(ds2.Options["folder"], ShouldEqual, "/var/lib/grafana/dashboards") + So(ds2.Options["path"], ShouldEqual, "/var/lib/grafana/dashboards") }) Convey("Should skip broken config files", func() { diff --git a/pkg/services/provisioning/dashboards/test-configs/dashboards-from-disk/dev-dashboards.yaml b/pkg/services/provisioning/dashboards/test-configs/dashboards-from-disk/dev-dashboards.yaml index a7c4a812092..df0e6ff3044 100644 --- a/pkg/services/provisioning/dashboards/test-configs/dashboards-from-disk/dev-dashboards.yaml +++ b/pkg/services/provisioning/dashboards/test-configs/dashboards-from-disk/dev-dashboards.yaml @@ -4,9 +4,9 @@ editable: true type: file options: - folder: /var/lib/grafana/dashboards + path: /var/lib/grafana/dashboards - name: 'default' type: file options: - folder: /var/lib/grafana/dashboards + path: /var/lib/grafana/dashboards From 34d7f8a44f83a5949b01f6ed72c58b7e6b9ffd2b Mon Sep 17 00:00:00 2001 From: bergquist Date: Wed, 17 Jan 2018 14:33:51 +0100 Subject: [PATCH 2/2] dashboards as cfg: property path replaces folder --- .../provisioning/dashboards/file_reader.go | 10 ++++-- .../dashboards/file_reader_test.go | 34 ++++++++++++++++--- 2 files changed, 37 insertions(+), 7 deletions(-) diff --git a/pkg/services/provisioning/dashboards/file_reader.go b/pkg/services/provisioning/dashboards/file_reader.go index c3329e07488..c96fa6993d8 100644 --- a/pkg/services/provisioning/dashboards/file_reader.go +++ b/pkg/services/provisioning/dashboards/file_reader.go @@ -34,9 +34,15 @@ type fileReader struct { } func NewDashboardFileReader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) { - path, ok := cfg.Options["folder"].(string) + var path string + path, ok := cfg.Options["path"].(string) if !ok { - return nil, fmt.Errorf("Failed to load dashboards. folder param is not a string") + path, ok = cfg.Options["folder"].(string) + if !ok { + return nil, fmt.Errorf("Failed to load dashboards. path param is not a string") + } + + log.Warn("[Deprecated] The folder property is deprecated. Please use path instead.") } if _, err := os.Stat(path); os.IsNotExist(err) { diff --git a/pkg/services/provisioning/dashboards/file_reader_test.go b/pkg/services/provisioning/dashboards/file_reader_test.go index 16e3e1184b8..f2805196dde 100644 --- a/pkg/services/provisioning/dashboards/file_reader_test.go +++ b/pkg/services/provisioning/dashboards/file_reader_test.go @@ -42,7 +42,7 @@ func TestDashboardFileReader(t *testing.T) { } Convey("Can read default dashboard", func() { - cfg.Options["folder"] = defaultDashboards + cfg.Options["path"] = defaultDashboards cfg.Folder = "Team A" reader, err := NewDashboardFileReader(cfg, logger) @@ -67,7 +67,7 @@ func TestDashboardFileReader(t *testing.T) { }) Convey("Should not update dashboards when db is newer", func() { - cfg.Options["folder"] = oneDashboard + cfg.Options["path"] = oneDashboard fakeRepo.getDashboard = append(fakeRepo.getDashboard, &models.Dashboard{ Updated: time.Now().Add(time.Hour), @@ -84,7 +84,7 @@ func TestDashboardFileReader(t *testing.T) { }) Convey("Can read default dashboard and replace old version in database", func() { - cfg.Options["folder"] = oneDashboard + cfg.Options["path"] = oneDashboard stat, _ := os.Stat(oneDashboard + "/dashboard1.json") @@ -115,7 +115,7 @@ func TestDashboardFileReader(t *testing.T) { }) Convey("Broken dashboards should not cause error", func() { - cfg.Options["folder"] = brokenDashboards + cfg.Options["path"] = brokenDashboards _, err := NewDashboardFileReader(cfg, logger) So(err, ShouldBeNil) @@ -167,7 +167,7 @@ func TestDashboardFileReader(t *testing.T) { OrgId: 1, Folder: "", Options: map[string]interface{}{ - "folder": defaultDashboards, + "path": defaultDashboards, }, } @@ -184,6 +184,30 @@ func TestDashboardFileReader(t *testing.T) { So(shouldSkip, ShouldBeNil) }) }) + + Convey("Can use bpth path and folder as dashboard path", func() { + cfg := &DashboardsAsConfig{ + Name: "Default", + Type: "file", + OrgId: 1, + Folder: "", + Options: map[string]interface{}{}, + } + + Convey("using path parameter", func() { + cfg.Options["path"] = defaultDashboards + reader, err := NewDashboardFileReader(cfg, log.New("test-logger")) + So(err, ShouldBeNil) + So(reader.Path, ShouldEqual, defaultDashboards) + }) + + Convey("using folder as options", func() { + cfg.Options["folder"] = defaultDashboards + reader, err := NewDashboardFileReader(cfg, log.New("test-logger")) + So(err, ShouldBeNil) + So(reader.Path, ShouldEqual, defaultDashboards) + }) + }) }) }