@ -102,33 +102,32 @@ message DiscoveryResponse {
core.ControlPlane control_plane = 6 ;
}
/ / IncrementalDiscoveryRequest and IncrementalDiscoveryResponse are used in a
/ / new gRPC endpoint for Incremental xDS. The feature is not supported for REST
/ / management servers.
/ / DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC
/ / endpoint for Delta xDS.
/ /
/ / With Incremental xDS , the Incremental DiscoveryResponses do not need to
/ / include a full snapshot of the tracked resources. Instead
/ / IncrementalDiscoveryResponses are a diff to the state of a xDS client.
/ / In Incremental XDS there are per resource versions which allows to track
/ / state at the resource granularity.
/ / An xDS Incremental session is always in the context of a gRPC bidirectional
/ / With Delta xDS , the Delta DiscoveryResponses do not need to include a full
/ / snapshot of the tracked resources. Instead , DeltaDiscoveryResponses are a
/ / diff to the state of a xDS client.
/ / In Delta XDS there are per resource versions , which allow tracking state at
/ / the resource granularity.
/ / An xDS Delta session is always in the context of a gRPC bidirectional
/ / stream. This allows the xDS server to keep track of the state of xDS clients
/ / connected to it.
/ /
/ / In Incremental xDS the nonce field is required and used to pair
/ / IncrementalDiscoveryResponse to a Incremental DiscoveryRequest ACK or NACK.
/ / In Delta xDS the nonce field is required and used to pair
/ / DeltaDiscoveryResponse to a Delta DiscoveryRequest ACK or NACK.
/ / Optionally , a response message level system_version_info is present for
/ / debugging purposes only.
/ /
/ / Incremental DiscoveryRequest can be sent in 3 situations :
/ / Delta DiscoveryRequest can be sent in 3 situations :
/ / 1. Initial message in a xDS bidirectional gRPC stream.
/ / 2. As a ACK or NACK response to a previous Incremental DiscoveryResponse.
/ / 2. As a ACK or NACK response to a previous Delta DiscoveryResponse.
/ / In this case the response_nonce is set to the nonce value in the Response.
/ / ACK or NACK is determined by the absence or presence of error_detail.
/ / 3. Spontaneous Incremental DiscoveryRequest from the client.
/ / 3. Spontaneous Delta DiscoveryRequest from the client.
/ / This can be done to dynamically add or remove elements from the tracked
/ / resource_names set. In this case response_nonce must be omitted.
message Incremental DiscoveryRequest {
message Delta DiscoveryRequest {
/ / The node making the request.
core.Node node = 1 ;
@ -138,18 +137,18 @@ message IncrementalDiscoveryRequest {
/ / required for ADS.
string type_url = 2 ;
/ / Incremental DiscoveryRequests allow the client to add or remove individual
/ / Delta DiscoveryRequests allow the client to add or remove individual
/ / resources to the set of tracked resources in the context of a stream.
/ / All resource names in the resource_names_subscribe list are added to the
/ / set of tracked resources and all resource names in the resource_names_unsubscribe
/ / list are removed from the set of tracked resources.
/ / Unlike in non incremental xDS , an empty resource_names_subscribe or
/ / Unlike in state - of - the - world xDS , an empty resource_names_subscribe or
/ / resource_names_unsubscribe list simply means that no resources are to be
/ / added or removed to the resource list.
/ / The xDS server must send updates for all tracked resources but can also
/ / send updates for resources the client has not subscribed to . This behavior
/ / is similar to non incremental xDS.
/ / These two fields can be set for all types of Incremental DiscoveryRequests
/ / is similar to state - of - the - world xDS.
/ / These two fields can be set for all types of Delta DiscoveryRequests
/ / ( initial , ACK / NACK or spontaneous ) .
/ /
/ / A list of Resource names to add to the list of tracked resources.
@ -158,15 +157,17 @@ message IncrementalDiscoveryRequest {
/ / A list of Resource names to remove from the list of tracked resources.
repeated string resource_names_unsubscribe = 4 ;
/ / This map must be populated when the IncrementalDiscoveryRequest is the
/ / first in a stream. The keys are the resources names of the xDS resources
/ / This map must be populated when the DeltaDiscoveryRequest is the
/ / first in a stream ( assuming there are any resources - this field ' s purpose is to enable
/ / a session to continue in a reconnected gRPC stream , and so will not be used in the very
/ / first stream of a session ) . The keys are the resources names of the xDS resources
/ / known to the xDS client. The values in the map are the associated resource
/ / level version info.
map < string , string > initial_resource_versions = 5 ;
/ / When the Incremental DiscoveryRequest is a ACK or NACK message in response
/ / to a previous Incremental DiscoveryResponse, the response_nonce must be the
/ / nonce in the Incremental DiscoveryResponse.
/ / When the Delta DiscoveryRequest is a ACK or NACK message in response
/ / to a previous Delta DiscoveryResponse, the response_nonce must be the
/ / nonce in the Delta DiscoveryResponse.
/ / Otherwise response_nonce must be omitted.
string response_nonce = 6 ;
@ -176,24 +177,27 @@ message IncrementalDiscoveryRequest {
google.rpc.Status error_detail = 7 ;
}
message Incremental DiscoveryResponse {
message Delta DiscoveryResponse {
/ / The version of the response data ( used for debugging ) .
string system_version_info = 1 ;
/ / The response resources. These are typed resources that match the type url
/ / in the Incremental DiscoveryRequest.
/ / in the Delta DiscoveryRequest.
repeated Resource resources = 2 [ ( gogoproto.nullable ) = false ] ;
/ / Resources names of resources that have be deleted and to be removed from the xDS Client.
/ / Removed resources for missing resources can be ignored.
repeated string removed_resources = 6 ;
/ / The nonce provides a way for Incremental DiscoveryRequests to uniquely
/ / reference a Incremental DiscoveryResponse. The nonce is required .
/ / The nonce provides a way for Delta DiscoveryRequests to uniquely
/ / reference a Delta DiscoveryResponse. The nonce is required .
string nonce = 5 ;
}
message Resource {
/ / The resource ' s name , to distinguish it from others of the same type of resource.
string name = 3 ;
/ / The resource level version. It allows xDS to track the state of individual
/ / resources.
string version = 1 ;