dashboard.go 910 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package dashboards
  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. }
  11. func NewDashboardProvisioner(configDirectory string) *DashboardProvisioner {
  12. log := log.New("provisioning.dashboard")
  13. d := &DashboardProvisioner{
  14. cfgReader: &configReader{path: configDirectory, log: log},
  15. log: log,
  16. }
  17. return d
  18. }
  19. func (provider *DashboardProvisioner) Provision(ctx context.Context) error {
  20. cfgs, err := provider.cfgReader.readConfig()
  21. if err != nil {
  22. return err
  23. }
  24. for _, cfg := range cfgs {
  25. switch cfg.Type {
  26. case "file":
  27. fileReader, err := NewDashboardFileReader(cfg, provider.log.New("type", cfg.Type, "name", cfg.Name))
  28. if err != nil {
  29. return err
  30. }
  31. go fileReader.ReadAndListen(ctx)
  32. default:
  33. return fmt.Errorf("type %s is not supported", cfg.Type)
  34. }
  35. }
  36. return nil
  37. }