dashboard.go 956 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package dashboard
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/grafana/grafana/pkg/log"
  6. )
  7. type DashboardProvisioner struct {
  8. cfgReader *configReader
  9. log log.Logger
  10. ctx context.Context
  11. }
  12. func Provision(ctx context.Context, configDirectory string) (*DashboardProvisioner, error) {
  13. d := &DashboardProvisioner{
  14. cfgReader: &configReader{path: configDirectory},
  15. log: log.New("provisioning.dashboard"),
  16. ctx: ctx,
  17. }
  18. return d, d.Init(ctx)
  19. }
  20. func (provider *DashboardProvisioner) Init(ctx context.Context) error {
  21. cfgs, err := provider.cfgReader.readConfig()
  22. if err != nil {
  23. return err
  24. }
  25. for _, cfg := range cfgs {
  26. switch cfg.Type {
  27. case "file":
  28. fileReader, err := NewDashboardFilereader(cfg, provider.log.New("type", cfg.Type, "name", cfg.Name))
  29. if err != nil {
  30. return err
  31. }
  32. go fileReader.ReadAndListen(ctx)
  33. default:
  34. return fmt.Errorf("type %s is not supported", cfg.Type)
  35. }
  36. }
  37. return nil
  38. }