From b08ce410f87d6fdd6d07173952e6fca6b6c72dce Mon Sep 17 00:00:00 2001 From: sanjaypujare Date: Mon, 12 Oct 2020 14:47:47 -0700 Subject: [PATCH] xds: fix the transport-socket-name to match what control plane sends (#7508) --- .../main/java/io/grpc/xds/EnvoyProtoData.java | 1 + .../java/io/grpc/xds/EnvoyServerProtoData.java | 4 +++- .../main/java/io/grpc/xds/XdsClientImpl2.java | 4 +++- .../io/grpc/xds/EnvoyServerProtoDataTest.java | 2 +- .../grpc/xds/XdsClientImplTestForListener.java | 16 +++++++++------- .../java/io/grpc/xds/XdsClientTestHelper.java | 4 +++- 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/xds/src/main/java/io/grpc/xds/EnvoyProtoData.java b/xds/src/main/java/io/grpc/xds/EnvoyProtoData.java index c9ce9bfc194..9759e4248a6 100644 --- a/xds/src/main/java/io/grpc/xds/EnvoyProtoData.java +++ b/xds/src/main/java/io/grpc/xds/EnvoyProtoData.java @@ -61,6 +61,7 @@ */ // TODO(chengyuanzhang): put data types into smaller categories. final class EnvoyProtoData { + static final String TRANSPORT_SOCKET_NAME_TLS = "envoy.transport_sockets.tls"; // Prevent instantiation. private EnvoyProtoData() { diff --git a/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java b/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java index 9911f011eda..7eef74018f5 100644 --- a/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java +++ b/xds/src/main/java/io/grpc/xds/EnvoyServerProtoData.java @@ -16,6 +16,8 @@ package io.grpc.xds; +import static io.grpc.xds.EnvoyProtoData.TRANSPORT_SOCKET_NAME_TLS; + import com.google.common.annotations.VisibleForTesting; import com.google.protobuf.Any; import com.google.protobuf.InvalidProtocolBufferException; @@ -295,7 +297,7 @@ private static DownstreamTlsContext getTlsContextFromFilterChain( io.envoyproxy.envoy.config.listener.v3.FilterChain filterChain) throws InvalidProtocolBufferException { if (filterChain.hasTransportSocket() - && "tls".equals(filterChain.getTransportSocket().getName())) { + && TRANSPORT_SOCKET_NAME_TLS.equals(filterChain.getTransportSocket().getName())) { Any any = filterChain.getTransportSocket().getTypedConfig(); return DownstreamTlsContext.fromEnvoyProtoDownstreamTlsContext( io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.DownstreamTlsContext.parseFrom( diff --git a/xds/src/main/java/io/grpc/xds/XdsClientImpl2.java b/xds/src/main/java/io/grpc/xds/XdsClientImpl2.java index 18fca9c32c1..61e5fdc2b80 100644 --- a/xds/src/main/java/io/grpc/xds/XdsClientImpl2.java +++ b/xds/src/main/java/io/grpc/xds/XdsClientImpl2.java @@ -19,6 +19,7 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; +import static io.grpc.xds.EnvoyProtoData.TRANSPORT_SOCKET_NAME_TLS; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Stopwatch; @@ -783,7 +784,8 @@ private void handleCdsResponse(DiscoveryResponseData cdsResponse) { @Nullable private static EnvoyServerProtoData.UpstreamTlsContext getTlsContextFromCluster(Cluster cluster) throws InvalidProtocolBufferException { - if (cluster.hasTransportSocket() && "tls".equals(cluster.getTransportSocket().getName())) { + if (cluster.hasTransportSocket() + && TRANSPORT_SOCKET_NAME_TLS.equals(cluster.getTransportSocket().getName())) { Any any = cluster.getTransportSocket().getTypedConfig(); return EnvoyServerProtoData.UpstreamTlsContext.fromEnvoyProtoUpstreamTlsContext( any.unpack(UpstreamTlsContext.class)); diff --git a/xds/src/test/java/io/grpc/xds/EnvoyServerProtoDataTest.java b/xds/src/test/java/io/grpc/xds/EnvoyServerProtoDataTest.java index 7ca1adf7a79..5a9761520f7 100644 --- a/xds/src/test/java/io/grpc/xds/EnvoyServerProtoDataTest.java +++ b/xds/src/test/java/io/grpc/xds/EnvoyServerProtoDataTest.java @@ -118,7 +118,7 @@ private static FilterChain createInFilter() { .build()) .addApplicationProtocols("managed-mtls") .build()) - .setTransportSocket(TransportSocket.newBuilder().setName("tls") + .setTransportSocket(TransportSocket.newBuilder().setName("envoy.transport_sockets.tls") .setTypedConfig( Any.pack(CommonTlsContextTestsUtil.buildTestDownstreamTlsContext( "google-sds-config-default", "ROOTCA"))) diff --git a/xds/src/test/java/io/grpc/xds/XdsClientImplTestForListener.java b/xds/src/test/java/io/grpc/xds/XdsClientImplTestForListener.java index cd2429c9e8e..3438b7410d7 100644 --- a/xds/src/test/java/io/grpc/xds/XdsClientImplTestForListener.java +++ b/xds/src/test/java/io/grpc/xds/XdsClientImplTestForListener.java @@ -786,15 +786,17 @@ static Listener buildListenerWithFilterChain(String name, int portValue, String @SuppressWarnings("deprecation") static FilterChain buildFilterChain(FilterChainMatch filterChainMatch, DownstreamTlsContext tlsContext, Filter...filters) { - return - FilterChain.newBuilder() - .setFilterChainMatch(filterChainMatch) - .setTransportSocket(tlsContext == null + return FilterChain.newBuilder() + .setFilterChainMatch(filterChainMatch) + .setTransportSocket( + tlsContext == null ? TransportSocket.getDefaultInstance() - : TransportSocket.newBuilder().setName("tls").setTypedConfig(Any.pack(tlsContext)) + : TransportSocket.newBuilder() + .setName("envoy.transport_sockets.tls") + .setTypedConfig(Any.pack(tlsContext)) .build()) - .addAllFilters(Arrays.asList(filters)) - .build(); + .addAllFilters(Arrays.asList(filters)) + .build(); } static FilterChainMatch buildFilterChainMatch(int destPort, CidrRange...prefixRanges) { diff --git a/xds/src/test/java/io/grpc/xds/XdsClientTestHelper.java b/xds/src/test/java/io/grpc/xds/XdsClientTestHelper.java index 08ba88aad26..66cce2b97d1 100644 --- a/xds/src/test/java/io/grpc/xds/XdsClientTestHelper.java +++ b/xds/src/test/java/io/grpc/xds/XdsClientTestHelper.java @@ -235,7 +235,9 @@ static Cluster buildSecureCluster( } if (upstreamTlsContext != null) { clusterBuilder.setTransportSocket( - TransportSocket.newBuilder().setName("tls").setTypedConfig(Any.pack(upstreamTlsContext))); + TransportSocket.newBuilder() + .setName("envoy.transport_sockets.tls") + .setTypedConfig(Any.pack(upstreamTlsContext))); } return clusterBuilder.build(); }