From f5eac2e91dbee0d4fa926fc27c80a5183ff7b0bc Mon Sep 17 00:00:00 2001 From: bergquist Date: Fri, 1 Dec 2017 14:20:52 +0100 Subject: [PATCH] dashboards as cfg: expose dashboard service as interface --- pkg/api/dashboard.go | 2 +- pkg/services/dashboards/dashboards.go | 19 ++++++++++++++++--- .../provisioning/dashboards/file_reader.go | 9 ++++++--- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/pkg/api/dashboard.go b/pkg/api/dashboard.go index 67afad4c010..b2e4d2bf9d3 100644 --- a/pkg/api/dashboard.go +++ b/pkg/api/dashboard.go @@ -142,7 +142,7 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response { UserId: c.UserId, } - dashboard, err := dashboards.SaveDashboard(dashItem) + dashboard, err := dashboards.GetRepository().SaveDashboard(dashItem) if err == m.ErrDashboardTitleEmpty { return ApiError(400, m.ErrDashboardTitleEmpty.Error(), nil) diff --git a/pkg/services/dashboards/dashboards.go b/pkg/services/dashboards/dashboards.go index c411f6106c2..4f05b1f6663 100644 --- a/pkg/services/dashboards/dashboards.go +++ b/pkg/services/dashboards/dashboards.go @@ -1,14 +1,25 @@ package dashboards import ( + "time" + "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/services/alerting" - "time" ) type Repository interface { - SaveDashboard(*SaveDashboardItem) error + SaveDashboard(*SaveDashboardItem) (*models.Dashboard, error) +} + +var repositoryInstance Repository + +func GetRepository() Repository { + return repositoryInstance +} + +func SetRepository(rep Repository) { + repositoryInstance = rep } type SaveDashboardItem struct { @@ -22,7 +33,9 @@ type SaveDashboardItem struct { Dashboard *models.Dashboard } -func SaveDashboard(json *SaveDashboardItem) (*models.Dashboard, error) { +type dashboardRepository struct{} + +func (dr *dashboardRepository) SaveDashboard(json *SaveDashboardItem) (*models.Dashboard, error) { dashboard := json.Dashboard if dashboard.Title == "" { diff --git a/pkg/services/provisioning/dashboards/file_reader.go b/pkg/services/provisioning/dashboards/file_reader.go index 1b2feb2d591..1af4f35de12 100644 --- a/pkg/services/provisioning/dashboards/file_reader.go +++ b/pkg/services/provisioning/dashboards/file_reader.go @@ -3,12 +3,13 @@ package dashboards import ( "context" "fmt" - "github.com/grafana/grafana/pkg/services/dashboards" "os" "path/filepath" "strings" "time" + "github.com/grafana/grafana/pkg/services/dashboards" + "github.com/grafana/grafana/pkg/bus" "github.com/grafana/grafana/pkg/components/simplejson" @@ -21,6 +22,7 @@ type fileReader struct { Path string log log.Logger dashboardCache *dashboardCache + dashboardRepo dashboards.Repository } func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) { @@ -37,6 +39,7 @@ func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReade Cfg: cfg, Path: path, log: log, + dashboardRepo: dashboards.GetRepository(), dashboardCache: newDashboardCache(), }, nil } @@ -96,7 +99,7 @@ func (fr *fileReader) walkFolder() error { if err == models.ErrDashboardNotFound { fr.log.Debug("saving new dashboard", "file", path) - _, err = dashboards.SaveDashboard(dash) + _, err = fr.dashboardRepo.SaveDashboard(dash) return err } @@ -110,7 +113,7 @@ func (fr *fileReader) walkFolder() error { } fr.log.Debug("no dashboard in cache. loading dashboard from disk into database.", "file", path) - _, err = dashboards.SaveDashboard(dash) + _, err = fr.dashboardRepo.SaveDashboard(dash) return err }) }