Skip to content

Commit 4ac8d6d

Browse files
committed
grpc-js-xds: Remove all code for handling xDS v2
1 parent 3003dbe commit 4ac8d6d

File tree

9 files changed

+173
-368
lines changed

9 files changed

+173
-368
lines changed

packages/grpc-js-xds/src/csds.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { ClientStatusDiscoveryServiceHandlers } from "./generated/envoy/service/
2121
import { ClientStatusRequest__Output } from "./generated/envoy/service/status/v3/ClientStatusRequest";
2222
import { ClientStatusResponse } from "./generated/envoy/service/status/v3/ClientStatusResponse";
2323
import { Timestamp } from "./generated/google/protobuf/Timestamp";
24-
import { AdsTypeUrl, CDS_TYPE_URL_V2, CDS_TYPE_URL_V3, EDS_TYPE_URL_V2, EDS_TYPE_URL_V3, LDS_TYPE_URL_V2, LDS_TYPE_URL_V3, RDS_TYPE_URL_V2, RDS_TYPE_URL_V3 } from "./resources";
24+
import { AdsTypeUrl, CDS_TYPE_URL, EDS_TYPE_URL, LDS_TYPE_URL, RDS_TYPE_URL } from "./resources";
2525
import { HandleResponseResult } from "./xds-stream-state/xds-stream-state";
2626
import { sendUnaryData, ServerDuplexStream, ServerUnaryCall, status, experimental, loadPackageDefinition, logVerbosity } from '@grpc/grpc-js';
2727
import { loadSync } from "@grpc/proto-loader";
@@ -50,14 +50,10 @@ function dateToProtoTimestamp(date?: Date | null): Timestamp | null {
5050
let clientNode: Node | null = null;
5151

5252
const configStatus = {
53-
[EDS_TYPE_URL_V2]: new Map<string, GenericXdsConfig>(),
54-
[EDS_TYPE_URL_V3]: new Map<string, GenericXdsConfig>(),
55-
[CDS_TYPE_URL_V2]: new Map<string, GenericXdsConfig>(),
56-
[CDS_TYPE_URL_V3]: new Map<string, GenericXdsConfig>(),
57-
[RDS_TYPE_URL_V2]: new Map<string, GenericXdsConfig>(),
58-
[RDS_TYPE_URL_V3]: new Map<string, GenericXdsConfig>(),
59-
[LDS_TYPE_URL_V2]: new Map<string, GenericXdsConfig>(),
60-
[LDS_TYPE_URL_V3]: new Map<string, GenericXdsConfig>()
53+
[EDS_TYPE_URL]: new Map<string, GenericXdsConfig>(),
54+
[CDS_TYPE_URL]: new Map<string, GenericXdsConfig>(),
55+
[RDS_TYPE_URL]: new Map<string, GenericXdsConfig>(),
56+
[LDS_TYPE_URL]: new Map<string, GenericXdsConfig>()
6157
};
6258

6359
/**

packages/grpc-js-xds/src/load-balancer-eds.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import { connectivityState as ConnectivityState, status as Status, Metadata, logVerbosity as LogVerbosity, experimental, StatusObject } from '@grpc/grpc-js';
1919
import { getSingletonXdsClient, XdsClient, XdsClusterDropStats } from './xds-client';
2020
import { ClusterLoadAssignment__Output } from './generated/envoy/config/endpoint/v3/ClusterLoadAssignment';
21-
import { Locality__Output } from './generated/envoy/api/v2/core/Locality';
21+
import { Locality__Output } from './generated/envoy/config/core/v3/Locality';
2222
import { LocalitySubchannelAddress, PriorityChild, PriorityLoadBalancingConfig } from './load-balancer-priority';
2323
import LoadBalancer = experimental.LoadBalancer;
2424
import ChannelControlHelper = experimental.ChannelControlHelper;

packages/grpc-js-xds/src/load-balancer-lrs.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import { connectivityState as ConnectivityState, StatusObject, status as Status, experimental } from '@grpc/grpc-js';
19-
import { Locality__Output } from './generated/envoy/api/v2/core/Locality';
19+
import { Locality__Output } from './generated/envoy/config/core/v3/Locality';
2020
import { XdsClusterLocalityStats, XdsClient, getSingletonXdsClient } from './xds-client';
2121
import LoadBalancer = experimental.LoadBalancer;
2222
import ChannelControlHelper = experimental.ChannelControlHelper;

packages/grpc-js-xds/src/resolver-xds.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ import { XdsClusterManagerLoadBalancingConfig } from './load-balancer-xds-cluste
4040
import { ExactValueMatcher, FullMatcher, HeaderMatcher, Matcher, PathExactValueMatcher, PathPrefixValueMatcher, PathSafeRegexValueMatcher, PrefixValueMatcher, PresentValueMatcher, RangeValueMatcher, RejectValueMatcher, SafeRegexValueMatcher, SuffixValueMatcher, ValueMatcher } from './matcher';
4141
import { envoyFractionToFraction, Fraction } from "./fraction";
4242
import { RouteAction, SingleClusterRouteAction, WeightedCluster, WeightedClusterRouteAction } from './route-action';
43-
import { decodeSingleResource, HTTP_CONNECTION_MANGER_TYPE_URL_V3 } from './resources';
43+
import { decodeSingleResource, HTTP_CONNECTION_MANGER_TYPE_URL } from './resources';
4444
import Duration = experimental.Duration;
4545
import { Duration__Output } from './generated/google/protobuf/Duration';
4646
import { createHttpFilter, HttpFilterConfig, parseOverrideFilterConfig, parseTopLevelFilterConfig } from './http-filter';
@@ -212,7 +212,6 @@ class XdsResolver implements Resolver {
212212
private latestRouteConfigName: string | null = null;
213213

214214
private latestRouteConfig: RouteConfiguration__Output | null = null;
215-
private latestRouteConfigIsV2 = false;
216215

217216
private clusterRefcounts = new Map<string, {inLastConfig: boolean, refCount: number}>();
218217

@@ -226,15 +225,15 @@ class XdsResolver implements Resolver {
226225
private channelOptions: ChannelOptions
227226
) {
228227
this.ldsWatcher = {
229-
onValidUpdate: (update: Listener__Output, isV2: boolean) => {
230-
const httpConnectionManager = decodeSingleResource(HTTP_CONNECTION_MANGER_TYPE_URL_V3, update.api_listener!.api_listener!.value);
228+
onValidUpdate: (update: Listener__Output) => {
229+
const httpConnectionManager = decodeSingleResource(HTTP_CONNECTION_MANGER_TYPE_URL, update.api_listener!.api_listener!.value);
231230
const defaultTimeout = httpConnectionManager.common_http_protocol_options?.idle_timeout;
232231
if (defaultTimeout === null || defaultTimeout === undefined) {
233232
this.latestDefaultTimeout = undefined;
234233
} else {
235234
this.latestDefaultTimeout = protoDurationToDuration(defaultTimeout);
236235
}
237-
if (!isV2 && EXPERIMENTAL_FAULT_INJECTION) {
236+
if (EXPERIMENTAL_FAULT_INJECTION) {
238237
this.ldsHttpFilterConfigs = [];
239238
for (const filter of httpConnectionManager.http_filters) {
240239
// typed_config must be set here, or validation would have failed
@@ -260,7 +259,7 @@ class XdsResolver implements Resolver {
260259
if (this.latestRouteConfigName) {
261260
getSingletonXdsClient().removeRouteWatcher(this.latestRouteConfigName, this.rdsWatcher);
262261
}
263-
this.handleRouteConfig(httpConnectionManager.route_config!, isV2);
262+
this.handleRouteConfig(httpConnectionManager.route_config!);
264263
break;
265264
default:
266265
// This is prevented by the validation rules
@@ -280,8 +279,8 @@ class XdsResolver implements Resolver {
280279
}
281280
};
282281
this.rdsWatcher = {
283-
onValidUpdate: (update: RouteConfiguration__Output, isV2: boolean) => {
284-
this.handleRouteConfig(update, isV2);
282+
onValidUpdate: (update: RouteConfiguration__Output) => {
283+
this.handleRouteConfig(update);
285284
},
286285
onTransientError: (error: StatusObject) => {
287286
/* A transient error only needs to bubble up as a failure if we have
@@ -311,14 +310,13 @@ class XdsResolver implements Resolver {
311310
refCount.refCount -= 1;
312311
if (!refCount.inLastConfig && refCount.refCount === 0) {
313312
this.clusterRefcounts.delete(clusterName);
314-
this.handleRouteConfig(this.latestRouteConfig!, this.latestRouteConfigIsV2);
313+
this.handleRouteConfig(this.latestRouteConfig!);
315314
}
316315
}
317316
}
318317

319-
private handleRouteConfig(routeConfig: RouteConfiguration__Output, isV2: boolean) {
318+
private handleRouteConfig(routeConfig: RouteConfiguration__Output) {
320319
this.latestRouteConfig = routeConfig;
321-
this.latestRouteConfigIsV2 = isV2;
322320
/* Select the virtual host using the default authority override if it
323321
* exists, and the channel target otherwise. */
324322
const hostDomain = this.channelOptions['grpc.default_authority'] ?? this.target.path;
@@ -328,7 +326,7 @@ class XdsResolver implements Resolver {
328326
return;
329327
}
330328
const virtualHostHttpFilterOverrides = new Map<string, HttpFilterConfig>();
331-
if (!isV2 && EXPERIMENTAL_FAULT_INJECTION) {
329+
if (EXPERIMENTAL_FAULT_INJECTION) {
332330
for (const [name, filter] of Object.entries(virtualHost.typed_per_filter_config ?? {})) {
333331
const parsedConfig = parseOverrideFilterConfig(filter);
334332
if (parsedConfig) {
@@ -357,7 +355,7 @@ class XdsResolver implements Resolver {
357355
timeout = undefined;
358356
}
359357
const routeHttpFilterOverrides = new Map<string, HttpFilterConfig>();
360-
if (!isV2 && EXPERIMENTAL_FAULT_INJECTION) {
358+
if (EXPERIMENTAL_FAULT_INJECTION) {
361359
for (const [name, filter] of Object.entries(route.typed_per_filter_config ?? {})) {
362360
const parsedConfig = parseOverrideFilterConfig(filter);
363361
if (parsedConfig) {
@@ -372,7 +370,7 @@ class XdsResolver implements Resolver {
372370
const cluster = route.route!.cluster!;
373371
allConfigClusters.add(cluster);
374372
const extraFilterFactories: FilterFactory<Filter>[] = [];
375-
if (!isV2 && EXPERIMENTAL_FAULT_INJECTION) {
373+
if (EXPERIMENTAL_FAULT_INJECTION) {
376374
for (const filterConfig of this.ldsHttpFilterConfigs) {
377375
if (routeHttpFilterOverrides.has(filterConfig.name)) {
378376
const filter = createHttpFilter(filterConfig.config, routeHttpFilterOverrides.get(filterConfig.name)!);
@@ -401,7 +399,7 @@ class XdsResolver implements Resolver {
401399
allConfigClusters.add(clusterWeight.name);
402400
const extraFilterFactories: FilterFactory<Filter>[] = [];
403401
const clusterHttpFilterOverrides = new Map<string, HttpFilterConfig>();
404-
if (!isV2 && EXPERIMENTAL_FAULT_INJECTION) {
402+
if (EXPERIMENTAL_FAULT_INJECTION) {
405403
for (const [name, filter] of Object.entries(clusterWeight.typed_per_filter_config ?? {})) {
406404
const parsedConfig = parseOverrideFilterConfig(filter);
407405
if (parsedConfig) {

packages/grpc-js-xds/src/resources.ts

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,22 @@ import { Listener__Output } from './generated/envoy/config/listener/v3/Listener'
2323
import { RouteConfiguration__Output } from './generated/envoy/config/route/v3/RouteConfiguration';
2424
import { HttpConnectionManager__Output } from './generated/envoy/extensions/filters/network/http_connection_manager/v3/HttpConnectionManager';
2525

26-
export const EDS_TYPE_URL_V2 = 'type.googleapis.com/envoy.api.v2.ClusterLoadAssignment';
27-
export const CDS_TYPE_URL_V2 = 'type.googleapis.com/envoy.api.v2.Cluster';
28-
export const LDS_TYPE_URL_V2 = 'type.googleapis.com/envoy.api.v2.Listener';
29-
export const RDS_TYPE_URL_V2 = 'type.googleapis.com/envoy.api.v2.RouteConfiguration';
26+
export const EDS_TYPE_URL = 'type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment';
27+
export const CDS_TYPE_URL = 'type.googleapis.com/envoy.config.cluster.v3.Cluster';
28+
export const LDS_TYPE_URL = 'type.googleapis.com/envoy.config.listener.v3.Listener';
29+
export const RDS_TYPE_URL = 'type.googleapis.com/envoy.config.route.v3.RouteConfiguration';
3030

31-
export const EDS_TYPE_URL_V3 = 'type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment';
32-
export const CDS_TYPE_URL_V3 = 'type.googleapis.com/envoy.config.cluster.v3.Cluster';
33-
export const LDS_TYPE_URL_V3 = 'type.googleapis.com/envoy.config.listener.v3.Listener';
34-
export const RDS_TYPE_URL_V3 = 'type.googleapis.com/envoy.config.route.v3.RouteConfiguration';
35-
36-
export type EdsTypeUrl = 'type.googleapis.com/envoy.api.v2.ClusterLoadAssignment' | 'type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment';
37-
export type CdsTypeUrl = 'type.googleapis.com/envoy.api.v2.Cluster' | 'type.googleapis.com/envoy.config.cluster.v3.Cluster';
38-
export type LdsTypeUrl = 'type.googleapis.com/envoy.api.v2.Listener' | 'type.googleapis.com/envoy.config.listener.v3.Listener';
39-
export type RdsTypeUrl = 'type.googleapis.com/envoy.api.v2.RouteConfiguration' | 'type.googleapis.com/envoy.config.route.v3.RouteConfiguration';
31+
export type EdsTypeUrl = 'type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment';
32+
export type CdsTypeUrl = 'type.googleapis.com/envoy.config.cluster.v3.Cluster';
33+
export type LdsTypeUrl = 'type.googleapis.com/envoy.config.listener.v3.Listener';
34+
export type RdsTypeUrl = 'type.googleapis.com/envoy.config.route.v3.RouteConfiguration';
4035

4136
export type AdsTypeUrl = EdsTypeUrl | CdsTypeUrl | RdsTypeUrl | LdsTypeUrl;
4237

43-
export const HTTP_CONNECTION_MANGER_TYPE_URL_V2 =
44-
'type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager';
45-
export const HTTP_CONNECTION_MANGER_TYPE_URL_V3 =
38+
export const HTTP_CONNECTION_MANGER_TYPE_URL =
4639
'type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager';
4740

48-
export type HttpConnectionManagerTypeUrl = 'type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager' | 'type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager';
41+
export type HttpConnectionManagerTypeUrl = 'type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager';
4942

5043
/**
5144
* Map type URLs to their corresponding message types

0 commit comments

Comments
 (0)