From 002fc85ef24b39dbad66a6183f5ddd67724775ac Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 27 Mar 2020 15:38:16 -0400 Subject: [PATCH 1/3] Remove unused customEDSClusterJSON --- agent/xds/clusters_test.go | 29 ----------------------------- agent/xds/xds.go | 2 +- 2 files changed, 1 insertion(+), 30 deletions(-) diff --git a/agent/xds/clusters_test.go b/agent/xds/clusters_test.go index 69a448418a..3f586c1b63 100644 --- a/agent/xds/clusters_test.go +++ b/agent/xds/clusters_test.go @@ -505,35 +505,6 @@ type customClusterJSONOptions struct { TLSContext string } -var customEDSClusterJSONTpl = `{ - {{ if .IncludeType -}} - "@type": "type.googleapis.com/envoy.api.v2.Cluster", - {{- end }} - {{ if .TLSContext -}} - "tlsContext": {{ .TLSContext }}, - {{- end }} - "name": "{{ .Name }}", - "type": "EDS", - "edsClusterConfig": { - "edsConfig": { - "ads": { - - } - } - }, - "connectTimeout": "5s" -}` - -var customEDSClusterJSONTemplate = template.Must(template.New("").Parse(customEDSClusterJSONTpl)) - -func customEDSClusterJSON(t *testing.T, opts customClusterJSONOptions) string { - t.Helper() - var buf bytes.Buffer - err := customEDSClusterJSONTemplate.Execute(&buf, opts) - require.NoError(t, err) - return buf.String() -} - var customAppClusterJSONTpl = `{ {{ if .IncludeType -}} "@type": "type.googleapis.com/envoy.api.v2.Cluster", diff --git a/agent/xds/xds.go b/agent/xds/xds.go index c0260f8db6..84c72663ca 100644 --- a/agent/xds/xds.go +++ b/agent/xds/xds.go @@ -1,4 +1,4 @@ -// Package xds provides an impementation of a gRPC service that exports Envoy's +// Package xds provides an implementation of a gRPC service that exports Envoy's // xDS API for config discovery. Specifically we support the Aggregated // Discovery Service (ADS) only as we control all config. // From ef68e404a5d2c2fb4cb5eb94ac51d42e89c27145 Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 27 Mar 2020 16:08:25 -0400 Subject: [PATCH 2/3] A little less 'just' --- agent/xds/server.go | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/agent/xds/server.go b/agent/xds/server.go index f15152f8d4..ba471d0570 100644 --- a/agent/xds/server.go +++ b/agent/xds/server.go @@ -190,8 +190,8 @@ func (s *Server) process(stream ADSStream, reqCh <-chan *envoy.DiscoveryRequest) var nonce uint64 // xDS works with versions of configs. Internally we don't have a consistent - // version. We could just hash the config since versions don't have to be - // ordered as far as I can tell, but it's cheaper just to increment a counter + // version. We could hash the config since versions don't have to be + // ordered as far as I can tell, but it is cheaper to increment a counter // every time we observe a new config since the upstream proxycfg package only // delivers updates when there are actual changes. var configVersion uint64 @@ -209,12 +209,12 @@ func (s *Server) process(stream ADSStream, reqCh <-chan *envoy.DiscoveryRequest) // Configure handlers for each type of request handlers := map[string]*xDSType{ - EndpointType: &xDSType{ + EndpointType: { typeURL: EndpointType, resources: s.endpointsFromSnapshot, stream: stream, }, - ClusterType: &xDSType{ + ClusterType: { typeURL: ClusterType, resources: s.clustersFromSnapshot, stream: stream, @@ -223,12 +223,12 @@ func (s *Server) process(stream ADSStream, reqCh <-chan *envoy.DiscoveryRequest) return cfgSnap.Kind == structs.ServiceKindMeshGateway }, }, - RouteType: &xDSType{ + RouteType: { typeURL: RouteType, resources: routesFromSnapshot, stream: stream, }, - ListenerType: &xDSType{ + ListenerType: { typeURL: ListenerType, resources: s.listenersFromSnapshot, stream: stream, @@ -245,8 +245,7 @@ func (s *Server) process(stream ADSStream, reqCh <-chan *envoy.DiscoveryRequest) return status.Errorf(codes.Unauthenticated, "unauthenticated: no config snapshot") } - token := tokenFromStream(stream) - rule, err := s.ResolveToken(token) + rule, err := s.ResolveToken(tokenFromContext(stream.Context())) if acl.IsErrNotFound(err) { return status.Errorf(codes.Unauthenticated, "unauthenticated: %v", err) @@ -397,7 +396,7 @@ func (t *xDSType) SendIfNew(cfgSnap *proxycfg.ConfigSnapshot, version uint64, no // Already sent this version return nil } - resources, err := t.resources(cfgSnap, tokenFromStream(t.stream)) + resources, err := t.resources(cfgSnap, tokenFromContext(t.stream.Context())) if err != nil { return err } @@ -436,10 +435,6 @@ func (t *xDSType) SendIfNew(cfgSnap *proxycfg.ConfigSnapshot, version uint64, no return nil } -func tokenFromStream(stream ADSStream) string { - return tokenFromContext(stream.Context()) -} - func tokenFromContext(ctx context.Context) string { md, ok := metadata.FromIncomingContext(ctx) if !ok { From 1d90ecc31da08ff40a0d29d4748aaf3ecb70b9bd Mon Sep 17 00:00:00 2001 From: Daniel Nephin Date: Fri, 27 Mar 2020 17:57:16 -0400 Subject: [PATCH 3/3] Remove unused token parameter --- agent/xds/clusters.go | 10 +++++----- agent/xds/endpoints.go | 10 +++++----- agent/xds/listeners.go | 4 ++-- agent/xds/routes.go | 6 +++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/agent/xds/clusters.go b/agent/xds/clusters.go index afa22a0e20..3ff767e462 100644 --- a/agent/xds/clusters.go +++ b/agent/xds/clusters.go @@ -22,16 +22,16 @@ import ( ) // clustersFromSnapshot returns the xDS API representation of the "clusters" in the snapshot. -func (s *Server) clustersFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) clustersFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, _ string) ([]proto.Message, error) { if cfgSnap == nil { return nil, errors.New("nil config given") } switch cfgSnap.Kind { case structs.ServiceKindConnectProxy: - return s.clustersFromSnapshotConnectProxy(cfgSnap, token) + return s.clustersFromSnapshotConnectProxy(cfgSnap) case structs.ServiceKindMeshGateway: - return s.clustersFromSnapshotMeshGateway(cfgSnap, token) + return s.clustersFromSnapshotMeshGateway(cfgSnap) default: return nil, fmt.Errorf("Invalid service kind: %v", cfgSnap.Kind) } @@ -39,7 +39,7 @@ func (s *Server) clustersFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token st // clustersFromSnapshot returns the xDS API representation of the "clusters" // (upstreams) in the snapshot. -func (s *Server) clustersFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) clustersFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { // TODO(rb): this sizing is a low bound. clusters := make([]proto.Message, 0, len(cfgSnap.Proxy.Upstreams)+1) @@ -112,7 +112,7 @@ func makeExposeClusterName(destinationPort int) string { // clustersFromSnapshotMeshGateway returns the xDS API representation of the "clusters" // for a mesh gateway. This will include 1 cluster per remote datacenter as well as // 1 cluster for each service subset. -func (s *Server) clustersFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) clustersFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { datacenters := cfgSnap.MeshGateway.Datacenters() // 1 cluster per remote dc + 1 cluster per local service (this is a lower bound - all subset specific clusters will be appended) diff --git a/agent/xds/endpoints.go b/agent/xds/endpoints.go index 63491e7548..2752209856 100644 --- a/agent/xds/endpoints.go +++ b/agent/xds/endpoints.go @@ -22,16 +22,16 @@ const ( ) // endpointsFromSnapshot returns the xDS API representation of the "endpoints" -func (s *Server) endpointsFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) endpointsFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, _ string) ([]proto.Message, error) { if cfgSnap == nil { return nil, errors.New("nil config given") } switch cfgSnap.Kind { case structs.ServiceKindConnectProxy: - return s.endpointsFromSnapshotConnectProxy(cfgSnap, token) + return s.endpointsFromSnapshotConnectProxy(cfgSnap) case structs.ServiceKindMeshGateway: - return s.endpointsFromSnapshotMeshGateway(cfgSnap, token) + return s.endpointsFromSnapshotMeshGateway(cfgSnap) default: return nil, fmt.Errorf("Invalid service kind: %v", cfgSnap.Kind) } @@ -39,7 +39,7 @@ func (s *Server) endpointsFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token s // endpointsFromSnapshotConnectProxy returns the xDS API representation of the "endpoints" // (upstream instances) in the snapshot. -func (s *Server) endpointsFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) endpointsFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { resources := make([]proto.Message, 0, len(cfgSnap.ConnectProxy.PreparedQueryEndpoints)+len(cfgSnap.ConnectProxy.WatchedUpstreamEndpoints)) @@ -170,7 +170,7 @@ func (s *Server) filterSubsetEndpoints(subset *structs.ServiceResolverSubset, en return endpoints, nil } -func (s *Server) endpointsFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) endpointsFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { datacenters := cfgSnap.MeshGateway.Datacenters() resources := make([]proto.Message, 0, len(datacenters)+len(cfgSnap.MeshGateway.ServiceGroups)) diff --git a/agent/xds/listeners.go b/agent/xds/listeners.go index dbca837d69..6baf941c80 100644 --- a/agent/xds/listeners.go +++ b/agent/xds/listeners.go @@ -39,7 +39,7 @@ func (s *Server) listenersFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token s case structs.ServiceKindConnectProxy: return s.listenersFromSnapshotConnectProxy(cfgSnap, token) case structs.ServiceKindMeshGateway: - return s.listenersFromSnapshotMeshGateway(cfgSnap, token) + return s.listenersFromSnapshotMeshGateway(cfgSnap) default: return nil, fmt.Errorf("Invalid service kind: %v", cfgSnap.Kind) } @@ -180,7 +180,7 @@ func parseCheckPath(check structs.CheckType) (structs.ExposePath, error) { } // listenersFromSnapshotMeshGateway returns the "listener" for a mesh-gateway service -func (s *Server) listenersFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func (s *Server) listenersFromSnapshotMeshGateway(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { cfg, err := ParseGatewayConfig(cfgSnap.Proxy.Config) if err != nil { // Don't hard fail on a config typo, just warn. The parse func returns diff --git a/agent/xds/routes.go b/agent/xds/routes.go index 5384a6f301..23f9a6d37a 100644 --- a/agent/xds/routes.go +++ b/agent/xds/routes.go @@ -15,14 +15,14 @@ import ( // routesFromSnapshot returns the xDS API representation of the "routes" in the // snapshot. -func routesFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func routesFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, _ string) ([]proto.Message, error) { if cfgSnap == nil { return nil, errors.New("nil config given") } switch cfgSnap.Kind { case structs.ServiceKindConnectProxy: - return routesFromSnapshotConnectProxy(cfgSnap, token) + return routesFromSnapshotConnectProxy(cfgSnap) default: return nil, fmt.Errorf("Invalid service kind: %v", cfgSnap.Kind) } @@ -30,7 +30,7 @@ func routesFromSnapshot(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto // routesFromSnapshotConnectProxy returns the xDS API representation of the // "routes" in the snapshot. -func routesFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot, token string) ([]proto.Message, error) { +func routesFromSnapshotConnectProxy(cfgSnap *proxycfg.ConfigSnapshot) ([]proto.Message, error) { if cfgSnap == nil { return nil, errors.New("nil config given") }