Commit Graph

312 Commits

Author SHA1 Message Date
sanjaypujare 8fb6591850
xds: disable processing of UpstreamTlsContext until we are ready to test the feature (#7148) 2020-06-22 14:33:41 -07:00
sanjaypujare 69191ffc47
xds: refactor to use BaseTlsContext and remove *Holder classes (#7147) 2020-06-22 09:57:46 -07:00
Chengyuan Zhang 43cf77de83
xds: implement routing policy with all supported types of matcher (#7130)
Implement xds_routing LB policy with all kinds of matchers (path, header, runtime faction) supported.
2020-06-19 16:55:49 -07:00
sanjaypujare ae7a482d9a
xds: replace UpstreamTlsContext with internal definition (#7145) 2020-06-19 16:41:21 -07:00
Chengyuan Zhang 3facda0130
xds: avoid pushing duplicate (CDS) resource data to watchers (#7143)
De-duplicate cluster update information pushed to cluster watchers.

This only applies to CDS as the management server sends a response with all requested clusters while only some of. them have changed (or newly been subscribed).

This does not apply to EDS as the protocol is incremental and each EDS response will only contain ClusterLoadAssignments for clusters whose endpoints have changed.

This does not apply to LDS and RDS as at any time we will subscribe to a single resource and our TD implementation will not send extra (unrequested) resources. So each time, the received responses always contain updated resource information.
2020-06-19 12:22:22 -07:00
sanjaypujare 57ae04007d
xds: use fallback PN if you get exception while retrieving SslContextProvider (#7137) 2020-06-18 10:08:39 -07:00
sanjaypujare e76e7c23a8
xds: replace Envoy's DownstreamTlsContext with internally defined DownstreamTlsContext (#7131) 2020-06-17 16:46:33 -07:00
ZHANG Dapeng 81138c51ad
xds: address filtering 2020-06-17 14:37:33 -07:00
cindyxue 40b815058f
xds: fix build.gradle for shadowing googleapis (#7121) 2020-06-12 17:10:13 -07:00
sanjaypujare 4077414e23
xds: update envoy and udpa to later versions to get agentless changes (#7122) 2020-06-12 09:44:40 -07:00
cindyxue 7f3a602255
xds: import rbac.proto from Envoy's repository (#7109) 2020-06-11 16:14:14 -07:00
Chengyuan Zhang 9cf4d02ce3 Propagate original error causing XdsClient stream closure to the Channel 2020-06-10 19:24:56 +00:00
Chengyuan Zhang c777e08563
xds: retain locality stats counter when the child balancer for that locality is deactivated (#7096)
Create the counter for recording per locality stats upon creating the child balancer for that locality. When the locality is deactivated (due to EDS response update removes it), the counter is not deleted from the LoadStatsStore. Delete it when the child balancer for that locality is shut down. In this way, the lifecycle of the load stats counter for a certain locality stays same with the child balancer for that locality. This is exactly what will happen after we refactor LocalityStore to PriorityLoadBalancer and LrsLoadBalancer (i.e., when some priority is deactivated, its subtree is not deleted immediately, so the LrsLoadBalancer instances for localities still hold the load stats counters).
2020-06-05 18:02:15 -07:00
sanjaypujare 2740901673
xds: add xDS v3 protos in preparation for agentless security (#7091) 2020-06-04 10:03:33 -07:00
Chengyuan Zhang c551fe3807
xds: implement xds_routing policy config generation and parsing (#7055)
Implemented service config generation in the xDS resolver with xds_routing that supports all matchers. Reimplemented xds_routing config parsing with all matchers. Existing implementation for xds_routing LB policy is mostly deleted for now, as we would need to reimplement the route matching logic with matchers added.
2020-06-04 02:03:49 -07:00
Elliotte Rusty Harold 417d7700dd
deps: Update guava to 29.0 (#7079) 2020-06-03 13:48:02 -07:00
Chengyuan Zhang 26cf60d8c7
xds: no longer use existing Subchannels after xDS resource becomes unavailable (#7081)
Put Channel into TRANSIENT_FAILURE when CDS/EDS resource that is currently being watched becomes unavailable. CDS/EDS LB policies should shut down their downstream policy instances (stop using current Subchannels for new RPCs) and propagate TRANSIENT_FAILURE status to their parent policies (and may eventually to the Channel).
2020-06-02 18:51:39 -07:00
Chengyuan Zhang 40991af27c
xds: return an empty service config to Channel when the requested xDS resource does not exist (or removed) (#7077) 2020-06-01 10:24:48 -07:00
Chengyuan Zhang e5443068f6
xds: fix lint warnings (#7074) 2020-05-31 17:33:27 -07:00
ZHANG Dapeng 0cb91d97bf
xds: implement priority lb 2020-05-29 12:47:46 -07:00
sanjaypujare 62620ccd00
xds: replace generic with individual client and server SslContextProviders (#7059) 2020-05-27 12:31:54 -07:00
Chengyuan Zhang 9c4fece661
xds: remove path matcher format requirements and default route requirement for routing enabled (#7063)
Remove requirement for formats of path matchers. Only require the last route to be the default route for the case when routing is disabled.
2020-05-27 10:20:31 -07:00
Chengyuan Zhang a86fc47c04
xds: change route data validation logic (#7047)
Changed the logic of parsing Route to skip Routes with action that specifies cluster_header. Eliminate unnecessary validation logic in XdsClientImpl, of which is already covered in converters.
2020-05-18 16:23:25 -07:00
Chengyuan Zhang 02e3c00c39
xds: add more route matching types in converted Route data structure (#7031)
Parse other matcher types (e.g., header matchers, runtime fraction matchers, etc) that xDS Route supports.
2020-05-18 11:47:37 -07:00
sanjaypujare efa9cf6798
xds: provide fallback protocol negotiator (#7040) 2020-05-18 10:30:13 -07:00
ZHANG Dapeng f9353e09c5
xds: fix lint 2020-05-12 16:51:24 -07:00
ZHANG Dapeng 61938bd032
xds: rename experimental routing flag to GRPC_XDS_EXPERIMENTAL_ROUTING 2020-05-08 16:15:12 -07:00
sanjaypujare 67cc3172f1
xds: replace deprecated fields for Upstream and Downstream TlsContext (#7010) 2020-05-07 16:01:04 -07:00
Jihun Cho 29a872e173
xds: import fault injection xds proto (#7003) 2020-05-04 16:51:33 -07:00
ZHANG Dapeng 0044f8ce56
all: migrate gradle build to java-library plugin
- Use gradle configuration `api` for dependencies that are part of grpc public api signatures.
- Replace deprecated gradle configurations `compile`, `testCompile`, `runtime` and `testRuntime`.
- With minimal change in dependencies: If we need dep X and Y to compile our code, and if X transitively depends on Y, then our build would still pass even if we only include X as `compile`/`implementation` dependency for our project. Ideally we should include both X and Y explicitly as `implementation` dependency for our project, but in this PR we don't add the missing Y if it is previously missing.
2020-05-04 16:44:30 -07:00
sanjaypujare 1b792d1ccf
xds: create XdsServer wrapper for correct start and shutdown semantics (#6978) 2020-05-04 10:02:42 -07:00
Chengyuan Zhang c6251cf085
xds: add onResourceDoesNotExist API for resource watchers (#6988)
Use onResourceDoesNotExist() API for notifying resource not found. Previously, it uses onError(), which mixes with errors for other failures (e.g., transient TD network error). This lets us be able to make further improvement of LB policies/resolver's behavior w.r.t control plane changes (e.g., should immediately go into TRANSIENT_FAILURE if the config received from control plane leads to it).
2020-04-30 13:30:49 -07:00
ZHANG Dapeng 88bd7278ae
xds: reject case-insensitive route match 2020-04-22 17:10:30 -07:00
sanjaypujare a649737e3a
xds: implement requireClientCertificate semantics (#6948) 2020-04-20 17:04:38 -07:00
sanjaypujare 56a410f5ac
xds: add tests & misc fixes based on outstanding items (#6935) 2020-04-17 10:59:55 -07:00
Chengyuan Zhang 03db20cded
xds: eliminate special code path for EDS-only workflow (#6931)
Delete special logics (e.g., fallback) for EDS-only workflow and use the same format of lb config for running EDS-only workflow as running the full CDS-EDS workflow.
2020-04-17 10:42:47 -07:00
Ran 54d7e6ba65
xds: use checkArgument from Guava. (#6938) 2020-04-16 15:25:39 -07:00
ZHANG Dapeng 3bd141bf18
xds: allow duplicated route matcher and prefix='/' 2020-04-16 13:50:26 -07:00
Chengyuan Zhang 2478912d79
xds: use separate LB configs for EDS policy running with different code paths (#6895)
The LB configs used for EDS policy diverges for the full xDS flow (generated by CDS policy) and EDS-only flow (received in service config). This change creates a separate config (EdsConfig) for the actual EDS LB policy. CDS policy generates EdsConfig directly and the wrapper policy (i.e., XdsLoadBalancer) converts received XdsConfig to EdsConfig for EDS-only flow.
2020-04-15 13:12:01 -07:00
sanjaypujare 9618af90e5
xds: remove UpstreamTlsContext from XdsChannelBuilder (#6924) 2020-04-15 09:23:44 -07:00
sanjaypujare 2f07c83fed
xds: eliminate downstreamTlsContext from XdsServerBuilder (#6901)
* xds: eliminate downstreamTlsContext from XdsServerBuilder


Co-authored-by: Jihun Cho <jihuncho@google.com>
2020-04-13 17:37:26 -07:00
Chengyuan Zhang 833a3ff293
xds: handle EDS update with no localities (#6915)
Allow receiving empty LocalityLbEnpoints in EDS responses, it is LB policies' responsibility to go to TRANSIENT_FAILURE immediately when receiving an update with no locality.
2020-04-09 18:42:58 -07:00
Chengyuan Zhang 54f9e29cdb
xds: fix lint warnings (#6907) 2020-04-07 15:31:36 -07:00
sanjaypujare 829a7c5a29
xds: remove hardcoded port and unneeded test (#6908) 2020-04-07 15:00:35 -07:00
ZHANG Dapeng 5c31dc6d71
xds: migrating XdsNameResolver to "xds" scheme
Change "xds-experimenal" scheme to "xds" and add a deprecated provider with "xds-experimenal" scheme for keeping current users' tests working.
2020-04-07 11:52:41 -07:00
Chengyuan Zhang d88f0f19ec
xds: implement LRS LB policy (#6858)
Part of xDS LB policy refactoring work. Implement the LRS LB policy for "balancing" endpoints within a certain locality.
2020-04-07 11:44:36 -07:00
ZHANG Dapeng 24e3d9587e
xds: generate xds-routing config from XdsNameResolver 2020-04-04 10:48:43 -07:00
sanjaypujare e68b1d2ed6
xds: ensure we shutdown XdsClientImpl when XDS Server is shut down (#6890) 2020-04-03 10:08:00 -07:00
ZHANG Dapeng 1086ee89c1
grpclb,xds: fix code lint 2020-04-02 18:18:32 -07:00
sanjaypujare 7555a400db
xds: set listeningAddresses in Node and metadata as per the new interface (#6880) 2020-04-02 14:29:36 -07:00