Skip to content

Commit 9199290

Browse files
authored
xds: Move bootstrap config to internal/xds (#7182)
1 parent f167ad6 commit 9199290

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+148
-124
lines changed

xds/internal/xdsclient/bootstrap/bootstrap.go renamed to internal/xds/bootstrap/bootstrap.go

+2-47
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,15 @@ import (
2828
"os"
2929
"strings"
3030

31-
v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
3231
"google.golang.org/grpc"
33-
"google.golang.org/grpc/credentials"
34-
"google.golang.org/grpc/credentials/google"
35-
"google.golang.org/grpc/credentials/insecure"
3632
"google.golang.org/grpc/credentials/tls/certprovider"
3733
"google.golang.org/grpc/internal"
3834
"google.golang.org/grpc/internal/envconfig"
3935
"google.golang.org/grpc/internal/pretty"
4036
"google.golang.org/grpc/xds/bootstrap"
41-
"google.golang.org/grpc/xds/internal/xdsclient/tlscreds"
4237
"google.golang.org/protobuf/encoding/protojson"
38+
39+
v3corepb "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
4340
)
4441

4542
const (
@@ -58,51 +55,9 @@ const (
5855
clientFeatureResourceWrapper = "xds.config.resource-in-sotw"
5956
)
6057

61-
func init() {
62-
bootstrap.RegisterCredentials(&insecureCredsBuilder{})
63-
bootstrap.RegisterCredentials(&googleDefaultCredsBuilder{})
64-
bootstrap.RegisterCredentials(&tlsCredsBuilder{})
65-
}
66-
6758
// For overriding in unit tests.
6859
var bootstrapFileReadFunc = os.ReadFile
6960

70-
// insecureCredsBuilder implements the `Credentials` interface defined in
71-
// package `xds/bootstrap` and encapsulates an insecure credential.
72-
type insecureCredsBuilder struct{}
73-
74-
func (i *insecureCredsBuilder) Build(json.RawMessage) (credentials.Bundle, func(), error) {
75-
return insecure.NewBundle(), func() {}, nil
76-
}
77-
78-
func (i *insecureCredsBuilder) Name() string {
79-
return "insecure"
80-
}
81-
82-
// tlsCredsBuilder implements the `Credentials` interface defined in
83-
// package `xds/bootstrap` and encapsulates a TLS credential.
84-
type tlsCredsBuilder struct{}
85-
86-
func (t *tlsCredsBuilder) Build(config json.RawMessage) (credentials.Bundle, func(), error) {
87-
return tlscreds.NewBundle(config)
88-
}
89-
90-
func (t *tlsCredsBuilder) Name() string {
91-
return "tls"
92-
}
93-
94-
// googleDefaultCredsBuilder implements the `Credentials` interface defined in
95-
// package `xds/boostrap` and encapsulates a Google Default credential.
96-
type googleDefaultCredsBuilder struct{}
97-
98-
func (d *googleDefaultCredsBuilder) Build(json.RawMessage) (credentials.Bundle, func(), error) {
99-
return google.NewDefaultCredentials(), func() {}, nil
100-
}
101-
102-
func (d *googleDefaultCredsBuilder) Name() string {
103-
return "google_default"
104-
}
105-
10661
// ChannelCreds contains the credentials to be used while communicating with an
10762
// xDS server. It is also used to dedup servers with the same server URI.
10863
type ChannelCreds struct {

xds/internal/xdsclient/bootstrap/bootstrap_test.go renamed to internal/xds/bootstrap/bootstrap_test.go

-40
Original file line numberDiff line numberDiff line change
@@ -1018,43 +1018,3 @@ func TestDefaultBundles(t *testing.T) {
10181018
})
10191019
}
10201020
}
1021-
1022-
func TestCredsBuilders(t *testing.T) {
1023-
tests := []struct {
1024-
typename string
1025-
builder bootstrap.Credentials
1026-
}{
1027-
{"google_default", &googleDefaultCredsBuilder{}},
1028-
{"insecure", &insecureCredsBuilder{}},
1029-
{"tls", &tlsCredsBuilder{}},
1030-
}
1031-
1032-
for _, test := range tests {
1033-
t.Run(test.typename, func(t *testing.T) {
1034-
if got, want := test.builder.Name(), test.typename; got != want {
1035-
t.Errorf("%T.Name = %v, want %v", test.builder, got, want)
1036-
}
1037-
1038-
_, stop, err := test.builder.Build(nil)
1039-
if err != nil {
1040-
t.Fatalf("%T.Build failed: %v", test.builder, err)
1041-
}
1042-
stop()
1043-
})
1044-
}
1045-
}
1046-
1047-
func TestTlsCredsBuilder(t *testing.T) {
1048-
tls := &tlsCredsBuilder{}
1049-
_, stop, err := tls.Build(json.RawMessage(`{}`))
1050-
if err != nil {
1051-
t.Fatalf("tls.Build() failed with error %s when expected to succeed", err)
1052-
}
1053-
stop()
1054-
1055-
if _, stop, err := tls.Build(json.RawMessage(`{"ca_certificate_file":"/ca_certificates.pem","refresh_interval": "asdf"}`)); err == nil {
1056-
t.Errorf("tls.Build() succeeded with an invalid refresh interval, when expected to fail")
1057-
stop()
1058-
}
1059-
// package internal/xdsclient/tlscreds has tests for config validity.
1060-
}

xds/internal/xdsclient/tlscreds/bundle_ext_test.go renamed to internal/xds/bootstrap/tlscreds/bundle_ext_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ import (
3333
"google.golang.org/grpc/internal/grpctest"
3434
"google.golang.org/grpc/internal/stubserver"
3535
"google.golang.org/grpc/internal/testutils/xds/e2e"
36+
"google.golang.org/grpc/internal/xds/bootstrap/tlscreds"
3637
testgrpc "google.golang.org/grpc/interop/grpc_testing"
3738
testpb "google.golang.org/grpc/interop/grpc_testing"
3839
"google.golang.org/grpc/status"
3940
"google.golang.org/grpc/testdata"
40-
"google.golang.org/grpc/xds/internal/xdsclient/tlscreds"
4141
)
4242

4343
const defaultTestTimeout = 5 * time.Second

xds/bootstrap/bootstrap_test.go

+39
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,42 @@ func TestRegisterNew(t *testing.T) {
6161
t.Errorf("Build config = %v, want %v", got, want)
6262
}
6363
}
64+
65+
func TestCredsBuilders(t *testing.T) {
66+
tests := []struct {
67+
typename string
68+
builder Credentials
69+
}{
70+
{"google_default", &googleDefaultCredsBuilder{}},
71+
{"insecure", &insecureCredsBuilder{}},
72+
{"tls", &tlsCredsBuilder{}},
73+
}
74+
75+
for _, test := range tests {
76+
t.Run(test.typename, func(t *testing.T) {
77+
if got, want := test.builder.Name(), test.typename; got != want {
78+
t.Errorf("%T.Name = %v, want %v", test.builder, got, want)
79+
}
80+
81+
_, stop, err := test.builder.Build(nil)
82+
if err != nil {
83+
t.Fatalf("%T.Build failed: %v", test.builder, err)
84+
}
85+
stop()
86+
})
87+
}
88+
}
89+
90+
func TestTlsCredsBuilder(t *testing.T) {
91+
tls := &tlsCredsBuilder{}
92+
_, stop, err := tls.Build(json.RawMessage(`{}`))
93+
if err != nil {
94+
t.Fatalf("tls.Build() failed with error %s when expected to succeed", err)
95+
}
96+
stop()
97+
98+
if _, stop, err := tls.Build(json.RawMessage(`{"ca_certificate_file":"/ca_certificates.pem","refresh_interval": "asdf"}`)); err == nil {
99+
t.Errorf("tls.Build() succeeded with an invalid refresh interval, when expected to fail")
100+
stop()
101+
}
102+
}

xds/bootstrap/credentials.go

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
*
3+
* Copyright 2024 gRPC authors.
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*
17+
*/
18+
19+
package bootstrap
20+
21+
import (
22+
"encoding/json"
23+
24+
"google.golang.org/grpc/credentials"
25+
"google.golang.org/grpc/credentials/google"
26+
"google.golang.org/grpc/credentials/insecure"
27+
"google.golang.org/grpc/internal/xds/bootstrap/tlscreds"
28+
)
29+
30+
func init() {
31+
RegisterCredentials(&insecureCredsBuilder{})
32+
RegisterCredentials(&googleDefaultCredsBuilder{})
33+
RegisterCredentials(&tlsCredsBuilder{})
34+
}
35+
36+
// insecureCredsBuilder implements the `Credentials` interface defined in
37+
// package `xds/bootstrap` and encapsulates an insecure credential.
38+
type insecureCredsBuilder struct{}
39+
40+
func (i *insecureCredsBuilder) Build(json.RawMessage) (credentials.Bundle, func(), error) {
41+
return insecure.NewBundle(), func() {}, nil
42+
}
43+
44+
func (i *insecureCredsBuilder) Name() string {
45+
return "insecure"
46+
}
47+
48+
// tlsCredsBuilder implements the `Credentials` interface defined in
49+
// package `xds/bootstrap` and encapsulates a TLS credential.
50+
type tlsCredsBuilder struct{}
51+
52+
func (t *tlsCredsBuilder) Build(config json.RawMessage) (credentials.Bundle, func(), error) {
53+
return tlscreds.NewBundle(config)
54+
}
55+
56+
func (t *tlsCredsBuilder) Name() string {
57+
return "tls"
58+
}
59+
60+
// googleDefaultCredsBuilder implements the `Credentials` interface defined in
61+
// package `xds/boostrap` and encapsulates a Google Default credential.
62+
type googleDefaultCredsBuilder struct{}
63+
64+
func (d *googleDefaultCredsBuilder) Build(json.RawMessage) (credentials.Bundle, func(), error) {
65+
return google.NewDefaultCredentials(), func() {}, nil
66+
}
67+
68+
func (d *googleDefaultCredsBuilder) Name() string {
69+
return "google_default"
70+
}

xds/googledirectpath/googlec2p.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ import (
3535
"google.golang.org/grpc/internal/googlecloud"
3636
internalgrpclog "google.golang.org/grpc/internal/grpclog"
3737
"google.golang.org/grpc/internal/grpcrand"
38+
"google.golang.org/grpc/internal/xds/bootstrap"
3839
"google.golang.org/grpc/resolver"
3940
"google.golang.org/grpc/xds/internal/xdsclient"
40-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4141

4242
_ "google.golang.org/grpc/xds" // To register xds resolvers and balancers.
4343
)

xds/googledirectpath/googlec2p_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ import (
3030
"google.golang.org/grpc"
3131
"google.golang.org/grpc/credentials/insecure"
3232
"google.golang.org/grpc/internal/envconfig"
33+
"google.golang.org/grpc/internal/xds/bootstrap"
3334
"google.golang.org/grpc/resolver"
3435
"google.golang.org/grpc/xds/internal/xdsclient"
35-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
3636
"google.golang.org/protobuf/testing/protocmp"
3737
"google.golang.org/protobuf/types/known/structpb"
3838

xds/internal/balancer/cdsbalancer/cdsbalancer_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ import (
3737
"google.golang.org/grpc/internal/stubserver"
3838
"google.golang.org/grpc/internal/testutils"
3939
"google.golang.org/grpc/internal/testutils/xds/e2e"
40+
"google.golang.org/grpc/internal/xds/bootstrap"
4041
"google.golang.org/grpc/resolver"
4142
"google.golang.org/grpc/resolver/manual"
4243
"google.golang.org/grpc/serviceconfig"
4344
"google.golang.org/grpc/status"
4445
"google.golang.org/grpc/xds/internal/balancer/clusterresolver"
4546
"google.golang.org/grpc/xds/internal/xdsclient"
46-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4747
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource"
4848
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version"
4949
"google.golang.org/protobuf/types/known/durationpb"

xds/internal/balancer/clusterimpl/balancer_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,11 @@ import (
3737
internalserviceconfig "google.golang.org/grpc/internal/serviceconfig"
3838
"google.golang.org/grpc/internal/testutils"
3939
"google.golang.org/grpc/internal/xds"
40+
"google.golang.org/grpc/internal/xds/bootstrap"
4041
"google.golang.org/grpc/resolver"
4142
xdsinternal "google.golang.org/grpc/xds/internal"
4243
"google.golang.org/grpc/xds/internal/testutils/fakeclient"
4344
"google.golang.org/grpc/xds/internal/xdsclient"
44-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4545
"google.golang.org/grpc/xds/internal/xdsclient/load"
4646

4747
v3orcapb "github.com/cncf/xds/go/xds/data/orca/v3"

xds/internal/balancer/clusterimpl/clusterimpl.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,12 @@ import (
3737
"google.golang.org/grpc/internal/grpcsync"
3838
"google.golang.org/grpc/internal/pretty"
3939
"google.golang.org/grpc/internal/xds"
40+
"google.golang.org/grpc/internal/xds/bootstrap"
4041
"google.golang.org/grpc/resolver"
4142
"google.golang.org/grpc/serviceconfig"
4243
xdsinternal "google.golang.org/grpc/xds/internal"
4344
"google.golang.org/grpc/xds/internal/balancer/loadstore"
4445
"google.golang.org/grpc/xds/internal/xdsclient"
45-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4646
"google.golang.org/grpc/xds/internal/xdsclient/load"
4747
)
4848

xds/internal/balancer/clusterimpl/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ import (
2222
"encoding/json"
2323

2424
internalserviceconfig "google.golang.org/grpc/internal/serviceconfig"
25+
"google.golang.org/grpc/internal/xds/bootstrap"
2526
"google.golang.org/grpc/serviceconfig"
26-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
2727
)
2828

2929
// DropConfig contains the category, and drop ratio.

xds/internal/balancer/clusterimpl/config_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import (
2727
_ "google.golang.org/grpc/balancer/roundrobin"
2828
_ "google.golang.org/grpc/balancer/weightedtarget"
2929
internalserviceconfig "google.golang.org/grpc/internal/serviceconfig"
30-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
30+
"google.golang.org/grpc/internal/xds/bootstrap"
3131
)
3232

3333
const (

xds/internal/balancer/clusterresolver/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@ import (
2323
"fmt"
2424

2525
internalserviceconfig "google.golang.org/grpc/internal/serviceconfig"
26+
"google.golang.org/grpc/internal/xds/bootstrap"
2627
"google.golang.org/grpc/serviceconfig"
2728
"google.golang.org/grpc/xds/internal/balancer/outlierdetection"
28-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
2929
)
3030

3131
// DiscoveryMechanismType is the type of discovery mechanism.

xds/internal/balancer/clusterresolver/config_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ import (
2828
"google.golang.org/grpc/balancer"
2929
"google.golang.org/grpc/balancer/roundrobin"
3030
iserviceconfig "google.golang.org/grpc/internal/serviceconfig"
31+
"google.golang.org/grpc/internal/xds/bootstrap"
3132
"google.golang.org/grpc/xds/internal/balancer/outlierdetection"
3233
"google.golang.org/grpc/xds/internal/balancer/ringhash"
33-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
3434
)
3535

3636
func TestDiscoveryMechanismTypeMarshalJSON(t *testing.T) {

xds/internal/balancer/clusterresolver/e2e_test/aggregate_cluster_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ import (
3535
"google.golang.org/grpc/internal/stubserver"
3636
"google.golang.org/grpc/internal/testutils/pickfirst"
3737
"google.golang.org/grpc/internal/testutils/xds/e2e"
38+
"google.golang.org/grpc/internal/xds/bootstrap"
3839
"google.golang.org/grpc/peer"
3940
"google.golang.org/grpc/resolver"
4041
"google.golang.org/grpc/resolver/manual"
4142
"google.golang.org/grpc/serviceconfig"
4243
"google.golang.org/grpc/status"
4344
xdstestutils "google.golang.org/grpc/xds/internal/testutils"
4445
"google.golang.org/grpc/xds/internal/xdsclient"
45-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4646
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version"
4747
"google.golang.org/protobuf/types/known/wrapperspb"
4848

xds/internal/balancer/clusterresolver/e2e_test/eds_impl_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ import (
3535
"google.golang.org/grpc/internal/testutils"
3636
rrutil "google.golang.org/grpc/internal/testutils/roundrobin"
3737
"google.golang.org/grpc/internal/testutils/xds/e2e"
38+
"google.golang.org/grpc/internal/xds/bootstrap"
3839
"google.golang.org/grpc/peer"
3940
"google.golang.org/grpc/resolver"
4041
"google.golang.org/grpc/resolver/manual"
4142
"google.golang.org/grpc/serviceconfig"
4243
"google.golang.org/grpc/status"
4344
xdstestutils "google.golang.org/grpc/xds/internal/testutils"
4445
"google.golang.org/grpc/xds/internal/xdsclient"
45-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
4646
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource/version"
4747
"google.golang.org/protobuf/types/known/wrapperspb"
4848

xds/internal/resolver/xds_resolver.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ import (
3131
"google.golang.org/grpc/internal/pretty"
3232
iresolver "google.golang.org/grpc/internal/resolver"
3333
"google.golang.org/grpc/internal/wrr"
34+
"google.golang.org/grpc/internal/xds/bootstrap"
3435
"google.golang.org/grpc/resolver"
3536
rinternal "google.golang.org/grpc/xds/internal/resolver/internal"
3637
"google.golang.org/grpc/xds/internal/xdsclient"
37-
"google.golang.org/grpc/xds/internal/xdsclient/bootstrap"
3838
"google.golang.org/grpc/xds/internal/xdsclient/xdsresource"
3939
)
4040

0 commit comments

Comments
 (0)