Browse Source

dashboards as cfg: expose dashboard service as interface

bergquist 8 years ago
parent
commit
f5eac2e91d

+ 1 - 1
pkg/api/dashboard.go

@@ -142,7 +142,7 @@ func PostDashboard(c *middleware.Context, cmd m.SaveDashboardCommand) Response {
 		UserId:    c.UserId,
 		UserId:    c.UserId,
 	}
 	}
 
 
-	dashboard, err := dashboards.SaveDashboard(dashItem)
+	dashboard, err := dashboards.GetRepository().SaveDashboard(dashItem)
 
 
 	if err == m.ErrDashboardTitleEmpty {
 	if err == m.ErrDashboardTitleEmpty {
 		return ApiError(400, m.ErrDashboardTitleEmpty.Error(), nil)
 		return ApiError(400, m.ErrDashboardTitleEmpty.Error(), nil)

+ 16 - 3
pkg/services/dashboards/dashboards.go

@@ -1,14 +1,25 @@
 package dashboards
 package dashboards
 
 
 import (
 import (
+	"time"
+
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/models"
 	"github.com/grafana/grafana/pkg/services/alerting"
 	"github.com/grafana/grafana/pkg/services/alerting"
-	"time"
 )
 )
 
 
 type Repository interface {
 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 {
 type SaveDashboardItem struct {
@@ -22,7 +33,9 @@ type SaveDashboardItem struct {
 	Dashboard  *models.Dashboard
 	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
 	dashboard := json.Dashboard
 
 
 	if dashboard.Title == "" {
 	if dashboard.Title == "" {

+ 6 - 3
pkg/services/provisioning/dashboards/file_reader.go

@@ -3,12 +3,13 @@ package dashboards
 import (
 import (
 	"context"
 	"context"
 	"fmt"
 	"fmt"
-	"github.com/grafana/grafana/pkg/services/dashboards"
 	"os"
 	"os"
 	"path/filepath"
 	"path/filepath"
 	"strings"
 	"strings"
 	"time"
 	"time"
 
 
+	"github.com/grafana/grafana/pkg/services/dashboards"
+
 	"github.com/grafana/grafana/pkg/bus"
 	"github.com/grafana/grafana/pkg/bus"
 
 
 	"github.com/grafana/grafana/pkg/components/simplejson"
 	"github.com/grafana/grafana/pkg/components/simplejson"
@@ -21,6 +22,7 @@ type fileReader struct {
 	Path           string
 	Path           string
 	log            log.Logger
 	log            log.Logger
 	dashboardCache *dashboardCache
 	dashboardCache *dashboardCache
+	dashboardRepo  dashboards.Repository
 }
 }
 
 
 func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) {
 func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReader, error) {
@@ -37,6 +39,7 @@ func NewDashboardFilereader(cfg *DashboardsAsConfig, log log.Logger) (*fileReade
 		Cfg:            cfg,
 		Cfg:            cfg,
 		Path:           path,
 		Path:           path,
 		log:            log,
 		log:            log,
+		dashboardRepo:  dashboards.GetRepository(),
 		dashboardCache: newDashboardCache(),
 		dashboardCache: newDashboardCache(),
 	}, nil
 	}, nil
 }
 }
@@ -96,7 +99,7 @@ func (fr *fileReader) walkFolder() error {
 
 
 		if err == models.ErrDashboardNotFound {
 		if err == models.ErrDashboardNotFound {
 			fr.log.Debug("saving new dashboard", "file", path)
 			fr.log.Debug("saving new dashboard", "file", path)
-			_, err = dashboards.SaveDashboard(dash)
+			_, err = fr.dashboardRepo.SaveDashboard(dash)
 			return err
 			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)
 		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
 		return err
 	})
 	})
 }
 }