provisioning.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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/notifiers"
  8. "github.com/grafana/grafana/pkg/services/provisioning/dashboards"
  9. "github.com/grafana/grafana/pkg/services/provisioning/datasources"
  10. "github.com/grafana/grafana/pkg/setting"
  11. )
  12. func init() {
  13. registry.RegisterService(&ProvisioningService{})
  14. }
  15. type ProvisioningService struct {
  16. Cfg *setting.Cfg `inject:""`
  17. }
  18. func (ps *ProvisioningService) Init() error {
  19. datasourcePath := path.Join(ps.Cfg.ProvisioningPath, "datasources")
  20. if err := datasources.Provision(datasourcePath); err != nil {
  21. return fmt.Errorf("Datasource provisioning error: %v", err)
  22. }
  23. alertNotificationsPath := path.Join(ps.Cfg.ProvisioningPath, "notifiers")
  24. if err := notifiers.Provision(alertNotificationsPath); err != nil {
  25. return fmt.Errorf("Alert notification provisioning error: %v", err)
  26. }
  27. return nil
  28. }
  29. func (ps *ProvisioningService) Run(ctx context.Context) error {
  30. dashboardPath := path.Join(ps.Cfg.ProvisioningPath, "dashboards")
  31. dashProvisioner := dashboards.NewDashboardProvisioner(dashboardPath)
  32. if err := dashProvisioner.Provision(ctx); err != nil {
  33. return err
  34. }
  35. <-ctx.Done()
  36. return ctx.Err()
  37. }