dashboard.go 979 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. 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. err := d.Provision(ctx)
  19. return d, err
  20. }
  21. func (provider *DashboardProvisioner) Provision(ctx context.Context) error {
  22. cfgs, err := provider.cfgReader.readConfig()
  23. if err != nil {
  24. return err
  25. }
  26. for _, cfg := range cfgs {
  27. switch cfg.Type {
  28. case "file":
  29. fileReader, err := NewDashboardFileReader(cfg, provider.log.New("type", cfg.Type, "name", cfg.Name))
  30. if err != nil {
  31. return err
  32. }
  33. go fileReader.ReadAndListen(ctx)
  34. default:
  35. return fmt.Errorf("type %s is not supported", cfg.Type)
  36. }
  37. }
  38. return nil
  39. }