dashboard.go 1001 B

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