Update generated code with separate service files

This commit is contained in:
Michael Lumish 2020-07-13 13:02:47 -07:00
parent bf471a96a6
commit f91c837058
16 changed files with 539 additions and 11796 deletions

View File

@ -47,7 +47,7 @@
"clean": "node -e 'require(\"rimraf\")(\"./build\", () => {})'",
"compile": "tsc -p .",
"format": "clang-format -i -style=\"{Language: JavaScript, BasedOnStyle: Google, ColumnLimit: 80}\" src/*.ts test/*.ts",
"generate-types": "proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --json --generateComments --includeDirs deps/envoy-api/ deps/udpa/ deps/googleapis/ deps/protoc-gen-validate/ -O src/generated/ --grpcLib ../index envoy/service/discovery/v2/ads.proto envoy/api/v2/listener.proto envoy/api/v2/route.proto envoy/api/v2/cluster.proto envoy/api/v2/endpoint.proto",
"generate-types": "proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --json --includeComments --includeDirs deps/envoy-api/ deps/udpa/ deps/googleapis/ deps/protoc-gen-validate/ -O src/generated/ --grpcLib ../index envoy/service/discovery/v2/ads.proto envoy/api/v2/listener.proto envoy/api/v2/route.proto envoy/api/v2/cluster.proto envoy/api/v2/endpoint.proto",
"lint": "npm run check",
"prepare": "npm run compile",
"test": "gulp test",

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -21,8 +21,8 @@ import { Filter as _envoy_api_v2_cluster_Filter, Filter__Output as _envoy_api_v2
import { LoadBalancingPolicy as _envoy_api_v2_LoadBalancingPolicy, LoadBalancingPolicy__Output as _envoy_api_v2_LoadBalancingPolicy__Output } from '../../../envoy/api/v2/LoadBalancingPolicy';
import { ConfigSource as _envoy_api_v2_core_ConfigSource, ConfigSource__Output as _envoy_api_v2_core_ConfigSource__Output } from '../../../envoy/api/v2/core/ConfigSource';
import { UpstreamHttpProtocolOptions as _envoy_api_v2_core_UpstreamHttpProtocolOptions, UpstreamHttpProtocolOptions__Output as _envoy_api_v2_core_UpstreamHttpProtocolOptions__Output } from '../../../envoy/api/v2/core/UpstreamHttpProtocolOptions';
import { Percent as _envoy_type_Percent, Percent__Output as _envoy_type_Percent__Output } from '../../../envoy/type/Percent';
import { UInt64Value as _google_protobuf_UInt64Value, UInt64Value__Output as _google_protobuf_UInt64Value__Output } from '../../../google/protobuf/UInt64Value';
import { Percent as _envoy_type_Percent, Percent__Output as _envoy_type_Percent__Output } from '../../../envoy/type/Percent';
import { Long } from '@grpc/proto-loader';
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
@ -196,78 +196,6 @@ export interface _envoy_api_v2_Cluster_CommonLbConfig_ConsistentHashingLbConfig_
'use_hostname_for_hashing': (boolean);
}
/**
* Configuration for :ref:`locality weighted load balancing
* <arch_overview_load_balancing_locality_weighted_lb>`
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_LocalityWeightedLbConfig {
}
/**
* Configuration for :ref:`locality weighted load balancing
* <arch_overview_load_balancing_locality_weighted_lb>`
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_LocalityWeightedLbConfig__Output {
}
/**
* Configuration for :ref:`zone aware routing
* <arch_overview_load_balancing_zone_aware_routing>`.
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_ZoneAwareLbConfig {
/**
* Configures percentage of requests that will be considered for zone aware routing
* if zone aware routing is configured. If not specified, the default is 100%.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'routing_enabled'?: (_envoy_type_Percent);
/**
* Configures minimum upstream cluster size required for zone aware routing
* If upstream cluster size is less than specified, zone aware routing is not performed
* even if zone aware routing is configured. If not specified, the default is 6.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'min_cluster_size'?: (_google_protobuf_UInt64Value);
/**
* If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic
* mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all
* requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a
* failing service.
*/
'fail_traffic_on_panic'?: (boolean);
}
/**
* Configuration for :ref:`zone aware routing
* <arch_overview_load_balancing_zone_aware_routing>`.
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_ZoneAwareLbConfig__Output {
/**
* Configures percentage of requests that will be considered for zone aware routing
* if zone aware routing is configured. If not specified, the default is 100%.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'routing_enabled': (_envoy_type_Percent__Output);
/**
* Configures minimum upstream cluster size required for zone aware routing
* If upstream cluster size is less than specified, zone aware routing is not performed
* even if zone aware routing is configured. If not specified, the default is 6.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'min_cluster_size': (_google_protobuf_UInt64Value__Output);
/**
* If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic
* mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all
* requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a
* failing service.
*/
'fail_traffic_on_panic': (boolean);
}
/**
* Extended cluster type.
*/
@ -389,6 +317,24 @@ export interface _envoy_api_v2_Cluster_EdsClusterConfig__Output {
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
/**
* The hash function used to hash hosts onto the ketama ring.
*/
export enum _envoy_api_v2_Cluster_RingHashLbConfig_HashFunction {
/**
* Use `xxHash <https://github.com/Cyan4973/xxHash>`_, this is the default hash function.
*/
XX_HASH = 0,
/**
* Use `MurmurHash2 <https://sites.google.com/site/murmurhash/>`_, this is compatible with
* std:hash<string> in GNU libstdc++ 3.4.20 or above. This is typically the case when compiled
* on Linux and not macOS.
*/
MURMUR_HASH_2 = 1,
}
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
/**
* Refer to :ref:`load balancer type <arch_overview_load_balancing_types>` architecture
* overview section for information on each type.
@ -728,6 +674,20 @@ export interface _envoy_api_v2_Cluster_LeastRequestLbConfig__Output {
'choice_count': (_google_protobuf_UInt32Value__Output);
}
/**
* Configuration for :ref:`locality weighted load balancing
* <arch_overview_load_balancing_locality_weighted_lb>`
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_LocalityWeightedLbConfig {
}
/**
* Configuration for :ref:`locality weighted load balancing
* <arch_overview_load_balancing_locality_weighted_lb>`
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_LocalityWeightedLbConfig__Output {
}
/**
* Specific configuration for the
* :ref:`Original Destination <arch_overview_load_balancing_types_original_destination>`
@ -850,24 +810,6 @@ export interface _envoy_api_v2_Cluster_RingHashLbConfig__Output {
'maximum_ring_size': (_google_protobuf_UInt64Value__Output);
}
// Original file: deps/envoy-api/envoy/api/v2/cluster.proto
/**
* The hash function used to hash hosts onto the ketama ring.
*/
export enum _envoy_api_v2_Cluster_RingHashLbConfig_HashFunction {
/**
* Use `xxHash <https://github.com/Cyan4973/xxHash>`_, this is the default hash function.
*/
XX_HASH = 0,
/**
* Use `MurmurHash2 <https://sites.google.com/site/murmurhash/>`_, this is compatible with
* std:hash<string> in GNU libstdc++ 3.4.20 or above. This is typically the case when compiled
* on Linux and not macOS.
*/
MURMUR_HASH_2 = 1,
}
/**
* TransportSocketMatch specifies what transport socket config will be used
* when the match conditions are satisfied.
@ -914,6 +856,64 @@ export interface _envoy_api_v2_Cluster_TransportSocketMatch__Output {
'transport_socket': (_envoy_api_v2_core_TransportSocket__Output);
}
/**
* Configuration for :ref:`zone aware routing
* <arch_overview_load_balancing_zone_aware_routing>`.
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_ZoneAwareLbConfig {
/**
* Configures percentage of requests that will be considered for zone aware routing
* if zone aware routing is configured. If not specified, the default is 100%.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'routing_enabled'?: (_envoy_type_Percent);
/**
* Configures minimum upstream cluster size required for zone aware routing
* If upstream cluster size is less than specified, zone aware routing is not performed
* even if zone aware routing is configured. If not specified, the default is 6.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'min_cluster_size'?: (_google_protobuf_UInt64Value);
/**
* If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic
* mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all
* requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a
* failing service.
*/
'fail_traffic_on_panic'?: (boolean);
}
/**
* Configuration for :ref:`zone aware routing
* <arch_overview_load_balancing_zone_aware_routing>`.
*/
export interface _envoy_api_v2_Cluster_CommonLbConfig_ZoneAwareLbConfig__Output {
/**
* Configures percentage of requests that will be considered for zone aware routing
* if zone aware routing is configured. If not specified, the default is 100%.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'routing_enabled': (_envoy_type_Percent__Output);
/**
* Configures minimum upstream cluster size required for zone aware routing
* If upstream cluster size is less than specified, zone aware routing is not performed
* even if zone aware routing is configured. If not specified, the default is 6.
* * :ref:`runtime values <config_cluster_manager_cluster_runtime_zone_routing>`.
* * :ref:`Zone aware routing support <arch_overview_load_balancing_zone_aware_routing>`.
*/
'min_cluster_size': (_google_protobuf_UInt64Value__Output);
/**
* If set to true, Envoy will not consider any hosts when the cluster is in :ref:`panic
* mode<arch_overview_load_balancing_panic_threshold>`. Instead, the cluster will fail all
* requests as if all hosts are unhealthy. This can help avoid potentially overwhelming a
* failing service.
*/
'fail_traffic_on_panic': (boolean);
}
/**
* Configuration for a single upstream cluster.
* [#next-free-field: 48]

View File

@ -6,6 +6,34 @@ import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _go
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../google/protobuf/Duration';
import { FractionalPercent as _envoy_type_FractionalPercent, FractionalPercent__Output as _envoy_type_FractionalPercent__Output } from '../../../envoy/type/FractionalPercent';
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload {
/**
* Identifier for the policy specifying the drop.
*/
'category'?: (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage'?: (_envoy_type_FractionalPercent);
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload__Output {
/**
* Identifier for the policy specifying the drop.
*/
'category': (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage': (_envoy_type_FractionalPercent__Output);
}
/**
* Load balancing policy settings.
* [#next-free-field: 6]
@ -136,34 +164,6 @@ export interface _envoy_api_v2_ClusterLoadAssignment_Policy__Output {
'disable_overprovisioning': (boolean);
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload {
/**
* Identifier for the policy specifying the drop.
*/
'category'?: (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage'?: (_envoy_type_FractionalPercent);
}
/**
* [#not-implemented-hide:]
*/
export interface _envoy_api_v2_ClusterLoadAssignment_Policy_DropOverload__Output {
/**
* Identifier for the policy specifying the drop.
*/
'category': (string);
/**
* Percentage of traffic that should be dropped for the category.
*/
'drop_percentage': (_envoy_type_FractionalPercent__Output);
}
/**
* Each route from RDS will map to a single cluster or traffic split across
* clusters using weights expressed in the RDS WeightedCluster.

View File

@ -35,28 +35,6 @@ export interface _envoy_api_v2_Listener_ConnectionBalanceConfig__Output {
'balance_type': "exact_balance";
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance {
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance__Output {
}
/**
* [#not-implemented-hide:]
*/
@ -111,6 +89,28 @@ export enum _envoy_api_v2_Listener_DrainType {
MODIFY_ONLY = 1,
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance {
}
/**
* A connection balancer implementation that does exact balancing. This means that a lock is
* held during balancing so that connection counts are nearly exactly balanced between worker
* threads. This is "nearly" exact in the sense that a connection might close in parallel thus
* making the counts incorrect, but this should be rectified on the next accept. This balancer
* sacrifices accept throughput for accuracy and should be used when there are a small number of
* connections that rarely cycle (e.g., service mesh gRPC egress).
*/
export interface _envoy_api_v2_Listener_ConnectionBalanceConfig_ExactBalance__Output {
}
/**
* [#next-free-field: 23]
*/

View File

@ -4,6 +4,42 @@ import { RoutingPriority as _envoy_api_v2_core_RoutingPriority } from '../../../
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { Percent as _envoy_type_Percent, Percent__Output as _envoy_type_Percent__Output } from '../../../../envoy/type/Percent';
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent'?: (_envoy_type_Percent);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency'?: (_google_protobuf_UInt32Value);
}
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget__Output {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent': (_envoy_type_Percent__Output);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency': (_google_protobuf_UInt32Value__Output);
}
/**
* A Thresholds defines CircuitBreaker settings for a
* :ref:`RoutingPriority<envoy_api_enum_core.RoutingPriority>`.
@ -128,42 +164,6 @@ export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds__Output {
'max_connection_pools': (_google_protobuf_UInt32Value__Output);
}
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent'?: (_envoy_type_Percent);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency'?: (_google_protobuf_UInt32Value);
}
export interface _envoy_api_v2_cluster_CircuitBreakers_Thresholds_RetryBudget__Output {
/**
* Specifies the limit on concurrent retries as a percentage of the sum of active requests and
* active pending requests. For example, if there are 100 active requests and the
* budget_percent is set to 25, there may be 25 active retries.
*
* This parameter is optional. Defaults to 20%.
*/
'budget_percent': (_envoy_type_Percent__Output);
/**
* Specifies the minimum retry concurrency allowed for the retry budget. The limit on the
* number of active retries may never go below this number.
*
* This parameter is optional. Defaults to 3.
*/
'min_retry_concurrency': (_google_protobuf_UInt32Value__Output);
}
/**
* :ref:`Circuit breaking<arch_overview_circuit_break>` settings can be
* specified individually for each defined priority.

View File

@ -3,11 +3,127 @@
import { Duration as _google_protobuf_Duration, Duration__Output as _google_protobuf_Duration__Output } from '../../../../google/protobuf/Duration';
import { HeaderValue as _envoy_api_v2_core_HeaderValue, HeaderValue__Output as _envoy_api_v2_core_HeaderValue__Output } from '../../../../envoy/api/v2/core/HeaderValue';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { Empty as _google_protobuf_Empty, Empty__Output as _google_protobuf_Empty__Output } from '../../../../google/protobuf/Empty';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { DataSource as _envoy_api_v2_core_DataSource, DataSource__Output as _envoy_api_v2_core_DataSource__Output } from '../../../../envoy/api/v2/core/DataSource';
import { Long } from '@grpc/proto-loader';
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService);
'credential_specifier'?: "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials__Output {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty__Output);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__Output);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__Output);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__Output);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService__Output);
'credential_specifier': "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials);
'credential_specifier'?: "ssl_credentials"|"google_default"|"local_credentials";
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials__Output {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty__Output);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output);
'credential_specifier': "ssl_credentials"|"google_default"|"local_credentials";
}
export interface _envoy_api_v2_core_GrpcService_EnvoyGrpc {
/**
* The name of the upstream gRPC cluster. SSL credentials will be supplied
@ -108,94 +224,6 @@ export interface _envoy_api_v2_core_GrpcService_GoogleGrpc__Output {
'config': (_google_protobuf_Struct__Output);
}
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService);
'credential_specifier'?: "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
/**
* [#next-free-field: 8]
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials__Output {
/**
* Access token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#ad3a80da696ffdaea943f0f858d7a360d.
*/
'access_token'?: (string);
/**
* Google Compute Engine credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_compute_engine'?: (_google_protobuf_Empty__Output);
/**
* Google refresh token credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a96901c997b91bc6513b08491e0dca37c.
*/
'google_refresh_token'?: (string);
/**
* Service Account JWT Access credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a92a9f959d6102461f66ee973d8e9d3aa.
*/
'service_account_jwt_access'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_ServiceAccountJWTAccessCredentials__Output);
/**
* Google IAM credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a9fc1fc101b41e680d47028166e76f9d0.
*/
'google_iam'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials__Output);
/**
* Custom authenticator credentials.
* https://grpc.io/grpc/cpp/namespacegrpc.html#a823c6a4b19ffc71fb33e90154ee2ad07.
* https://grpc.io/docs/guides/auth.html#extending-grpc-to-support-other-authentication-mechanisms.
*/
'from_plugin'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin__Output);
/**
* Custom security token service which implements OAuth 2.0 token exchange.
* https://tools.ietf.org/html/draft-ietf-oauth-token-exchange-16
* See https://github.com/grpc/grpc/pull/19587.
*/
'sts_service'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsService__Output);
'credential_specifier': "access_token"|"google_compute_engine"|"google_refresh_token"|"service_account_jwt_access"|"google_iam"|"from_plugin"|"sts_service";
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_GoogleIAMCredentials {
'authorization_token'?: (string);
'authority_selector'?: (string);
@ -206,6 +234,20 @@ export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_Googl
'authority_selector': (string);
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials {
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output {
}
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_MetadataCredentialsFromPlugin {
'name'?: (string);
'config'?: (_google_protobuf_Struct);
@ -230,6 +272,42 @@ export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_Servi
'token_lifetime_seconds': (string);
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials {
/**
* PEM encoded server root certificates.
*/
'root_certs'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client certificate chain.
*/
'cert_chain'?: (_envoy_api_v2_core_DataSource);
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output {
/**
* PEM encoded server root certificates.
*/
'root_certs': (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client private key.
*/
'private_key': (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client certificate chain.
*/
'cert_chain': (_envoy_api_v2_core_DataSource__Output);
}
/**
* Security token service configuration that allows Google gRPC to
* fetch security token from an OAuth 2.0 authorization server.
@ -338,84 +416,6 @@ export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_CallCredentials_StsSe
'actor_token_type': (string);
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials);
'credential_specifier'?: "ssl_credentials"|"google_default"|"local_credentials";
}
/**
* See https://grpc.io/docs/guides/auth.html#credential-types to understand Channel and Call
* credential types.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_ChannelCredentials__Output {
'ssl_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output);
/**
* https://grpc.io/grpc/cpp/namespacegrpc.html#a6beb3ac70ff94bd2ebbd89b8f21d1f61
*/
'google_default'?: (_google_protobuf_Empty__Output);
'local_credentials'?: (_envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output);
'credential_specifier': "ssl_credentials"|"google_default"|"local_credentials";
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials {
}
/**
* Local channel credentials. Only UDS is supported for now.
* See https://github.com/grpc/grpc/pull/15909.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_GoogleLocalCredentials__Output {
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials {
/**
* PEM encoded server root certificates.
*/
'root_certs'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client private key.
*/
'private_key'?: (_envoy_api_v2_core_DataSource);
/**
* PEM encoded client certificate chain.
*/
'cert_chain'?: (_envoy_api_v2_core_DataSource);
}
/**
* See https://grpc.io/grpc/cpp/structgrpc_1_1_ssl_credentials_options.html.
*/
export interface _envoy_api_v2_core_GrpcService_GoogleGrpc_SslCredentials__Output {
/**
* PEM encoded server root certificates.
*/
'root_certs': (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client private key.
*/
'private_key': (_envoy_api_v2_core_DataSource__Output);
/**
* PEM encoded client certificate chain.
*/
'cert_chain': (_envoy_api_v2_core_DataSource__Output);
}
/**
* gRPC service configuration. This is used by :ref:`ApiConfigSource
* <envoy_api_msg_core.ApiConfigSource>` and filter configurations.

View File

@ -4,12 +4,12 @@ import { Duration as _google_protobuf_Duration, Duration__Output as _google_prot
import { UInt32Value as _google_protobuf_UInt32Value, UInt32Value__Output as _google_protobuf_UInt32Value__Output } from '../../../../google/protobuf/UInt32Value';
import { BoolValue as _google_protobuf_BoolValue, BoolValue__Output as _google_protobuf_BoolValue__Output } from '../../../../google/protobuf/BoolValue';
import { EventServiceConfig as _envoy_api_v2_core_EventServiceConfig, EventServiceConfig__Output as _envoy_api_v2_core_EventServiceConfig__Output } from '../../../../envoy/api/v2/core/EventServiceConfig';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { HeaderValueOption as _envoy_api_v2_core_HeaderValueOption, HeaderValueOption__Output as _envoy_api_v2_core_HeaderValueOption__Output } from '../../../../envoy/api/v2/core/HeaderValueOption';
import { Int64Range as _envoy_type_Int64Range, Int64Range__Output as _envoy_type_Int64Range__Output } from '../../../../envoy/type/Int64Range';
import { CodecClientType as _envoy_type_CodecClientType } from '../../../../envoy/type/CodecClientType';
import { StringMatcher as _envoy_type_matcher_StringMatcher, StringMatcher__Output as _envoy_type_matcher_StringMatcher__Output } from '../../../../envoy/type/matcher/StringMatcher';
import { Struct as _google_protobuf_Struct, Struct__Output as _google_protobuf_Struct__Output } from '../../../../google/protobuf/Struct';
import { Any as _google_protobuf_Any, Any__Output as _google_protobuf_Any__Output } from '../../../../google/protobuf/Any';
import { Long } from '@grpc/proto-loader';
/**

View File

@ -27,108 +27,6 @@ export enum _envoy_api_v2_route_RouteAction_ClusterNotFoundResponseCode {
NOT_FOUND = 1,
}
/**
* Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
* <arch_overview_load_balancing_types>`.
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RouteAction_HashPolicy {
/**
* Header hash policy.
*/
'header'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Header);
/**
* Cookie hash policy.
*/
'cookie'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Cookie);
/**
* Connection properties hash policy.
*/
'connection_properties'?: (_envoy_api_v2_route_RouteAction_HashPolicy_ConnectionProperties);
/**
* Query parameter hash policy.
*/
'query_parameter'?: (_envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter);
/**
* Filter state hash policy.
*/
'filter_state'?: (_envoy_api_v2_route_RouteAction_HashPolicy_FilterState);
/**
* The flag that short-circuits the hash computing. This field provides a
* 'fallback' style of configuration: "if a terminal policy doesn't work,
* fallback to rest of the policy list", it saves time when the terminal
* policy works.
*
* If true, and there is already a hash computed, ignore rest of the
* list of hash polices.
* For example, if the following hash methods are configured:
*
* ========= ========
* specifier terminal
* ========= ========
* Header A true
* Header B false
* Header C false
* ========= ========
*
* The generateHash process ends if policy "header A" generates a hash, as
* it's a terminal policy.
*/
'terminal'?: (boolean);
'policy_specifier'?: "header"|"cookie"|"connection_properties"|"query_parameter"|"filter_state";
}
/**
* Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
* <arch_overview_load_balancing_types>`.
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RouteAction_HashPolicy__Output {
/**
* Header hash policy.
*/
'header'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Header__Output);
/**
* Cookie hash policy.
*/
'cookie'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Cookie__Output);
/**
* Connection properties hash policy.
*/
'connection_properties'?: (_envoy_api_v2_route_RouteAction_HashPolicy_ConnectionProperties__Output);
/**
* Query parameter hash policy.
*/
'query_parameter'?: (_envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter__Output);
/**
* Filter state hash policy.
*/
'filter_state'?: (_envoy_api_v2_route_RouteAction_HashPolicy_FilterState__Output);
/**
* The flag that short-circuits the hash computing. This field provides a
* 'fallback' style of configuration: "if a terminal policy doesn't work,
* fallback to rest of the policy list", it saves time when the terminal
* policy works.
*
* If true, and there is already a hash computed, ignore rest of the
* list of hash polices.
* For example, if the following hash methods are configured:
*
* ========= ========
* specifier terminal
* ========= ========
* Header A true
* Header B false
* Header C false
* ========= ========
*
* The generateHash process ends if policy "header A" generates a hash, as
* it's a terminal policy.
*/
'terminal': (boolean);
'policy_specifier': "header"|"cookie"|"connection_properties"|"query_parameter"|"filter_state";
}
export interface _envoy_api_v2_route_RouteAction_HashPolicy_ConnectionProperties {
/**
* Hash on source IP address.
@ -233,6 +131,108 @@ export interface _envoy_api_v2_route_RouteAction_HashPolicy_FilterState__Output
'key': (string);
}
/**
* Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
* <arch_overview_load_balancing_types>`.
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RouteAction_HashPolicy {
/**
* Header hash policy.
*/
'header'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Header);
/**
* Cookie hash policy.
*/
'cookie'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Cookie);
/**
* Connection properties hash policy.
*/
'connection_properties'?: (_envoy_api_v2_route_RouteAction_HashPolicy_ConnectionProperties);
/**
* Query parameter hash policy.
*/
'query_parameter'?: (_envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter);
/**
* Filter state hash policy.
*/
'filter_state'?: (_envoy_api_v2_route_RouteAction_HashPolicy_FilterState);
/**
* The flag that short-circuits the hash computing. This field provides a
* 'fallback' style of configuration: "if a terminal policy doesn't work,
* fallback to rest of the policy list", it saves time when the terminal
* policy works.
*
* If true, and there is already a hash computed, ignore rest of the
* list of hash polices.
* For example, if the following hash methods are configured:
*
* ========= ========
* specifier terminal
* ========= ========
* Header A true
* Header B false
* Header C false
* ========= ========
*
* The generateHash process ends if policy "header A" generates a hash, as
* it's a terminal policy.
*/
'terminal'?: (boolean);
'policy_specifier'?: "header"|"cookie"|"connection_properties"|"query_parameter"|"filter_state";
}
/**
* Specifies the route's hashing policy if the upstream cluster uses a hashing :ref:`load balancer
* <arch_overview_load_balancing_types>`.
* [#next-free-field: 7]
*/
export interface _envoy_api_v2_route_RouteAction_HashPolicy__Output {
/**
* Header hash policy.
*/
'header'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Header__Output);
/**
* Cookie hash policy.
*/
'cookie'?: (_envoy_api_v2_route_RouteAction_HashPolicy_Cookie__Output);
/**
* Connection properties hash policy.
*/
'connection_properties'?: (_envoy_api_v2_route_RouteAction_HashPolicy_ConnectionProperties__Output);
/**
* Query parameter hash policy.
*/
'query_parameter'?: (_envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter__Output);
/**
* Filter state hash policy.
*/
'filter_state'?: (_envoy_api_v2_route_RouteAction_HashPolicy_FilterState__Output);
/**
* The flag that short-circuits the hash computing. This field provides a
* 'fallback' style of configuration: "if a terminal policy doesn't work,
* fallback to rest of the policy list", it saves time when the terminal
* policy works.
*
* If true, and there is already a hash computed, ignore rest of the
* list of hash polices.
* For example, if the following hash methods are configured:
*
* ========= ========
* specifier terminal
* ========= ========
* Header A true
* Header B false
* Header C false
* ========= ========
*
* The generateHash process ends if policy "header A" generates a hash, as
* it's a terminal policy.
*/
'terminal': (boolean);
'policy_specifier': "header"|"cookie"|"connection_properties"|"query_parameter"|"filter_state";
}
export interface _envoy_api_v2_route_RouteAction_HashPolicy_Header {
/**
* The name of the request header that will be used to obtain the hash
@ -249,6 +249,16 @@ export interface _envoy_api_v2_route_RouteAction_HashPolicy_Header__Output {
'header_name': (string);
}
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
/**
* Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior.
*/
export enum _envoy_api_v2_route_RouteAction_InternalRedirectAction {
PASS_THROUGH_INTERNAL_REDIRECT = 0,
HANDLE_INTERNAL_REDIRECT = 1,
}
export interface _envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter {
/**
* The name of the URL query parameter that will be used to obtain the hash
@ -267,16 +277,6 @@ export interface _envoy_api_v2_route_RouteAction_HashPolicy_QueryParameter__Outp
'name': (string);
}
// Original file: deps/envoy-api/envoy/api/v2/route/route_components.proto
/**
* Configures :ref:`internal redirect <arch_overview_internal_redirects>` behavior.
*/
export enum _envoy_api_v2_route_RouteAction_InternalRedirectAction {
PASS_THROUGH_INTERNAL_REDIRECT = 0,
HANDLE_INTERNAL_REDIRECT = 1,
}
/**
* The router is capable of shadowing traffic from one cluster to another. The current
* implementation is "fire and forget," meaning Envoy will not wait for the shadow cluster to

View File

@ -0,0 +1,52 @@
// Original file: deps/envoy-api/envoy/service/discovery/v2/ads.proto
import * as grpc from '../../../../../index'
import { DeltaDiscoveryRequest as _envoy_api_v2_DeltaDiscoveryRequest, DeltaDiscoveryRequest__Output as _envoy_api_v2_DeltaDiscoveryRequest__Output } from '../../../../envoy/api/v2/DeltaDiscoveryRequest';
import { DeltaDiscoveryResponse as _envoy_api_v2_DeltaDiscoveryResponse, DeltaDiscoveryResponse__Output as _envoy_api_v2_DeltaDiscoveryResponse__Output } from '../../../../envoy/api/v2/DeltaDiscoveryResponse';
import { DiscoveryRequest as _envoy_api_v2_DiscoveryRequest, DiscoveryRequest__Output as _envoy_api_v2_DiscoveryRequest__Output } from '../../../../envoy/api/v2/DiscoveryRequest';
import { DiscoveryResponse as _envoy_api_v2_DiscoveryResponse, DiscoveryResponse__Output as _envoy_api_v2_DiscoveryResponse__Output } from '../../../../envoy/api/v2/DiscoveryResponse';
/**
* See https://github.com/lyft/envoy-api#apis for a description of the role of
* ADS and how it is intended to be used by a management server. ADS requests
* have the same structure as their singleton xDS counterparts, but can
* multiplex many resource types on a single stream. The type_url in the
* DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
* the multiplexed singleton APIs at the Envoy instance and management server.
*/
export interface AggregatedDiscoveryServiceClient extends grpc.Client {
DeltaAggregatedResources(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DeltaDiscoveryRequest, _envoy_api_v2_DeltaDiscoveryResponse__Output>;
DeltaAggregatedResources(options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DeltaDiscoveryRequest, _envoy_api_v2_DeltaDiscoveryResponse__Output>;
deltaAggregatedResources(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DeltaDiscoveryRequest, _envoy_api_v2_DeltaDiscoveryResponse__Output>;
deltaAggregatedResources(options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DeltaDiscoveryRequest, _envoy_api_v2_DeltaDiscoveryResponse__Output>;
/**
* This is a gRPC-only API.
*/
StreamAggregatedResources(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DiscoveryRequest, _envoy_api_v2_DiscoveryResponse__Output>;
StreamAggregatedResources(options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DiscoveryRequest, _envoy_api_v2_DiscoveryResponse__Output>;
/**
* This is a gRPC-only API.
*/
streamAggregatedResources(metadata: grpc.Metadata, options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DiscoveryRequest, _envoy_api_v2_DiscoveryResponse__Output>;
streamAggregatedResources(options?: grpc.CallOptions): grpc.ClientDuplexStream<_envoy_api_v2_DiscoveryRequest, _envoy_api_v2_DiscoveryResponse__Output>;
}
/**
* See https://github.com/lyft/envoy-api#apis for a description of the role of
* ADS and how it is intended to be used by a management server. ADS requests
* have the same structure as their singleton xDS counterparts, but can
* multiplex many resource types on a single stream. The type_url in the
* DiscoveryRequest/DiscoveryResponse provides sufficient information to recover
* the multiplexed singleton APIs at the Envoy instance and management server.
*/
export interface AggregatedDiscoveryServiceHandlers {
DeltaAggregatedResources(call: grpc.ServerDuplexStream<_envoy_api_v2_DeltaDiscoveryRequest, _envoy_api_v2_DeltaDiscoveryResponse__Output>): void;
/**
* This is a gRPC-only API.
*/
StreamAggregatedResources(call: grpc.ServerDuplexStream<_envoy_api_v2_DiscoveryRequest, _envoy_api_v2_DiscoveryResponse__Output>): void;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -16,7 +16,9 @@
*/
import * as fs from 'fs';
import * as adsTypes from './generated/ads';
import { Struct } from './generated/google/protobuf/Struct';
import { Node } from './generated/envoy/api/v2/core/Node';
import { Value } from './generated/google/protobuf/Value';
/* eslint-disable @typescript-eslint/no-explicit-any */
@ -32,7 +34,7 @@ export interface XdsServerConfig {
export interface BootstrapInfo {
xdsServers: XdsServerConfig[];
node: adsTypes.messages.envoy.api.v2.core.Node;
node: Node;
}
function validateChannelCredsConfig(obj: any): ChannelCredsConfig {
@ -85,7 +87,7 @@ function validateXdsServerConfig(obj: any): XdsServerConfig {
};
}
function validateValue(obj: any): adsTypes.messages.google.protobuf.Value {
function validateValue(obj: any): Value {
if (Array.isArray(obj)) {
return {
kind: 'listValue',
@ -128,7 +130,7 @@ function validateValue(obj: any): adsTypes.messages.google.protobuf.Value {
}
}
function getStructFromJson(obj: any): adsTypes.messages.google.protobuf.Struct {
function getStructFromJson(obj: any): Struct {
if (typeof obj !== 'object' || obj === null) {
throw new Error('Invalid JSON object for Struct field');
}
@ -154,8 +156,8 @@ function getStructFromJson(obj: any): adsTypes.messages.google.protobuf.Struct {
* fields we expect to see: id, cluster, locality, and metadata.
* @param obj
*/
function validateNode(obj: any): adsTypes.messages.envoy.api.v2.core.Node {
const result: adsTypes.messages.envoy.api.v2.core.Node = {};
function validateNode(obj: any): Node {
const result: Node = {};
if (!('id' in obj)) {
throw new Error('id field missing in node element');
}

View File

@ -18,7 +18,6 @@
import * as protoLoader from '@grpc/proto-loader';
import { loadPackageDefinition } from './make-client';
import * as adsTypes from './generated/ads';
import * as edsTypes from './generated/endpoint';
import { createGoogleDefaultCredentials } from './channel-credentials';
import { loadBootstrapInfo } from './xds-bootstrap';
import { ClientDuplexStream, ServiceError } from './call';
@ -29,6 +28,11 @@ import { Metadata } from './metadata';
import * as logging from './logging';
import { ServiceConfig } from './service-config';
import { ChannelOptions } from './channel-options';
import { Node } from './generated/envoy/api/v2/core/Node';
import { AggregatedDiscoveryServiceClient } from './generated/envoy/service/discovery/v2/AggregatedDiscoveryService';
import { DiscoveryRequest } from './generated/envoy/api/v2/DiscoveryRequest';
import { DiscoveryResponse__Output } from './generated/envoy/api/v2/DiscoveryResponse';
import { ClusterLoadAssignment__Output } from './generated/envoy/api/v2/ClusterLoadAssignment';
const TRACER_NAME = 'xds_client';
@ -86,21 +90,21 @@ export interface Watcher<UpdateType> {
}
export class XdsClient {
private node: adsTypes.messages.envoy.api.v2.core.Node | null = null;
private client: adsTypes.ClientInterfaces.envoy.service.discovery.v2.AggregatedDiscoveryServiceClient | null = null;
private node: Node | null = null;
private client: AggregatedDiscoveryServiceClient | null = null;
private adsCall: ClientDuplexStream<
adsTypes.messages.envoy.api.v2.DiscoveryRequest,
adsTypes.messages.envoy.api.v2.DiscoveryResponse__Output
DiscoveryRequest,
DiscoveryResponse__Output
> | null = null;
private hasShutdown = false;
private endpointWatchers: Map<
string,
Watcher<edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output>[]
Watcher<ClusterLoadAssignment__Output>[]
> = new Map<
string,
Watcher<edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output>[]
Watcher<ClusterLoadAssignment__Output>[]
>();
private lastEdsVersionInfo = '';
private lastEdsNonce = '';
@ -175,17 +179,17 @@ export class XdsClient {
this.adsCall = this.client.StreamAggregatedResources();
this.adsCall.on(
'data',
(message: adsTypes.messages.envoy.api.v2.DiscoveryResponse__Output) => {
(message: DiscoveryResponse__Output) => {
switch (message.type_url) {
case EDS_TYPE_URL: {
const edsResponses: edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output[] = [];
const edsResponses: ClusterLoadAssignment__Output[] = [];
for (const resource of message.resources) {
if (
protoLoader.isAnyExtension(resource) &&
resource['@type'] === EDS_TYPE_URL
) {
const resp = resource as protoLoader.AnyExtension &
edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output;
ClusterLoadAssignment__Output;
if (!this.validateEdsResponse(resp)) {
this.nackEds('ClusterLoadAssignment validation failed');
return;
@ -298,7 +302,7 @@ export class XdsClient {
* @param message
*/
private validateEdsResponse(
message: edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output
message: ClusterLoadAssignment__Output
): boolean {
for (const endpoint of message.endpoints) {
for (const lb of endpoint.lb_endpoints) {
@ -318,7 +322,7 @@ export class XdsClient {
}
private handleEdsResponse(
message: edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output
message: ClusterLoadAssignment__Output
) {
const watchers = this.endpointWatchers.get(message.cluster_name) ?? [];
for (const watcher of watchers) {
@ -350,7 +354,7 @@ export class XdsClient {
addEndpointWatcher(
edsServiceName: string,
watcher: Watcher<
edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output
ClusterLoadAssignment__Output
>
) {
trace('Watcher added for endpoint ' + edsServiceName);
@ -370,7 +374,7 @@ export class XdsClient {
removeEndpointWatcher(
edsServiceName: string,
watcher: Watcher<
edsTypes.messages.envoy.api.v2.ClusterLoadAssignment__Output
ClusterLoadAssignment__Output
>
) {
trace('Watcher removed for endpoint ' + edsServiceName);