mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Inject dashboard provisioning service instead of store (#45533)
This commit is contained in:
parent
bbddab0294
commit
f42c830b3c
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user