chore: remove all remaining uses of golang.org/x/net/context (#47564)

* chore: remove all remaining uses of  golang.org/x/net/context

This PR finishes the work started in #47532, replacing all calls to that package with the stdlib context and using http.NewRequestWithContext to include the context where necessary.

Bonus: small formatting fixes to goimports in these files.

closes #44178

* tweak: use context.Background in favor of TODO for tests
This commit is contained in:
Kristin Laemmert
2022-04-11 14:20:10 -04:00
committed by GitHub
parent 03ba91e8a4
commit 8f6877e12a
10 changed files with 36 additions and 38 deletions

View File

@@ -1,6 +1,7 @@
package expr package expr
import ( import (
"context"
"encoding/json" "encoding/json"
"fmt" "fmt"
"time" "time"
@@ -8,7 +9,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana/pkg/models" "github.com/grafana/grafana/pkg/models"
"github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus"
"golang.org/x/net/context"
) )
var ( var (

View File

@@ -14,13 +14,13 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog"
azTime "github.com/grafana/grafana/pkg/tsdb/azuremonitor/time" azTime "github.com/grafana/grafana/pkg/tsdb/azuremonitor/time"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
"go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
) )
// ApplicationInsightsDatasource calls the application insights query API. // ApplicationInsightsDatasource calls the application insights query API.
@@ -158,7 +158,7 @@ func (e *ApplicationInsightsDatasource) executeQuery(ctx context.Context, query
tracer.Inject(ctx, req.Header, span) tracer.Inject(ctx, req.Header, span)
azlog.Debug("ApplicationInsights", "Request URL", req.URL.String()) azlog.Debug("ApplicationInsights", "Request URL", req.URL.String())
res, err := ctxhttp.Do(ctx, client, req) res, err := client.Do(req)
if err != nil { if err != nil {
dataResponse.Error = err dataResponse.Error = err
return dataResponse, nil return dataResponse, nil
@@ -200,7 +200,7 @@ func (e *ApplicationInsightsDatasource) executeQuery(ctx context.Context, query
func (e *ApplicationInsightsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) { func (e *ApplicationInsightsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) {
appInsightsAppID := dsInfo.Settings.AppInsightsAppId appInsightsAppID := dsInfo.Settings.AppInsightsAppId
req, err := http.NewRequest(http.MethodGet, url, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
if err != nil { if err != nil {
azlog.Debug("Failed to create request", "error", err) azlog.Debug("Failed to create request", "error", err)
return nil, errutil.Wrap("Failed to create request", err) return nil, errutil.Wrap("Failed to create request", err)

View File

@@ -12,14 +12,14 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/loganalytics"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
"go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
) )
type InsightsAnalyticsDatasource struct { type InsightsAnalyticsDatasource struct {
@@ -121,7 +121,7 @@ func (e *InsightsAnalyticsDatasource) executeQuery(ctx context.Context, query *I
} }
azlog.Debug("ApplicationInsights", "Request URL", req.URL.String()) azlog.Debug("ApplicationInsights", "Request URL", req.URL.String())
res, err := ctxhttp.Do(ctx, client, req) res, err := client.Do(req)
if err != nil { if err != nil {
return dataResponseError(err) return dataResponseError(err)
} }
@@ -180,7 +180,7 @@ func (e *InsightsAnalyticsDatasource) executeQuery(ctx context.Context, query *I
func (e *InsightsAnalyticsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) { func (e *InsightsAnalyticsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) {
appInsightsAppID := dsInfo.Settings.AppInsightsAppId appInsightsAppID := dsInfo.Settings.AppInsightsAppId
req, err := http.NewRequest(http.MethodGet, url, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
if err != nil { if err != nil {
azlog.Debug("Failed to create request", "error", err) azlog.Debug("Failed to create request", "error", err)
return nil, errutil.Wrap("Failed to create request", err) return nil, errutil.Wrap("Failed to create request", err)

View File

@@ -15,14 +15,14 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
"go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
) )
// AzureLogAnalyticsDatasource calls the Azure Log Analytics API's // AzureLogAnalyticsDatasource calls the Azure Log Analytics API's
@@ -173,7 +173,7 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A
tracer.Inject(ctx, req.Header, span) tracer.Inject(ctx, req.Header, span)
azlog.Debug("AzureLogAnalytics", "Request ApiURL", req.URL.String()) azlog.Debug("AzureLogAnalytics", "Request ApiURL", req.URL.String())
res, err := ctxhttp.Do(ctx, client, req) res, err := client.Do(req)
if err != nil { if err != nil {
return dataResponseErrorWithExecuted(err) return dataResponseErrorWithExecuted(err)
} }
@@ -224,7 +224,7 @@ func (e *AzureLogAnalyticsDatasource) executeQuery(ctx context.Context, query *A
} }
func (e *AzureLogAnalyticsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) { func (e *AzureLogAnalyticsDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) {
req, err := http.NewRequest(http.MethodGet, url, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
if err != nil { if err != nil {
azlog.Debug("Failed to create request", "error", err) azlog.Debug("Failed to create request", "error", err)
return nil, errutil.Wrap("failed to create request", err) return nil, errutil.Wrap("failed to create request", err)

View File

@@ -14,6 +14,8 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/azlog"
@@ -21,8 +23,6 @@ import (
azTime "github.com/grafana/grafana/pkg/tsdb/azuremonitor/time" azTime "github.com/grafana/grafana/pkg/tsdb/azuremonitor/time"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
"go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
) )
// AzureMonitorDatasource calls the Azure Monitor API - one of the four API's supported // AzureMonitorDatasource calls the Azure Monitor API - one of the four API's supported
@@ -179,7 +179,7 @@ func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types.
azlog.Debug("AzureMonitor", "Request ApiURL", req.URL.String()) azlog.Debug("AzureMonitor", "Request ApiURL", req.URL.String())
azlog.Debug("AzureMonitor", "Target", query.Target) azlog.Debug("AzureMonitor", "Target", query.Target)
res, err := ctxhttp.Do(ctx, cli, req) res, err := cli.Do(req)
if err != nil { if err != nil {
dataResponse.Error = err dataResponse.Error = err
return dataResponse return dataResponse
@@ -212,7 +212,7 @@ func (e *AzureMonitorDatasource) executeQuery(ctx context.Context, query *types.
} }
func (e *AzureMonitorDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) { func (e *AzureMonitorDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, url string) (*http.Request, error) {
req, err := http.NewRequest(http.MethodGet, url, nil) req, err := http.NewRequestWithContext(ctx, http.MethodGet, url, nil)
if err != nil { if err != nil {
azlog.Debug("Failed to create request", "error", err) azlog.Debug("Failed to create request", "error", err)
return nil, errutil.Wrap("Failed to create request", err) return nil, errutil.Wrap("Failed to create request", err)

View File

@@ -14,6 +14,7 @@ import (
"github.com/grafana/grafana-azure-sdk-go/azsettings" "github.com/grafana/grafana-azure-sdk-go/azsettings"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"go.opentelemetry.io/otel/attribute"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/infra/tracing" "github.com/grafana/grafana/pkg/infra/tracing"
@@ -23,8 +24,6 @@ import (
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/macros"
"github.com/grafana/grafana/pkg/tsdb/azuremonitor/types" "github.com/grafana/grafana/pkg/tsdb/azuremonitor/types"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
"go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
) )
// AzureResourceGraphResponse is the json response object from the Azure Resource Graph Analytics API. // AzureResourceGraphResponse is the json response object from the Azure Resource Graph Analytics API.
@@ -180,7 +179,7 @@ func (e *AzureResourceGraphDatasource) executeQuery(ctx context.Context, query *
tracer.Inject(ctx, req.Header, span) tracer.Inject(ctx, req.Header, span)
azlog.Debug("AzureResourceGraph", "Request ApiURL", req.URL.String()) azlog.Debug("AzureResourceGraph", "Request ApiURL", req.URL.String())
res, err := ctxhttp.Do(ctx, client, req) res, err := client.Do(req)
if err != nil { if err != nil {
return dataResponseErrorWithExecuted(err) return dataResponseErrorWithExecuted(err)
} }
@@ -227,7 +226,7 @@ func AddConfigLinks(frame data.Frame, dl string) data.Frame {
} }
func (e *AzureResourceGraphDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, reqBody []byte, url string) (*http.Request, error) { func (e *AzureResourceGraphDatasource) createRequest(ctx context.Context, dsInfo types.DatasourceInfo, reqBody []byte, url string) (*http.Request, error) {
req, err := http.NewRequest(http.MethodPost, url, bytes.NewBuffer(reqBody)) req, err := http.NewRequestWithContext(ctx, http.MethodPost, url, bytes.NewBuffer(reqBody))
if err != nil { if err != nil {
azlog.Debug("Failed to create request", "error", err) azlog.Debug("Failed to create request", "error", err)
return nil, errutil.Wrap("failed to create request", err) return nil, errutil.Wrap("failed to create request", err)

View File

@@ -20,8 +20,6 @@ import (
"github.com/grafana/grafana/pkg/infra/httpclient" "github.com/grafana/grafana/pkg/infra/httpclient"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/tsdb/intervalv2" "github.com/grafana/grafana/pkg/tsdb/intervalv2"
"golang.org/x/net/context/ctxhttp"
) )
type DatasourceInfo struct { type DatasourceInfo struct {
@@ -161,9 +159,9 @@ func (c *baseClientImpl) executeRequest(method, uriPath, uriQuery string, body [
var req *http.Request var req *http.Request
if method == http.MethodPost { if method == http.MethodPost {
req, err = http.NewRequest(http.MethodPost, u.String(), bytes.NewBuffer(body)) req, err = http.NewRequestWithContext(c.ctx, http.MethodPost, u.String(), bytes.NewBuffer(body))
} else { } else {
req, err = http.NewRequest(http.MethodGet, u.String(), nil) req, err = http.NewRequestWithContext(c.ctx, http.MethodGet, u.String(), nil)
} }
if err != nil { if err != nil {
return nil, err return nil, err
@@ -193,7 +191,7 @@ func (c *baseClientImpl) executeRequest(method, uriPath, uriQuery string, body [
clientLog.Debug("Executed request", "took", elapsed) clientLog.Debug("Executed request", "took", elapsed)
}() }()
//nolint:bodyclose //nolint:bodyclose
resp, err := ctxhttp.Do(c.ctx, httpClient, req) resp, err := httpClient.Do(req)
if err != nil { if err != nil {
return nil, err return nil, err
} }

View File

@@ -15,7 +15,6 @@ import (
"time" "time"
"go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/attribute"
"golang.org/x/net/context/ctxhttp"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource" "github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
@@ -148,7 +147,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
s.logger.Debug("Graphite request", "params", formData) s.logger.Debug("Graphite request", "params", formData)
} }
graphiteReq, err := s.createRequest(dsInfo, formData) graphiteReq, err := s.createRequest(ctx, dsInfo, formData)
if err != nil { if err != nil {
return &result, err return &result, err
} }
@@ -163,7 +162,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
defer span.End() defer span.End()
s.tracer.Inject(ctx, graphiteReq.Header, span) s.tracer.Inject(ctx, graphiteReq.Header, span)
res, err := ctxhttp.Do(ctx, dsInfo.HTTPClient, graphiteReq) res, err := dsInfo.HTTPClient.Do(graphiteReq)
if err != nil { if err != nil {
return &result, err return &result, err
} }
@@ -252,14 +251,14 @@ func (s *Service) toDataFrames(response *http.Response) (frames data.Frames, err
return frames, nil return frames, nil
} }
func (s *Service) createRequest(dsInfo *datasourceInfo, data url.Values) (*http.Request, error) { func (s *Service) createRequest(ctx context.Context, dsInfo *datasourceInfo, data url.Values) (*http.Request, error) {
u, err := url.Parse(dsInfo.URL) u, err := url.Parse(dsInfo.URL)
if err != nil { if err != nil {
return nil, err return nil, err
} }
u.Path = path.Join(u.Path, "render") u.Path = path.Join(u.Path, "render")
req, err := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(data.Encode())) req, err := http.NewRequestWithContext(ctx, http.MethodPost, u.String(), strings.NewReader(data.Encode()))
if err != nil { if err != nil {
s.logger.Info("Failed to create request", "error", err) s.logger.Info("Failed to create request", "error", err)
return nil, fmt.Errorf("failed to create request: %w", err) return nil, fmt.Errorf("failed to create request: %w", err)

View File

@@ -16,11 +16,11 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend/datasource" "github.com/grafana/grafana-plugin-sdk-go/backend/datasource"
"github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt" "github.com/grafana/grafana-plugin-sdk-go/backend/instancemgmt"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/components/simplejson" "github.com/grafana/grafana/pkg/components/simplejson"
"github.com/grafana/grafana/pkg/infra/httpclient" "github.com/grafana/grafana/pkg/infra/httpclient"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"golang.org/x/net/context/ctxhttp"
) )
type Service struct { type Service struct {
@@ -86,12 +86,12 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
return nil, err return nil, err
} }
request, err := s.createRequest(dsInfo, tsdbQuery) request, err := s.createRequest(ctx, dsInfo, tsdbQuery)
if err != nil { if err != nil {
return &backend.QueryDataResponse{}, err return &backend.QueryDataResponse{}, err
} }
res, err := ctxhttp.Do(ctx, dsInfo.HTTPClient, request) res, err := dsInfo.HTTPClient.Do(request)
if err != nil { if err != nil {
return &backend.QueryDataResponse{}, err return &backend.QueryDataResponse{}, err
} }
@@ -104,7 +104,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
return result, nil return result, nil
} }
func (s *Service) createRequest(dsInfo *datasourceInfo, data OpenTsdbQuery) (*http.Request, error) { func (s *Service) createRequest(ctx context.Context, dsInfo *datasourceInfo, data OpenTsdbQuery) (*http.Request, error) {
u, err := url.Parse(dsInfo.URL) u, err := url.Parse(dsInfo.URL)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -117,7 +117,7 @@ func (s *Service) createRequest(dsInfo *datasourceInfo, data OpenTsdbQuery) (*ht
return nil, fmt.Errorf("failed to create request: %w", err) return nil, fmt.Errorf("failed to create request: %w", err)
} }
req, err := http.NewRequest(http.MethodPost, u.String(), strings.NewReader(string(postData))) req, err := http.NewRequestWithContext(ctx, http.MethodPost, u.String(), strings.NewReader(string(postData)))
if err != nil { if err != nil {
s.logger.Info("Failed to create request", "error", err) s.logger.Info("Failed to create request", "error", err)
return nil, fmt.Errorf("failed to create request: %w", err) return nil, fmt.Errorf("failed to create request: %w", err)

View File

@@ -1,6 +1,7 @@
package opentsdb package opentsdb
import ( import (
"context"
"io/ioutil" "io/ioutil"
"net/http" "net/http"
"strings" "strings"
@@ -10,9 +11,10 @@ import (
"github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/log"
) )
func TestOpenTsdbExecutor(t *testing.T) { func TestOpenTsdbExecutor(t *testing.T) {
@@ -21,7 +23,7 @@ func TestOpenTsdbExecutor(t *testing.T) {
} }
t.Run("create request", func(t *testing.T) { t.Run("create request", func(t *testing.T) {
req, err := service.createRequest(&datasourceInfo{}, OpenTsdbQuery{}) req, err := service.createRequest(context.Background(), &datasourceInfo{}, OpenTsdbQuery{})
require.NoError(t, err) require.NoError(t, err)
assert.Equal(t, "POST", req.Method) assert.Equal(t, "POST", req.Method)