Inject dashboard provisioning service instead of store (#45533)

This commit is contained in:
Karl Persson 2022-02-17 17:18:19 +01:00 committed by GitHub
parent bbddab0294
commit f42c830b3c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 14 additions and 14 deletions

View File

@ -23,7 +23,7 @@ type DashboardProvisioner interface {
} }
// DashboardProvisionerFactory creates DashboardProvisioners based on input // DashboardProvisionerFactory creates DashboardProvisioners based on input
type DashboardProvisionerFactory func(context.Context, string, dashboards.Store) (DashboardProvisioner, error) type DashboardProvisionerFactory func(context.Context, string, dashboards.DashboardProvisioningService) (DashboardProvisioner, error)
// Provisioner is responsible for syncing dashboard from disk to Grafana's database. // Provisioner is responsible for syncing dashboard from disk to Grafana's database.
type Provisioner struct { type Provisioner struct {
@ -34,7 +34,7 @@ type Provisioner struct {
} }
// New returns a new DashboardProvisioner // New returns a new DashboardProvisioner
func New(ctx context.Context, configDirectory string, store dashboards.Store) (DashboardProvisioner, error) { func New(ctx context.Context, configDirectory string, service dashboards.DashboardProvisioningService) (DashboardProvisioner, error) {
logger := log.New("provisioning.dashboard") logger := log.New("provisioning.dashboard")
cfgReader := &configReader{path: configDirectory, log: logger} cfgReader := &configReader{path: configDirectory, log: logger}
configs, err := cfgReader.readConfig(ctx) configs, err := cfgReader.readConfig(ctx)
@ -42,7 +42,7 @@ func New(ctx context.Context, configDirectory string, store dashboards.Store) (D
return nil, errutil.Wrap("Failed to read dashboards config", err) return nil, errutil.Wrap("Failed to read dashboards config", err)
} }
fileReaders, err := getFileReaders(configs, logger, store) fileReaders, err := getFileReaders(configs, logger, service)
if err != nil { if err != nil {
return nil, errutil.Wrap("Failed to initialize file readers", err) return nil, errutil.Wrap("Failed to initialize file readers", err)
} }
@ -120,14 +120,13 @@ func (provider *Provisioner) GetAllowUIUpdatesFromConfig(name string) bool {
return false return false
} }
func getFileReaders(configs []*config, logger log.Logger, store dashboards.Store) ([]*FileReader, error) { func getFileReaders(configs []*config, logger log.Logger, service dashboards.DashboardProvisioningService) ([]*FileReader, error) {
var readers []*FileReader var readers []*FileReader
for _, config := range configs { for _, config := range configs {
switch config.Type { switch config.Type {
case "file": case "file":
fileReader, err := NewDashboardFileReader(config, logger.New("type", config.Type, "name", config.Name), fileReader, err := NewDashboardFileReader(config, logger.New("type", config.Type, "name", config.Name), service)
store)
if err != nil { if err != nil {
return nil, errutil.Wrapf(err, "Failed to create file reader for config %v", config.Name) return nil, errutil.Wrapf(err, "Failed to create file reader for config %v", config.Name)
} }

View File

@ -16,7 +16,6 @@ import (
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/models"
"github.com/grafana/grafana/pkg/services/dashboards" "github.com/grafana/grafana/pkg/services/dashboards"
dashboardservice "github.com/grafana/grafana/pkg/services/dashboards/manager"
"github.com/grafana/grafana/pkg/util" "github.com/grafana/grafana/pkg/util"
) )
@ -41,7 +40,7 @@ type FileReader struct {
} }
// NewDashboardFileReader returns a new filereader based on `config` // NewDashboardFileReader returns a new filereader based on `config`
func NewDashboardFileReader(cfg *config, log log.Logger, store dashboards.Store) (*FileReader, error) { func NewDashboardFileReader(cfg *config, log log.Logger, service dashboards.DashboardProvisioningService) (*FileReader, error) {
var path string var path string
path, ok := cfg.Options["path"].(string) path, ok := cfg.Options["path"].(string)
if !ok { if !ok {
@ -62,7 +61,7 @@ func NewDashboardFileReader(cfg *config, log log.Logger, store dashboards.Store)
Cfg: cfg, Cfg: cfg,
Path: path, Path: path,
log: log, log: log,
dashboardProvisioningService: dashboardservice.ProvideDashboardService(store), dashboardProvisioningService: service,
FoldersFromFilesStructure: foldersFromFilesStructure, FoldersFromFilesStructure: foldersFromFilesStructure,
usageTracker: newUsageTracker(), usageTracker: newUsageTracker(),
}, nil }, nil

View File

@ -21,7 +21,9 @@ import (
) )
func ProvideService(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, pluginStore plugifaces.Store, func ProvideService(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, pluginStore plugifaces.Store,
encryptionService encryption.Internal, notificatonService *notifications.NotificationService, dashboardsStore dashboardservice.Store) (*ProvisioningServiceImpl, error) { encryptionService encryption.Internal, notificatonService *notifications.NotificationService,
dashboardService dashboardservice.DashboardProvisioningService,
) (*ProvisioningServiceImpl, error) {
s := &ProvisioningServiceImpl{ s := &ProvisioningServiceImpl{
Cfg: cfg, Cfg: cfg,
pluginStore: pluginStore, pluginStore: pluginStore,
@ -32,7 +34,7 @@ func ProvideService(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, pluginStore p
provisionNotifiers: notifiers.Provision, provisionNotifiers: notifiers.Provision,
provisionDatasources: datasources.Provision, provisionDatasources: datasources.Provision,
provisionPlugins: plugins.Provision, provisionPlugins: plugins.Provision,
dashboardsStore: dashboardsStore, dashboardService: dashboardService,
} }
return s, nil return s, nil
} }
@ -89,7 +91,7 @@ type ProvisioningServiceImpl struct {
provisionDatasources func(context.Context, string) error provisionDatasources func(context.Context, string) error
provisionPlugins func(context.Context, string, plugifaces.Store) error provisionPlugins func(context.Context, string, plugifaces.Store) error
mutex sync.Mutex mutex sync.Mutex
dashboardsStore dashboardservice.Store dashboardService dashboardservice.DashboardProvisioningService
} }
func (ps *ProvisioningServiceImpl) RunInitProvisioners(ctx context.Context) error { func (ps *ProvisioningServiceImpl) RunInitProvisioners(ctx context.Context) error {
@ -172,7 +174,7 @@ func (ps *ProvisioningServiceImpl) ProvisionNotifications(ctx context.Context) e
func (ps *ProvisioningServiceImpl) ProvisionDashboards(ctx context.Context) error { func (ps *ProvisioningServiceImpl) ProvisionDashboards(ctx context.Context) error {
dashboardPath := filepath.Join(ps.Cfg.ProvisioningPath, "dashboards") dashboardPath := filepath.Join(ps.Cfg.ProvisioningPath, "dashboards")
dashProvisioner, err := ps.newDashboardProvisioner(ctx, dashboardPath, ps.dashboardsStore) dashProvisioner, err := ps.newDashboardProvisioner(ctx, dashboardPath, ps.dashboardService)
if err != nil { if err != nil {
return errutil.Wrap("Failed to create provisioner", err) return errutil.Wrap("Failed to create provisioner", err)
} }

View File

@ -92,7 +92,7 @@ func setup() *serviceTestStruct {
} }
serviceTest.service = newProvisioningServiceImpl( serviceTest.service = newProvisioningServiceImpl(
func(context.Context, string, dashboardstore.Store) (dashboards.DashboardProvisioner, error) { func(context.Context, string, dashboardstore.DashboardProvisioningService) (dashboards.DashboardProvisioner, error) {
return serviceTest.mock, nil return serviceTest.mock, nil
}, },
nil, nil,