Skip to content

Commit 2026aef

Browse files
authored
[chore] Replace extensionauth.Client mentions with protocol-specific mentions (#38601)
<!--Ex. Fixing a bug - Describe the bug and how this fixes the issue. Ex. Adding a feature - Explain what this achieves.--> #### Description <!-- Issue number (e.g. #1234) or full URL to issue, if applicable. --> Follows #38451 and open-telemetry/opentelemetry-collector/pull/12574. Removes explicit mentions to `extensionauth.Client` and replaces them by `extensionauth.HTTPClient` and `extensionauth.GRPCClient`
1 parent 09a9e53 commit 2026aef

File tree

29 files changed

+116
-121
lines changed

29 files changed

+116
-121
lines changed

exporter/elasticsearchexporter/exporter_test.go

+29-26
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"go.opentelemetry.io/collector/exporter/exporterbatcher"
3030
"go.opentelemetry.io/collector/exporter/exportertest"
3131
"go.opentelemetry.io/collector/exporter/xexporter"
32+
"go.opentelemetry.io/collector/extension"
3233
"go.opentelemetry.io/collector/extension/extensionauth"
3334
"go.opentelemetry.io/collector/pdata/pcommon"
3435
"go.opentelemetry.io/collector/pdata/plog"
@@ -41,13 +42,6 @@ import (
4142
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter/internal/metadata"
4243
)
4344

44-
func build[T any, O any](t *testing.T, f func(...O) (T, error), opts ...O) T {
45-
t.Helper()
46-
v, err := f(opts...)
47-
require.NoError(t, err)
48-
return v
49-
}
50-
5145
func TestExporterLogs(t *testing.T) {
5246
t.Run("publish with success", func(t *testing.T) {
5347
rec := newBulkRecorder()
@@ -2173,17 +2167,13 @@ func TestExporterAuth(t *testing.T) {
21732167
})
21742168
err := exporter.Start(context.Background(), &mockHost{
21752169
extensions: map[component.ID]component.Component{
2176-
testauthID: build(t, extensionauth.NewClient,
2177-
extensionauth.WithClientRoundTripper(func(http.RoundTripper) (http.RoundTripper, error) {
2178-
return roundTripperFunc(func(*http.Request) (*http.Response, error) {
2179-
select {
2180-
case done <- struct{}{}:
2181-
default:
2182-
}
2183-
return nil, errors.New("nope")
2184-
}), nil
2185-
}),
2186-
),
2170+
testauthID: newMockAuthClient(func(*http.Request) (*http.Response, error) {
2171+
select {
2172+
case done <- struct{}{}:
2173+
default:
2174+
}
2175+
return nil, errors.New("nope")
2176+
}),
21872177
},
21882178
})
21892179
require.NoError(t, err)
@@ -2211,14 +2201,10 @@ func TestExporterBatcher(t *testing.T) {
22112201
})
22122202
err := exporter.Start(context.Background(), &mockHost{
22132203
extensions: map[component.ID]component.Component{
2214-
testauthID: build(t, extensionauth.NewClient,
2215-
extensionauth.WithClientRoundTripper(func(http.RoundTripper) (http.RoundTripper, error) {
2216-
return roundTripperFunc(func(req *http.Request) (*http.Response, error) {
2217-
requests = append(requests, req)
2218-
return nil, errors.New("nope")
2219-
}), nil
2220-
}),
2221-
),
2204+
testauthID: newMockAuthClient(func(req *http.Request) (*http.Response, error) {
2205+
requests = append(requests, req)
2206+
return nil, errors.New("nope")
2207+
}),
22222208
},
22232209
})
22242210
require.NoError(t, err)
@@ -2396,6 +2382,23 @@ func (f roundTripperFunc) RoundTrip(r *http.Request) (*http.Response, error) {
23962382
return f(r)
23972383
}
23982384

2385+
var (
2386+
_ extension.Extension = (*mockAuthClient)(nil)
2387+
_ extensionauth.HTTPClient = (*mockAuthClient)(nil)
2388+
)
2389+
2390+
type mockAuthClient struct {
2391+
component.StartFunc
2392+
component.ShutdownFunc
2393+
extensionauth.ClientRoundTripperFunc
2394+
}
2395+
2396+
func newMockAuthClient(f func(*http.Request) (*http.Response, error)) *mockAuthClient {
2397+
return &mockAuthClient{ClientRoundTripperFunc: func(http.RoundTripper) (http.RoundTripper, error) {
2398+
return roundTripperFunc(f), nil
2399+
}}
2400+
}
2401+
23992402
func actionJSONToIndex(t *testing.T, actionJSON json.RawMessage) string {
24002403
t.Helper()
24012404
return actionGetValue(t, actionJSON, "_index")

exporter/elasticsearchexporter/go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ require (
2727
go.opentelemetry.io/collector/exporter/exporterhelper/xexporterhelper v0.121.1-0.20250313100724-0885401136ff
2828
go.opentelemetry.io/collector/exporter/exportertest v0.121.1-0.20250313100724-0885401136ff
2929
go.opentelemetry.io/collector/exporter/xexporter v0.121.1-0.20250313100724-0885401136ff
30+
go.opentelemetry.io/collector/extension v1.27.1-0.20250313100724-0885401136ff
3031
go.opentelemetry.io/collector/extension/extensionauth v0.121.1-0.20250313100724-0885401136ff
3132
go.opentelemetry.io/collector/pdata v1.27.1-0.20250313100724-0885401136ff
3233
go.opentelemetry.io/collector/pdata/pprofile v0.121.1-0.20250313100724-0885401136ff
@@ -83,7 +84,6 @@ require (
8384
go.opentelemetry.io/collector/consumer/consumererror/xconsumererror v0.121.1-0.20250313100724-0885401136ff // indirect
8485
go.opentelemetry.io/collector/consumer/consumertest v0.121.1-0.20250313100724-0885401136ff // indirect
8586
go.opentelemetry.io/collector/consumer/xconsumer v0.121.1-0.20250313100724-0885401136ff // indirect
86-
go.opentelemetry.io/collector/extension v1.27.1-0.20250313100724-0885401136ff // indirect
8787
go.opentelemetry.io/collector/extension/xextension v0.121.1-0.20250313100724-0885401136ff // indirect
8888
go.opentelemetry.io/collector/featuregate v1.27.1-0.20250313100724-0885401136ff // indirect
8989
go.opentelemetry.io/collector/pipeline v0.121.1-0.20250313100724-0885401136ff // indirect

exporter/otelarrowexporter/otelarrow.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ func (e *baseExporter) start(ctx context.Context, host component.Host) (err erro
140140
var perRPCCreds credentials.PerRPCCredentials
141141
if e.config.ClientConfig.Auth != nil {
142142
// Get the auth extension, we'll use it to enrich the request context.
143-
authClient, err := e.config.ClientConfig.Auth.GetClientAuthenticator(ctx, host.GetExtensions())
143+
authClient, err := e.config.ClientConfig.Auth.GetGRPCClientAuthenticator(ctx, host.GetExtensions())
144144
if err != nil {
145145
return err
146146
}

exporter/otelarrowexporter/otelarrow_test.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88
"fmt"
99
"io"
1010
"net"
11-
"net/http"
1211
"path/filepath"
1312
"runtime"
1413
"sync"
@@ -264,13 +263,15 @@ func (h *hostWithExtensions) GetExtensions() map[component.ID]component.Componen
264263
return h.exts
265264
}
266265

266+
var _ extensionauth.GRPCClient = (*testAuthExtension)(nil)
267+
267268
type testAuthExtension struct {
268269
extension.Extension
269270

270271
prc credentials.PerRPCCredentials
271272
}
272273

273-
func newTestAuthExtension(t *testing.T, mdf func(ctx context.Context) map[string]string) extensionauth.Client {
274+
func newTestAuthExtension(t *testing.T, mdf func(ctx context.Context) map[string]string) extension.Extension {
274275
ctrl := gomock.NewController(t)
275276
prc := grpcmock.NewMockPerRPCCredentials(ctrl)
276277
prc.EXPECT().RequireTransportSecurity().AnyTimes().Return(false)
@@ -284,10 +285,6 @@ func newTestAuthExtension(t *testing.T, mdf func(ctx context.Context) map[string
284285
}
285286
}
286287

287-
func (a *testAuthExtension) RoundTripper(_ http.RoundTripper) (http.RoundTripper, error) {
288-
return nil, fmt.Errorf("unused")
289-
}
290-
291288
func (a *testAuthExtension) PerRPCCredentials() (credentials.PerRPCCredentials, error) {
292289
return a.prc, nil
293290
}

extension/asapauthextension/extension.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,16 @@ import (
1111
"bitbucket.org/atlassian/go-asap/v2"
1212
"github.com/SermoDigital/jose/crypto"
1313
"go.opentelemetry.io/collector/component"
14+
"go.opentelemetry.io/collector/extension"
1415
"go.opentelemetry.io/collector/extension/extensionauth"
1516
"google.golang.org/grpc/credentials"
1617
)
1718

18-
var _ extensionauth.Client = (*asapAuthExtension)(nil)
19+
var (
20+
_ extension.Extension = (*asapAuthExtension)(nil)
21+
_ extensionauth.HTTPClient = (*asapAuthExtension)(nil)
22+
_ extensionauth.GRPCClient = (*asapAuthExtension)(nil)
23+
)
1924

2025
type asapAuthExtension struct {
2126
component.StartFunc
@@ -25,17 +30,17 @@ type asapAuthExtension struct {
2530
privateKey any
2631
}
2732

28-
// PerRPCCredentials returns extensionauth.Client.
33+
// PerRPCCredentials returns extensionauth.GRPCClient.
2934
func (e *asapAuthExtension) PerRPCCredentials() (credentials.PerRPCCredentials, error) {
3035
return &perRPCAuth{provisioner: e.provisioner, privateKey: e.privateKey}, nil
3136
}
3237

33-
// RoundTripper implements extensionauth.Client.
38+
// RoundTripper implements extensionauth.HTTPClient.
3439
func (e *asapAuthExtension) RoundTripper(base http.RoundTripper) (http.RoundTripper, error) {
3540
return asap.NewTransportDecorator(e.provisioner, e.privateKey)(base), nil
3641
}
3742

38-
func createASAPClientAuthenticator(cfg *Config) (extensionauth.Client, error) {
43+
func createASAPClientAuthenticator(cfg *Config) (*asapAuthExtension, error) {
3944
pk, err := asap.NewPrivateKey([]byte(cfg.PrivateKey))
4045
if err != nil {
4146
return nil, err

extension/basicauthextension/extension.go

+7-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/tg123/go-htpasswd"
1717
"go.opentelemetry.io/collector/client"
1818
"go.opentelemetry.io/collector/component"
19+
"go.opentelemetry.io/collector/extension"
1920
"go.opentelemetry.io/collector/extension/extensionauth"
2021
creds "google.golang.org/grpc/credentials"
2122
)
@@ -27,7 +28,7 @@ var (
2728
errInvalidFormat = errors.New("invalid authorization format")
2829
)
2930

30-
func newClientAuthExtension(cfg *Config) extensionauth.Client {
31+
func newClientAuthExtension(cfg *Config) *basicAuthClient {
3132
return &basicAuthClient{clientAuth: cfg.ClientAuth}
3233
}
3334

@@ -201,7 +202,11 @@ func (b *basicAuthRoundTripper) RoundTrip(request *http.Request) (*http.Response
201202
return b.base.RoundTrip(newRequest)
202203
}
203204

204-
var _ extensionauth.Client = (*basicAuthClient)(nil)
205+
var (
206+
_ extension.Extension = (*basicAuthClient)(nil)
207+
_ extensionauth.HTTPClient = (*basicAuthClient)(nil)
208+
_ extensionauth.GRPCClient = (*basicAuthClient)(nil)
209+
)
205210

206211
type basicAuthClient struct {
207212
component.StartFunc

extension/bearertokenauthextension/bearertokenauth.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515

1616
"github.com/fsnotify/fsnotify"
1717
"go.opentelemetry.io/collector/component"
18+
"go.opentelemetry.io/collector/extension"
1819
"go.opentelemetry.io/collector/extension/extensionauth"
1920
"go.uber.org/zap"
2021
"google.golang.org/grpc/credentials"
@@ -38,11 +39,13 @@ func (c *PerRPCAuth) RequireTransportSecurity() bool {
3839
}
3940

4041
var (
41-
_ extensionauth.Server = (*BearerTokenAuth)(nil)
42-
_ extensionauth.Client = (*BearerTokenAuth)(nil)
42+
_ extension.Extension = (*BearerTokenAuth)(nil)
43+
_ extensionauth.Server = (*BearerTokenAuth)(nil)
44+
_ extensionauth.HTTPClient = (*BearerTokenAuth)(nil)
45+
_ extensionauth.GRPCClient = (*BearerTokenAuth)(nil)
4346
)
4447

45-
// BearerTokenAuth is an implementation of extensionauth.Client. It embeds a static authorization "bearer" token in every rpc call.
48+
// BearerTokenAuth is an implementation of extensionauth interfaces. It embeds a static authorization "bearer" token in every rpc call.
4649
type BearerTokenAuth struct {
4750
scheme string
4851
authorizationValuesAtomic atomic.Value
@@ -53,8 +56,6 @@ type BearerTokenAuth struct {
5356
logger *zap.Logger
5457
}
5558

56-
var _ extensionauth.Client = (*BearerTokenAuth)(nil)
57-
5859
func newBearerTokenAuth(cfg *Config, logger *zap.Logger) *BearerTokenAuth {
5960
if cfg.Filename != "" && (cfg.BearerToken != "" || len(cfg.Tokens) > 0) {
6061
logger.Warn("a filename is specified. Configured token(s) is ignored!")

extension/headerssetterextension/extension.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/http"
1111

1212
"go.opentelemetry.io/collector/component"
13+
"go.opentelemetry.io/collector/extension"
1314
"go.opentelemetry.io/collector/extension/extensionauth"
1415
"go.uber.org/zap"
1516
"google.golang.org/grpc/credentials"
@@ -23,7 +24,11 @@ type Header struct {
2324
source source.Source
2425
}
2526

26-
var _ extensionauth.Client = (*headerSetterExtension)(nil)
27+
var (
28+
_ extension.Extension = (*headerSetterExtension)(nil)
29+
_ extensionauth.HTTPClient = (*headerSetterExtension)(nil)
30+
_ extensionauth.GRPCClient = (*headerSetterExtension)(nil)
31+
)
2732

2833
type headerSetterExtension struct {
2934
component.StartFunc
@@ -32,20 +37,20 @@ type headerSetterExtension struct {
3237
headers []Header
3338
}
3439

35-
// PerRPCCredentials implements extensionauth.Client.
40+
// PerRPCCredentials implements extensionauth.GRPCClient.
3641
func (h *headerSetterExtension) PerRPCCredentials() (credentials.PerRPCCredentials, error) {
3742
return &headersPerRPC{headers: h.headers}, nil
3843
}
3944

40-
// RoundTripper implements extensionauth.Client.
45+
// RoundTripper implements extensionauth.HTTPClient.
4146
func (h *headerSetterExtension) RoundTripper(base http.RoundTripper) (http.RoundTripper, error) {
4247
return &headersRoundTripper{
4348
base: base,
4449
headers: h.headers,
4550
}, nil
4651
}
4752

48-
func newHeadersSetterExtension(cfg *Config, logger *zap.Logger) (extensionauth.Client, error) {
53+
func newHeadersSetterExtension(cfg *Config, logger *zap.Logger) (*headerSetterExtension, error) {
4954
if cfg == nil {
5055
return nil, errors.New("extension configuration is not provided")
5156
}

extension/oauth2clientauthextension/extension.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"net/http"
1010

1111
"go.opentelemetry.io/collector/component"
12+
"go.opentelemetry.io/collector/extension"
1213
"go.opentelemetry.io/collector/extension/extensionauth"
1314
"go.uber.org/multierr"
1415
"go.uber.org/zap"
@@ -18,7 +19,11 @@ import (
1819
grpcOAuth "google.golang.org/grpc/credentials/oauth"
1920
)
2021

21-
var _ extensionauth.Client = (*clientAuthenticator)(nil)
22+
var (
23+
_ extension.Extension = (*clientAuthenticator)(nil)
24+
_ extensionauth.HTTPClient = (*clientAuthenticator)(nil)
25+
_ extensionauth.GRPCClient = (*clientAuthenticator)(nil)
26+
)
2227

2328
// clientAuthenticator provides implementation for providing client authentication using OAuth2 client credentials
2429
// workflow for both gRPC and HTTP clients.

extension/opampextension/auth.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ func makeHeadersFunc(logger *zap.Logger, serverCfg *OpAMPServer, host component.
4646
return nil, fmt.Errorf("could not find auth extension %q", extID)
4747
}
4848

49-
authExt, ok := ext.(extensionauth.Client)
49+
authExt, ok := ext.(extensionauth.HTTPClient)
5050
if !ok {
51-
return nil, fmt.Errorf("auth extension %q is not an extensionauth.Client", extID)
51+
return nil, fmt.Errorf("auth extension %q is not an extensionauth.HTTPClient", extID)
5252
}
5353

5454
hcrt := &headerCaptureRoundTripper{}

extension/opampextension/auth_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func TestMakeHeadersFunc(t *testing.T) {
5454
},
5555
}, host)
5656

57-
require.EqualError(t, err, `auth extension "bearerauth" is not an extensionauth.Client`)
57+
require.EqualError(t, err, `auth extension "bearerauth" is not an extensionauth.HTTPClient`)
5858
require.Nil(t, headersFunc)
5959
})
6060

extension/sigv4authextension/doc.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
//go:generate mdatagen metadata.yaml
55

6-
// Package sigv4authextension implements the `extensionauth.Client` interface.
6+
// Package sigv4authextension implements the `extensionauth.HTTPClient` interface.
77
// This extension provides the Sigv4 process of adding authentication information to AWS API requests sent by HTTP.
88
// As such, the extension can be used for HTTP based exporters that export to AWS services.
99
package sigv4authextension // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/sigv4authextension"

extension/sigv4authextension/extension.go

+7-10
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package sigv4authextension // import "github.com/open-telemetry/opentelemetry-co
55

66
import (
77
"context"
8-
"errors"
98
"net/http"
109

1110
"github.com/aws/aws-sdk-go-v2/aws"
@@ -14,12 +13,12 @@ import (
1413
"github.com/aws/aws-sdk-go-v2/credentials/stscreds"
1514
"github.com/aws/aws-sdk-go-v2/service/sts"
1615
"go.opentelemetry.io/collector/component"
16+
"go.opentelemetry.io/collector/extension"
1717
"go.opentelemetry.io/collector/extension/extensionauth"
1818
"go.uber.org/zap"
19-
grpcCredentials "google.golang.org/grpc/credentials"
2019
)
2120

22-
// sigv4Auth is a struct that implements the extensionauth.Client interface.
21+
// sigv4Auth is a struct that implements the extensionauth.HTTPClient interface.
2322
// It provides the implementation for providing Sigv4 authentication for HTTP requests only.
2423
type sigv4Auth struct {
2524
cfg *Config
@@ -29,8 +28,11 @@ type sigv4Auth struct {
2928
component.ShutdownFunc // embedded default behavior to do nothing with Shutdown()
3029
}
3130

32-
// compile time check that the sigv4Auth struct satisfies the extensionauth.Client interface
33-
var _ extensionauth.Client = (*sigv4Auth)(nil)
31+
// compile time check that the sigv4Auth struct satisfies the extensionauth.HTTPClient interface
32+
var (
33+
_ extension.Extension = (*sigv4Auth)(nil)
34+
_ extensionauth.HTTPClient = (*sigv4Auth)(nil)
35+
)
3436

3537
// RoundTripper() returns a custom signingRoundTripper.
3638
func (sa *sigv4Auth) RoundTripper(base http.RoundTripper) (http.RoundTripper, error) {
@@ -52,11 +54,6 @@ func (sa *sigv4Auth) RoundTripper(base http.RoundTripper) (http.RoundTripper, er
5254
return &rt, nil
5355
}
5456

55-
// PerRPCCredentials is implemented to satisfy the extensionauth.Client interface but will not be implemented.
56-
func (sa *sigv4Auth) PerRPCCredentials() (grpcCredentials.PerRPCCredentials, error) {
57-
return nil, errors.New("Not Implemented")
58-
}
59-
6057
// newSigv4Extension() is called by createExtension() in factory.go and
6158
// returns a new sigv4Auth struct.
6259
func newSigv4Extension(cfg *Config, awsSDKInfo string, logger *zap.Logger) *sigv4Auth {

0 commit comments

Comments
 (0)