mirror of
https://github.com/grafana/grafana.git
synced 2024-12-01 21:19:28 -06:00
2179a2658e
* backendtype helper * abstracts alertingproxy * updates alerting api dep * prom endpoints
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
apimodels "github.com/grafana/alerting-api/pkg/api"
|
|
"github.com/grafana/grafana/pkg/api/response"
|
|
"github.com/grafana/grafana/pkg/models"
|
|
"github.com/grafana/grafana/pkg/services/datasources"
|
|
)
|
|
|
|
type ForkedPromSvc struct {
|
|
ProxySvc, GrafanaSvc PrometheusApiService
|
|
DatasourceCache datasources.CacheService
|
|
}
|
|
|
|
func NewForkedProm(datasourceCache datasources.CacheService, proxy, grafana PrometheusApiService) *ForkedPromSvc {
|
|
return &ForkedPromSvc{
|
|
ProxySvc: proxy,
|
|
GrafanaSvc: grafana,
|
|
DatasourceCache: datasourceCache,
|
|
}
|
|
}
|
|
|
|
func (p *ForkedPromSvc) RouteGetAlertStatuses(ctx *models.ReqContext) response.Response {
|
|
t, err := backendType(ctx, p.DatasourceCache)
|
|
if err != nil {
|
|
return response.Error(400, err.Error(), nil)
|
|
}
|
|
|
|
switch t {
|
|
case apimodels.GrafanaBackend:
|
|
return p.GrafanaSvc.RouteGetAlertStatuses(ctx)
|
|
case apimodels.LoTexRulerBackend:
|
|
return p.ProxySvc.RouteGetAlertStatuses(ctx)
|
|
default:
|
|
return response.Error(400, fmt.Sprintf("unexpected backend type (%v)", t), nil)
|
|
}
|
|
}
|
|
|
|
func (p *ForkedPromSvc) RouteGetRuleStatuses(ctx *models.ReqContext) response.Response {
|
|
t, err := backendType(ctx, p.DatasourceCache)
|
|
if err != nil {
|
|
return response.Error(400, err.Error(), nil)
|
|
}
|
|
|
|
switch t {
|
|
case apimodels.GrafanaBackend:
|
|
return p.GrafanaSvc.RouteGetRuleStatuses(ctx)
|
|
case apimodels.LoTexRulerBackend:
|
|
return p.ProxySvc.RouteGetRuleStatuses(ctx)
|
|
default:
|
|
return response.Error(400, fmt.Sprintf("unexpected backend type (%v)", t), nil)
|
|
}
|
|
}
|