diff --git a/remotes/docker/resolver.go b/remotes/docker/resolver.go index de4d36fa0..ac22c971a 100644 --- a/remotes/docker/resolver.go +++ b/remotes/docker/resolver.go @@ -39,7 +39,6 @@ import ( "github.com/containerd/log" "github.com/opencontainers/go-digest" ocispec "github.com/opencontainers/image-spec/specs-go/v1" - "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" ) var ( @@ -596,12 +595,9 @@ func (r *request) do(ctx context.Context) (*http.Response, error) { return nil } } - client.Transport = otelhttp.NewTransport( - client.Transport, - otelhttp.WithSpanNameFormatter(func(operation string, r *http.Request) string { - return tracing.Name("remotes.docker.resolver", "HTTPRequest") - }), - ) + + tracing.UpdateHTTPClient(client, tracing.Name("remotes.docker.resolver", "HTTPRequest")) + resp, err := client.Do(req) if err != nil { return nil, fmt.Errorf("failed to do request: %w", err) diff --git a/tracing/tracing.go b/tracing/tracing.go index d9b32fa2e..80d2b95c0 100644 --- a/tracing/tracing.go +++ b/tracing/tracing.go @@ -20,6 +20,7 @@ import ( "context" "net/http" + "go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/codes" @@ -47,6 +48,16 @@ func WithHTTPRequest(_ *http.Request) SpanOpt { } } +// UpdateHTTPClient updates the http client with the necessary otel transport +func UpdateHTTPClient(client *http.Client, name string) { + client.Transport = otelhttp.NewTransport( + client.Transport, + otelhttp.WithSpanNameFormatter(func(operation string, r *http.Request) string { + return name + }), + ) +} + // StartSpan starts child span in a context. func StartSpan(ctx context.Context, opName string, opts ...SpanOpt) (context.Context, *Span) { config := StartConfig{}