Chore: Propagate context for data source provisioning (#40235)

* context all the things

* apply feedback

* rollback some alerting changes

* rollback some alerting changes #2

* more rollbacks

* more rollbacks #2

* more rollbacks #3

* more rollbacks #4

* fix integration test

* add missing context

* add missing and remove incorrect dispatch
This commit is contained in:
Will Browne
2021-10-18 17:06:19 +02:00
committed by GitHub
parent ec0fcbbf4b
commit e4297006f6
22 changed files with 129 additions and 112 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
package alerting
import (
"context"
"encoding/json"
"github.com/grafana/grafana/pkg/models"
@@ -62,7 +63,7 @@ func (e *AlertEngine) mapRulesToUsageStats(rules []*models.Alert) (DatasourceAle
result := map[string]int{}
for k, v := range typeCount {
query := &models.GetDataSourceQuery{Id: k}
err := e.Bus.Dispatch(query)
err := e.Bus.DispatchCtx(context.TODO(), query)
if err != nil {
return map[string]int{}, nil
}
+2 -1
View File
@@ -1,6 +1,7 @@
package alerting
import (
"context"
"encoding/json"
"io/ioutil"
"testing"
@@ -38,7 +39,7 @@ func TestAlertingUsageStats(t *testing.T) {
return nil
})
ae.Bus.AddHandler(func(query *models.GetDataSourceQuery) error {
ae.Bus.AddHandlerCtx(func(ctx context.Context, query *models.GetDataSourceQuery) error {
ds := map[int64]*models.DataSource{
1: {Type: "influxdb"},
2: {Type: "graphite"},
+1 -1
View File
@@ -140,7 +140,7 @@ func (c *QueryCondition) executeQuery(context *alerting.EvalContext, timeRange p
OrgId: context.Rule.OrgID,
}
if err := bus.Dispatch(getDsInfo); err != nil {
if err := bus.DispatchCtx(context.Ctx, getDsInfo); err != nil {
return nil, fmt.Errorf("could not find datasource: %w", err)
}
@@ -137,13 +137,14 @@ func (rh fakeIntervalTestReqHandler) HandleRequest(ctx context.Context, dsInfo *
//nolint: staticcheck // plugins.DataResponse deprecated
func applyScenario(timeRange string, dataSourceJsonData *simplejson.Json, queryModel string, verifier func(query plugins.DataSubQuery)) {
Convey("desc", func() {
bus.AddHandler("test", func(query *models.GetDataSourceQuery) error {
bus.AddHandlerCtx("test", func(ctx context.Context, query *models.GetDataSourceQuery) error {
query.Result = &models.DataSource{Id: 1, Type: "graphite", JsonData: dataSourceJsonData}
return nil
})
ctx := &queryIntervalTestContext{}
ctx.result = &alerting.EvalContext{
Ctx: context.Background(),
Rule: &alerting.Rule{},
RequestValidator: &validations.OSSPluginRequestValidator{},
}
@@ -241,13 +241,14 @@ func (rh fakeReqHandler) HandleRequest(context.Context, *models.DataSource, plug
func queryConditionScenario(desc string, fn queryConditionScenarioFunc) {
Convey(desc, func() {
bus.AddHandler("test", func(query *models.GetDataSourceQuery) error {
bus.AddHandlerCtx("test", func(ctx context.Context, query *models.GetDataSourceQuery) error {
query.Result = &models.DataSource{Id: 1, Type: "graphite"}
return nil
})
ctx := &queryConditionTestContext{}
ctx.result = &alerting.EvalContext{
Ctx: context.Background(),
Rule: &alerting.Rule{},
RequestValidator: &validations.OSSPluginRequestValidator{},
}
+3 -2
View File
@@ -1,6 +1,7 @@
package alerting
import (
"context"
"encoding/json"
"errors"
"fmt"
@@ -32,14 +33,14 @@ func NewDashAlertExtractor(dash *models.Dashboard, orgID int64, user *models.Sig
func (e *DashAlertExtractor) lookupDatasourceID(dsName string) (*models.DataSource, error) {
if dsName == "" {
query := &models.GetDefaultDataSourceQuery{OrgId: e.OrgID}
if err := bus.Dispatch(query); err != nil {
if err := bus.DispatchCtx(context.TODO(), query); err != nil {
return nil, err
}
return query.Result, nil
}
query := &models.GetDataSourceQuery{Name: dsName, OrgId: e.OrgID}
if err := bus.Dispatch(query); err != nil {
if err := bus.DispatchCtx(context.TODO(), query); err != nil {
return nil, err
}