Skip to content

Commit 870215b

Browse files
committed
bug fixes
Signed-off-by: Gavrilov_A <[email protected]>
1 parent 89dd182 commit 870215b

File tree

9 files changed

+87
-44
lines changed

9 files changed

+87
-44
lines changed

cache/src/main/java/io/envoyproxy/controlplane/cache/Resources.java

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static com.google.common.base.Strings.isNullOrEmpty;
44
import static io.envoyproxy.controlplane.cache.Resources.ApiVersion.V3;
5-
import static io.envoyproxy.controlplane.cache.Resources.ResourceType.*;
65

76
import com.google.common.base.Preconditions;
87
import com.google.common.collect.ImmutableList;
@@ -78,16 +77,21 @@ public static class V3 {
7877
}
7978

8079
public static final List<ResourceType> RESOURCE_TYPES_IN_ORDER =
81-
ImmutableList.of(CLUSTER, ENDPOINT, LISTENER, ROUTE, VIRTUAL_HOST, SECRET);
80+
ImmutableList.of(ResourceType.CLUSTER,
81+
ResourceType.ENDPOINT,
82+
ResourceType.LISTENER,
83+
ResourceType.ROUTE,
84+
ResourceType.VIRTUAL_HOST,
85+
ResourceType.SECRET);
8286

8387
public static final Map<String, ResourceType> TYPE_URLS_TO_RESOURCE_TYPE =
8488
new ImmutableMap.Builder<String, ResourceType>()
85-
.put(Resources.V3.CLUSTER_TYPE_URL, CLUSTER)
86-
.put(Resources.V3.ENDPOINT_TYPE_URL, ENDPOINT)
87-
.put(Resources.V3.LISTENER_TYPE_URL, LISTENER)
88-
.put(Resources.V3.ROUTE_TYPE_URL, ROUTE)
89-
.put(Resources.V3.VIRTUAL_HOST_TYPE_URL, VIRTUAL_HOST)
90-
.put(Resources.V3.SECRET_TYPE_URL, SECRET)
89+
.put(Resources.V3.CLUSTER_TYPE_URL, ResourceType.CLUSTER)
90+
.put(Resources.V3.ENDPOINT_TYPE_URL, ResourceType.ENDPOINT)
91+
.put(Resources.V3.LISTENER_TYPE_URL, ResourceType.LISTENER)
92+
.put(Resources.V3.ROUTE_TYPE_URL, ResourceType.ROUTE)
93+
.put(Resources.V3.VIRTUAL_HOST_TYPE_URL, ResourceType.VIRTUAL_HOST)
94+
.put(Resources.V3.SECRET_TYPE_URL, ResourceType.SECRET)
9195
.build();
9296

9397
public static final Map<String, Class<? extends Message>> RESOURCE_TYPE_BY_URL =

cache/src/main/java/io/envoyproxy/controlplane/cache/SnapshotResources.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.auto.value.AutoValue;
44
import com.google.protobuf.Message;
5-
import com.google.protobuf.MessageLiteOrBuilder;
65

76
import java.util.List;
87
import java.util.Map;
@@ -23,7 +22,7 @@ public static <T extends Message> SnapshotResources<T> create(
2322
Iterable<?> resources,
2423
String version) {
2524
ResourceMapBuilder<T> resourcesMapBuilder = createResourcesMap(resources);
26-
return new AutoValue_SnapshotResources<>(
25+
return new io.envoyproxy.controlplane.cache.AutoValue_SnapshotResources<>(
2726
resourcesMapBuilder.getVersionedResources(),
2827
resourcesMapBuilder.getResources(),
2928
(r) -> version
@@ -42,7 +41,7 @@ public static <T extends Message> SnapshotResources<T> create(
4241
Iterable<VersionedResource<T>> resources,
4342
ResourceVersionResolver versionResolver) {
4443
ResourceMapBuilder<T> resourcesMapBuilder = createResourcesMap(resources);
45-
return new AutoValue_SnapshotResources<>(
44+
return new io.envoyproxy.controlplane.cache.AutoValue_SnapshotResources<>(
4645
resourcesMapBuilder.getVersionedResources(),
4746
resourcesMapBuilder.getResources(),
4847
versionResolver);

cache/src/main/java/io/envoyproxy/controlplane/cache/TestResources.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,18 @@
2020
import io.envoyproxy.envoy.config.listener.v3.Filter;
2121
import io.envoyproxy.envoy.config.listener.v3.FilterChain;
2222
import io.envoyproxy.envoy.config.listener.v3.Listener;
23-
import io.envoyproxy.envoy.config.route.v3.*;
24-
import io.envoyproxy.envoy.config.route.v3.VirtualHost.Builder;
23+
import io.envoyproxy.envoy.config.route.v3.Route;
24+
import io.envoyproxy.envoy.config.route.v3.RouteAction;
25+
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
26+
import io.envoyproxy.envoy.config.route.v3.RouteMatch;
27+
import io.envoyproxy.envoy.config.route.v3.Vhds;
28+
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
2529
import io.envoyproxy.envoy.extensions.filters.http.router.v3.Router;
2630
import io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager;
2731
import io.envoyproxy.envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.CodecType;
2832
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.Secret;
2933
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.TlsCertificate;
30-
import io.envoyproxy.envoy.service.route.v3.VirtualHostDiscoveryService;
3134

32-
import java.util.ArrayList;
33-
import java.util.Collections;
34-
import java.util.List;
3535

3636
/**
3737
* {@code TestResources} provides helper methods for generating resource messages for testing. It is
@@ -216,7 +216,7 @@ public static Listener createListener(
216216
*
217217
* @param routeName name of the new route
218218
*/
219-
public static RouteConfiguration createVHDSRoute(String routeName) {
219+
public static RouteConfiguration createVhdsRoute(String routeName) {
220220

221221
ApiVersion adsTransportVersion = ApiVersion.V3;
222222

@@ -234,11 +234,9 @@ public static RouteConfiguration createVHDSRoute(String routeName) {
234234
.setClusterName(XDS_CLUSTER))))
235235
.build();
236236

237-
RouteConfiguration routeConfigurationbuilder = RouteConfiguration.newBuilder()
237+
return RouteConfiguration.newBuilder()
238238
.setVhds(Vhds.newBuilder().setConfigSource(edsSource).build())
239239
.setName(routeName).build();
240-
241-
return routeConfigurationbuilder;
242240
}
243241

244242
/**
@@ -261,10 +259,16 @@ public static RouteConfiguration createRoute(String routeName, String clusterNam
261259
.build();
262260
}
263261

264-
public static VirtualHost createVirtualHost(String name, int index, String domains) {
262+
/**
263+
* Returns a new Virtual Host.
264+
*
265+
* @param name Virtual host name
266+
* @param domain domain name
267+
*/
268+
public static VirtualHost createVirtualHost(String name, String domain) {
265269
return VirtualHost.newBuilder()
266-
.setName("all")
267-
.addDomains("*")
270+
.setName(name)
271+
.addDomains(domain)
268272
.addRoutes(
269273
Route.newBuilder()
270274
.setMatch(RouteMatch.newBuilder().setPrefix("/")))

cache/src/main/java/io/envoyproxy/controlplane/cache/v3/Snapshot.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@
1515
import io.envoyproxy.envoy.config.endpoint.v3.ClusterLoadAssignment;
1616
import io.envoyproxy.envoy.config.listener.v3.Listener;
1717
import io.envoyproxy.envoy.config.route.v3.RouteConfiguration;
18+
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
1819
import io.envoyproxy.envoy.extensions.transport_sockets.tls.v3.Secret;
1920
import java.util.Collections;
2021
import java.util.List;
2122
import java.util.Map;
2223
import java.util.Set;
23-
import io.envoyproxy.envoy.config.route.v3.VirtualHost;
24+
2425

2526
/**
2627
* {@code Snapshot} is a data class that contains an internally consistent snapshot of v3 xDS resources. Snapshots
@@ -50,7 +51,7 @@ public static Snapshot create(
5051

5152
String version) {
5253

53-
return new AutoValue_Snapshot(
54+
return new io.envoyproxy.controlplane.cache.v3.AutoValue_Snapshot(
5455
SnapshotResources
5556
.create(generateSnapshotResourceIterable(clusters), version),
5657
SnapshotResources
@@ -93,7 +94,7 @@ public static Snapshot create(
9394
String secretsVersion) {
9495

9596
// TODO(snowp): add a builder alternative
96-
return new AutoValue_Snapshot(
97+
return new io.envoyproxy.controlplane.cache.v3.AutoValue_Snapshot(
9798
SnapshotResources.create(generateSnapshotResourceIterable(clusters),
9899
clustersVersion),
99100
SnapshotResources.create(generateSnapshotResourceIterable(endpoints),
@@ -142,6 +143,7 @@ public static Snapshot createEmpty(String version) {
142143
* Returns all secret items in the SDS payload.
143144
*/
144145
public abstract SnapshotResources<Secret> secrets();
146+
145147
public abstract SnapshotResources<VirtualHost> virtualHosts();
146148

147149
/**

cache/src/test/java/io/envoyproxy/controlplane/cache/v3/SimpleCacheTest.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@
77
import com.google.common.collect.ImmutableList;
88
import com.google.common.collect.Sets;
99
import com.google.protobuf.Message;
10-
import io.envoyproxy.controlplane.cache.*;
10+
import io.envoyproxy.controlplane.cache.NodeGroup;
11+
import io.envoyproxy.controlplane.cache.Resources;
12+
import io.envoyproxy.controlplane.cache.Response;
13+
import io.envoyproxy.controlplane.cache.StatusInfo;
14+
import io.envoyproxy.controlplane.cache.TestResources;
15+
import io.envoyproxy.controlplane.cache.VersionedResource;
16+
import io.envoyproxy.controlplane.cache.Watch;
17+
import io.envoyproxy.controlplane.cache.XdsRequest;
1118
import io.envoyproxy.envoy.config.cluster.v3.Cluster;
1219
import io.envoyproxy.envoy.config.core.v3.Node;
1320
import io.envoyproxy.envoy.config.endpoint.v3.ClusterLoadAssignment;
@@ -43,7 +50,7 @@ public class SimpleCacheTest {
4350
ImmutableList.of(ClusterLoadAssignment.getDefaultInstance()),
4451
ImmutableList.of(Listener.newBuilder().setName(LISTENER_NAME).build()),
4552
ImmutableList.of(RouteConfiguration.newBuilder().setName(ROUTE_NAME).build()),
46-
ImmutableList.of(TestResources.createVirtualHost("v1", 1, "a")),
53+
ImmutableList.of(TestResources.createVirtualHost("v1", "a")),
4754
ImmutableList.of(Secret.newBuilder().setName(SECRET_NAME).build()),
4855

4956
VERSION1);
@@ -53,7 +60,7 @@ public class SimpleCacheTest {
5360
ImmutableList.of(ClusterLoadAssignment.getDefaultInstance()),
5461
ImmutableList.of(Listener.newBuilder().setName(LISTENER_NAME).build()),
5562
ImmutableList.of(RouteConfiguration.newBuilder().setName(ROUTE_NAME).build()),
56-
ImmutableList.of(TestResources.createVirtualHost("v1", 1, "a")),
63+
ImmutableList.of(TestResources.createVirtualHost("v1", "a")),
5764

5865
ImmutableList.of(Secret.newBuilder().setName(SECRET_NAME).build()),
5966
VERSION2);
@@ -65,7 +72,7 @@ public class SimpleCacheTest {
6572
ClusterLoadAssignment.newBuilder().setClusterName(SECONDARY_CLUSTER_NAME).build()),
6673
ImmutableList.of(Listener.newBuilder().setName(LISTENER_NAME).build()),
6774
ImmutableList.of(RouteConfiguration.newBuilder().setName(ROUTE_NAME).build()),
68-
ImmutableList.of(TestResources.createVirtualHost("v1", 1, "a")),
75+
ImmutableList.of(TestResources.createVirtualHost("v1","a")),
6976

7077
ImmutableList.of(Secret.newBuilder().setName(SECRET_NAME).build()),
7178
VERSION2);
@@ -429,7 +436,13 @@ public void watchesAreReleasedAfterCancel() {
429436
public void watchIsLeftOpenIfNotRespondedImmediately() {
430437
SimpleCache<String> cache = new SimpleCache<>(new SingleNodeGroup());
431438
cache.setSnapshot(SingleNodeGroup.GROUP, Snapshot.create(
432-
ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(),VERSION1));
439+
ImmutableList.of(),
440+
ImmutableList.of(),
441+
ImmutableList.of(),
442+
ImmutableList.of(),
443+
ImmutableList.of(),
444+
ImmutableList.of(),
445+
VERSION1));
433446

434447
ResponseTracker responseTracker = new ResponseTracker();
435448
Watch watch = cache.createWatch(

cache/src/test/java/io/envoyproxy/controlplane/cache/v3/SnapshotTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package io.envoyproxy.controlplane.cache.v3;
22

3-
import static io.envoyproxy.controlplane.cache.Resources.V3.*;
3+
import static io.envoyproxy.controlplane.cache.Resources.V3.CLUSTER_TYPE_URL;
4+
import static io.envoyproxy.controlplane.cache.Resources.V3.ENDPOINT_TYPE_URL;
5+
import static io.envoyproxy.controlplane.cache.Resources.V3.LISTENER_TYPE_URL;
6+
import static io.envoyproxy.controlplane.cache.Resources.V3.ROUTE_TYPE_URL;
47
import static io.envoyproxy.envoy.config.core.v3.ApiVersion.V3;
58
import static java.lang.String.format;
69
import static org.assertj.core.api.Assertions.assertThat;
@@ -40,7 +43,7 @@ public class SnapshotTest {
4043
private static final RouteConfiguration ROUTE = TestResources.createRoute(ROUTE_NAME,
4144
CLUSTER_NAME);
4245
private static final Secret SECRET = TestResources.createSecret(SECRET_NAME);
43-
private static final VirtualHost VIRTUAL_HOST = TestResources.createVirtualHost(VIRTUAL_HOST_NAME, 1, "a");
46+
private static final VirtualHost VIRTUAL_HOST = TestResources.createVirtualHost(VIRTUAL_HOST_NAME, "a");
4447

4548
@Test
4649
public void createSingleVersionSetsResourcesCorrectly() {

server/src/main/java/io/envoyproxy/controlplane/server/V3DiscoveryServer.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package io.envoyproxy.controlplane.server;
22

3+
import static io.envoyproxy.envoy.service.discovery.v3.AggregatedDiscoveryServiceGrpc.AggregatedDiscoveryServiceImplBase;
4+
import static io.envoyproxy.envoy.service.endpoint.v3.EndpointDiscoveryServiceGrpc.EndpointDiscoveryServiceImplBase;
5+
import static io.envoyproxy.envoy.service.listener.v3.ListenerDiscoveryServiceGrpc.ListenerDiscoveryServiceImplBase;
6+
import static io.envoyproxy.envoy.service.route.v3.RouteDiscoveryServiceGrpc.RouteDiscoveryServiceImplBase;
7+
import static io.envoyproxy.envoy.service.route.v3.VirtualHostDiscoveryServiceGrpc.VirtualHostDiscoveryServiceImplBase;
8+
import static io.envoyproxy.envoy.service.secret.v3.SecretDiscoveryServiceGrpc.SecretDiscoveryServiceImplBase;
9+
310
import com.google.common.base.Preconditions;
411
import com.google.protobuf.Any;
512
import io.envoyproxy.controlplane.cache.ConfigWatcher;
@@ -8,21 +15,20 @@
815
import io.envoyproxy.controlplane.cache.XdsRequest;
916
import io.envoyproxy.controlplane.server.serializer.DefaultProtoResourcesSerializer;
1017
import io.envoyproxy.controlplane.server.serializer.ProtoResourcesSerializer;
18+
1119
import io.envoyproxy.envoy.service.cluster.v3.ClusterDiscoveryServiceGrpc.ClusterDiscoveryServiceImplBase;
12-
import io.envoyproxy.envoy.service.discovery.v3.*;
20+
21+
import io.envoyproxy.envoy.service.discovery.v3.DeltaDiscoveryRequest;
22+
import io.envoyproxy.envoy.service.discovery.v3.DeltaDiscoveryResponse;
23+
import io.envoyproxy.envoy.service.discovery.v3.DiscoveryRequest;
24+
import io.envoyproxy.envoy.service.discovery.v3.DiscoveryResponse;
25+
import io.envoyproxy.envoy.service.discovery.v3.Resource;
1326
import io.grpc.stub.StreamObserver;
1427

1528
import java.util.Collection;
1629
import java.util.Collections;
1730
import java.util.List;
1831

19-
import static io.envoyproxy.envoy.service.discovery.v3.AggregatedDiscoveryServiceGrpc.AggregatedDiscoveryServiceImplBase;
20-
import static io.envoyproxy.envoy.service.endpoint.v3.EndpointDiscoveryServiceGrpc.EndpointDiscoveryServiceImplBase;
21-
import static io.envoyproxy.envoy.service.listener.v3.ListenerDiscoveryServiceGrpc.ListenerDiscoveryServiceImplBase;
22-
import static io.envoyproxy.envoy.service.route.v3.RouteDiscoveryServiceGrpc.RouteDiscoveryServiceImplBase;
23-
import static io.envoyproxy.envoy.service.secret.v3.SecretDiscoveryServiceGrpc.SecretDiscoveryServiceImplBase;
24-
import static io.envoyproxy.envoy.service.route.v3.VirtualHostDiscoveryServiceGrpc.VirtualHostDiscoveryServiceImplBase;
25-
2632
public class V3DiscoveryServer extends DiscoveryServer<DiscoveryRequest, DiscoveryResponse, DeltaDiscoveryRequest,
2733
DeltaDiscoveryResponse, Resource> {
2834
public V3DiscoveryServer(ConfigWatcher configWatcher) {
@@ -165,6 +171,11 @@ public StreamObserver<DiscoveryRequest> streamSecrets(
165171
return createRequestHandler(responseObserver, false, Resources.V3.SECRET_TYPE_URL);
166172
}
167173

174+
/**
175+
* Returns delta Secrets.
176+
*
177+
* @param responseObserver Stream observer
178+
*/
168179
@Override
169180
public StreamObserver<DeltaDiscoveryRequest> deltaSecrets(
170181
StreamObserver<DeltaDiscoveryResponse> responseObserver) {
@@ -174,6 +185,9 @@ public StreamObserver<DeltaDiscoveryRequest> deltaSecrets(
174185
};
175186
}
176187

188+
/**
189+
* Returns VHDS implementation that uses this server.
190+
*/
177191
public VirtualHostDiscoveryServiceImplBase getVirtualHostDiscoveryServiceImpl() {
178192
return new VirtualHostDiscoveryServiceImplBase() {
179193

server/src/main/java/io/envoyproxy/controlplane/server/XdsDeltaDiscoveryRequestStreamObserver.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public class XdsDeltaDiscoveryRequestStreamObserver<V, X, Y> extends DeltaDiscov
3636
this.pendingResources = new HashSet<>();
3737
Resources.ResourceType resourceType = Resources.TYPE_URLS_TO_RESOURCE_TYPE.get(defaultTypeUrl);
3838
this.isWildcard = Resources.ResourceType.CLUSTER.equals(resourceType)
39-
|| Resources.ResourceType.LISTENER.equals(resourceType) || Resources.ResourceType.VIRTUAL_HOST.equals(resourceType);
39+
|| Resources.ResourceType.LISTENER.equals(resourceType)
40+
|| Resources.ResourceType.VIRTUAL_HOST.equals(resourceType);
4041
this.responses = new ConcurrentHashMap<>();
4142
}
4243

server/src/test/java/io/envoyproxy/controlplane/server/TestMain.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,21 @@ public static void main(String[] arg) throws IOException, InterruptedException {
3232
"cluster0", "127.0.0.1", 1234, Cluster.DiscoveryType.STATIC)),
3333
ImmutableList.of(),
3434
ImmutableList.of(),
35+
ImmutableList.of(TestResources.createVhdsRoute("name1")),
3536
ImmutableList.of(),
3637
ImmutableList.of(),
3738
"1"));
3839

3940

4041
V3DiscoveryServer v3DiscoveryServer = new V3DiscoveryServer(cache);
4142

42-
ServerBuilder builder =
43+
ServerBuilder<NettyServerBuilder> builder =
4344
NettyServerBuilder.forPort(12345)
4445
.addService(v3DiscoveryServer.getAggregatedDiscoveryServiceImpl())
4546
.addService(v3DiscoveryServer.getClusterDiscoveryServiceImpl())
4647
.addService(v3DiscoveryServer.getEndpointDiscoveryServiceImpl())
4748
.addService(v3DiscoveryServer.getListenerDiscoveryServiceImpl())
49+
.addService(v3DiscoveryServer.getVirtualHostDiscoveryServiceImpl())
4850
.addService(v3DiscoveryServer.getRouteDiscoveryServiceImpl());
4951

5052
Server server = builder.build();
@@ -65,6 +67,7 @@ public static void main(String[] arg) throws IOException, InterruptedException {
6567
"cluster1", "127.0.0.1", 1235, Cluster.DiscoveryType.STATIC)),
6668
ImmutableList.of(),
6769
ImmutableList.of(),
70+
ImmutableList.of(TestResources.createVhdsRoute("name2")),
6871
ImmutableList.of(),
6972
ImmutableList.of(),
7073
"1"));

0 commit comments

Comments
 (0)