...
1
18
19
20
21
22
23
24
25
26
27
28 package xds
29
30 import (
31 "fmt"
32
33 "google.golang.org/grpc"
34 "google.golang.org/grpc/grpclog"
35 "google.golang.org/grpc/internal"
36 internaladmin "google.golang.org/grpc/internal/admin"
37 "google.golang.org/grpc/resolver"
38 "google.golang.org/grpc/xds/csds"
39
40 _ "google.golang.org/grpc/credentials/tls/certprovider/pemfile"
41 _ "google.golang.org/grpc/xds/internal/balancer"
42 _ "google.golang.org/grpc/xds/internal/clusterspecifier/rls"
43 _ "google.golang.org/grpc/xds/internal/httpfilter/fault"
44 _ "google.golang.org/grpc/xds/internal/httpfilter/rbac"
45 _ "google.golang.org/grpc/xds/internal/httpfilter/router"
46 _ "google.golang.org/grpc/xds/internal/resolver"
47 _ "google.golang.org/grpc/xds/internal/xdsclient/xdslbregistry/converter"
48
49 v3statusgrpc "github.com/envoyproxy/go-control-plane/envoy/service/status/v3"
50 )
51
52 var logger = grpclog.Component("xds")
53
54 func init() {
55 internaladmin.AddService(func(registrar grpc.ServiceRegistrar) (func(), error) {
56 var grpcServer *grpc.Server
57 switch ss := registrar.(type) {
58 case *grpc.Server:
59 grpcServer = ss
60 case *GRPCServer:
61 sss, ok := ss.gs.(*grpc.Server)
62 if !ok {
63 logger.Warning("grpc server within xds.GRPCServer is not *grpc.Server, CSDS will not be registered")
64 return nil, nil
65 }
66 grpcServer = sss
67 default:
68
69
70 logger.Error("Server to register service on is neither a *grpc.Server or a *xds.GRPCServer, CSDS will not be registered")
71 return nil, nil
72 }
73
74 csdss, err := csds.NewClientStatusDiscoveryServer()
75 if err != nil {
76 return nil, fmt.Errorf("failed to create csds server: %v", err)
77 }
78 v3statusgrpc.RegisterClientStatusDiscoveryServiceServer(grpcServer, csdss)
79 return csdss.Close, nil
80 })
81 }
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97 func NewXDSResolverWithConfigForTesting(bootstrapConfig []byte) (resolver.Builder, error) {
98 return internal.NewXDSResolverWithConfigForTesting.(func([]byte) (resolver.Builder, error))(bootstrapConfig)
99 }
100
View as plain text