provisioning.go 983 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package provisioning
  2. import (
  3. "context"
  4. "fmt"
  5. "path"
  6. "github.com/grafana/grafana/pkg/registry"
  7. "github.com/grafana/grafana/pkg/services/provisioning/dashboards"
  8. "github.com/grafana/grafana/pkg/services/provisioning/datasources"
  9. "github.com/grafana/grafana/pkg/setting"
  10. )
  11. func init() {
  12. registry.RegisterService(&ProvisioningService{})
  13. }
  14. type ProvisioningService struct {
  15. Cfg *setting.Cfg `inject:""`
  16. }
  17. func (ps *ProvisioningService) Init() error {
  18. datasourcePath := path.Join(ps.Cfg.ProvisioningPath, "datasources")
  19. if err := datasources.Provision(datasourcePath); err != nil {
  20. return fmt.Errorf("Datasource provisioning error: %v", err)
  21. }
  22. return nil
  23. }
  24. func (ps *ProvisioningService) Run(ctx context.Context) error {
  25. dashboardPath := path.Join(ps.Cfg.ProvisioningPath, "dashboards")
  26. dashProvisioner := dashboards.NewDashboardProvisioner(dashboardPath)
  27. if err := dashProvisioner.Provision(ctx); err != nil {
  28. return err
  29. }
  30. <-ctx.Done()
  31. return ctx.Err()
  32. }