backends.go 800 B

123456789101112131415161718192021222324252627282930313233
  1. package graphite
  2. import (
  3. "fmt"
  4. "github.com/grafana/grafana/pkg/bus"
  5. m "github.com/grafana/grafana/pkg/models"
  6. )
  7. // AlertDatasource is bacon
  8. type AlertDatasource interface {
  9. GetSeries(job *m.AlertJob, datasource m.DataSource) (m.TimeSeriesSlice, error)
  10. }
  11. // GetSeries returns timeseries data from the datasource
  12. func GetSeries(job *m.AlertJob) (m.TimeSeriesSlice, error) {
  13. query := &m.GetDataSourceByIdQuery{
  14. Id: job.Rule.DatasourceId,
  15. OrgId: job.Rule.OrgId,
  16. }
  17. err := bus.Dispatch(query)
  18. if err != nil {
  19. return nil, fmt.Errorf("Could not find datasource for %d", job.Rule.DatasourceId)
  20. }
  21. if query.Result.Type == m.DS_GRAPHITE {
  22. return GraphiteClient{}.GetSeries(job, query.Result)
  23. }
  24. return nil, fmt.Errorf("Grafana does not support alerts for %s", query.Result.Type)
  25. }