Class DeltaDiscoveryRequest

  • All Implemented Interfaces:
    com.google.protobuf.Message, com.google.protobuf.MessageLite, com.google.protobuf.MessageLiteOrBuilder, com.google.protobuf.MessageOrBuilder, DeltaDiscoveryRequestOrBuilder, Serializable

    public final class DeltaDiscoveryRequest
    extends com.google.protobuf.GeneratedMessageV3
    implements DeltaDiscoveryRequestOrBuilder
     DeltaDiscoveryRequest and DeltaDiscoveryResponse are used in a new gRPC
     endpoint for Delta xDS.
     With Delta xDS, the DeltaDiscoveryResponses 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 Delta xDS the nonce field is required and used to pair
     DeltaDiscoveryResponse to a DeltaDiscoveryRequest ACK or NACK.
     Optionally, a response message level system_version_info is present for
     debugging purposes only.
     DeltaDiscoveryRequest plays two independent roles. Any DeltaDiscoveryRequest
     can be either or both of: [1] informing the server of what resources the
     client has gained/lost interest in (using resource_names_subscribe and
     resource_names_unsubscribe), or [2] (N)ACKing an earlier resource update from
     the server (using response_nonce, with presence of error_detail making it a NACK).
     Additionally, the first message (for a given type_url) of a reconnected gRPC stream
     has a third role: informing the server of the resources (and their versions)
     that the client already possesses, using the initial_resource_versions field.
     As with state-of-the-world, when multiple resource types are multiplexed (ADS),
     all requests/acknowledgments/updates are logically walled off by type_url:
     a Cluster ACK exists in a completely separate world from a prior Route NACK.
     In particular, initial_resource_versions being sent at the "start" of every
     gRPC stream actually entails a message for each type_url, each with its own
     initial_resource_versions.
     [#next-free-field: 8]
     
    Protobuf type envoy.api.v2.DeltaDiscoveryRequest
    See Also:
    Serialized Form
    • Field Detail

      • RESOURCE_NAMES_SUBSCRIBE_FIELD_NUMBER

        public static final int RESOURCE_NAMES_SUBSCRIBE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • RESOURCE_NAMES_UNSUBSCRIBE_FIELD_NUMBER

        public static final int RESOURCE_NAMES_UNSUBSCRIBE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • INITIAL_RESOURCE_VERSIONS_FIELD_NUMBER

        public static final int INITIAL_RESOURCE_VERSIONS_FIELD_NUMBER
        See Also:
        Constant Field Values
      • RESPONSE_NONCE_FIELD_NUMBER

        public static final int RESPONSE_NONCE_FIELD_NUMBER
        See Also:
        Constant Field Values
      • ERROR_DETAIL_FIELD_NUMBER

        public static final int ERROR_DETAIL_FIELD_NUMBER
        See Also:
        Constant Field Values
    • Method Detail

      • newInstance

        protected Object newInstance​(com.google.protobuf.GeneratedMessageV3.UnusedPrivateParameter unused)
        Overrides:
        newInstance in class com.google.protobuf.GeneratedMessageV3
      • getUnknownFields

        public final com.google.protobuf.UnknownFieldSet getUnknownFields()
        Specified by:
        getUnknownFields in interface com.google.protobuf.MessageOrBuilder
        Overrides:
        getUnknownFields in class com.google.protobuf.GeneratedMessageV3
      • getDescriptor

        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor()
      • internalGetMapField

        protected com.google.protobuf.MapField internalGetMapField​(int number)
        Overrides:
        internalGetMapField in class com.google.protobuf.GeneratedMessageV3
      • internalGetFieldAccessorTable

        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable()
        Specified by:
        internalGetFieldAccessorTable in class com.google.protobuf.GeneratedMessageV3
      • hasNode

        public boolean hasNode()
         The node making the request.
         
        .envoy.api.v2.core.Node node = 1;
        Specified by:
        hasNode in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        Whether the node field is set.
      • getTypeUrl

        public String getTypeUrl()
         Type of the resource that is being requested, e.g.
         "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment".
         
        string type_url = 2;
        Specified by:
        getTypeUrl in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The typeUrl.
      • getTypeUrlBytes

        public com.google.protobuf.ByteString getTypeUrlBytes()
         Type of the resource that is being requested, e.g.
         "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment".
         
        string type_url = 2;
        Specified by:
        getTypeUrlBytes in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The bytes for typeUrl.
      • getResourceNamesSubscribeList

        public com.google.protobuf.ProtocolStringList getResourceNamesSubscribeList()
         DeltaDiscoveryRequests 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* 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.
         *Like* state-of-the-world xDS, the server must send updates for all tracked
         resources, but can also send updates for resources the client has not subscribed to.
         NOTE: the server must respond with all resources listed in resource_names_subscribe,
         even if it believes the client has the most recent version of them. The reason:
         the client may have dropped them, but then regained interest before it had a chance
         to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
         These two fields can be set in any DeltaDiscoveryRequest, including ACKs
         and initial_resource_versions.
         A list of Resource names to add to the list of tracked resources.
         
        repeated string resource_names_subscribe = 3;
        Specified by:
        getResourceNamesSubscribeList in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        A list containing the resourceNamesSubscribe.
      • getResourceNamesSubscribeCount

        public int getResourceNamesSubscribeCount()
         DeltaDiscoveryRequests 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* 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.
         *Like* state-of-the-world xDS, the server must send updates for all tracked
         resources, but can also send updates for resources the client has not subscribed to.
         NOTE: the server must respond with all resources listed in resource_names_subscribe,
         even if it believes the client has the most recent version of them. The reason:
         the client may have dropped them, but then regained interest before it had a chance
         to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
         These two fields can be set in any DeltaDiscoveryRequest, including ACKs
         and initial_resource_versions.
         A list of Resource names to add to the list of tracked resources.
         
        repeated string resource_names_subscribe = 3;
        Specified by:
        getResourceNamesSubscribeCount in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The count of resourceNamesSubscribe.
      • getResourceNamesSubscribe

        public String getResourceNamesSubscribe​(int index)
         DeltaDiscoveryRequests 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* 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.
         *Like* state-of-the-world xDS, the server must send updates for all tracked
         resources, but can also send updates for resources the client has not subscribed to.
         NOTE: the server must respond with all resources listed in resource_names_subscribe,
         even if it believes the client has the most recent version of them. The reason:
         the client may have dropped them, but then regained interest before it had a chance
         to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
         These two fields can be set in any DeltaDiscoveryRequest, including ACKs
         and initial_resource_versions.
         A list of Resource names to add to the list of tracked resources.
         
        repeated string resource_names_subscribe = 3;
        Specified by:
        getResourceNamesSubscribe in interface DeltaDiscoveryRequestOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The resourceNamesSubscribe at the given index.
      • getResourceNamesSubscribeBytes

        public com.google.protobuf.ByteString getResourceNamesSubscribeBytes​(int index)
         DeltaDiscoveryRequests 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* 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.
         *Like* state-of-the-world xDS, the server must send updates for all tracked
         resources, but can also send updates for resources the client has not subscribed to.
         NOTE: the server must respond with all resources listed in resource_names_subscribe,
         even if it believes the client has the most recent version of them. The reason:
         the client may have dropped them, but then regained interest before it had a chance
         to send the unsubscribe message. See DeltaSubscriptionStateTest.RemoveThenAdd.
         These two fields can be set in any DeltaDiscoveryRequest, including ACKs
         and initial_resource_versions.
         A list of Resource names to add to the list of tracked resources.
         
        repeated string resource_names_subscribe = 3;
        Specified by:
        getResourceNamesSubscribeBytes in interface DeltaDiscoveryRequestOrBuilder
        Parameters:
        index - The index of the value to return.
        Returns:
        The bytes of the resourceNamesSubscribe at the given index.
      • getResourceNamesUnsubscribeList

        public com.google.protobuf.ProtocolStringList getResourceNamesUnsubscribeList()
         A list of Resource names to remove from the list of tracked resources.
         
        repeated string resource_names_unsubscribe = 4;
        Specified by:
        getResourceNamesUnsubscribeList in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        A list containing the resourceNamesUnsubscribe.
      • getResourceNamesUnsubscribeCount

        public int getResourceNamesUnsubscribeCount()
         A list of Resource names to remove from the list of tracked resources.
         
        repeated string resource_names_unsubscribe = 4;
        Specified by:
        getResourceNamesUnsubscribeCount in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The count of resourceNamesUnsubscribe.
      • getResourceNamesUnsubscribe

        public String getResourceNamesUnsubscribe​(int index)
         A list of Resource names to remove from the list of tracked resources.
         
        repeated string resource_names_unsubscribe = 4;
        Specified by:
        getResourceNamesUnsubscribe in interface DeltaDiscoveryRequestOrBuilder
        Parameters:
        index - The index of the element to return.
        Returns:
        The resourceNamesUnsubscribe at the given index.
      • getResourceNamesUnsubscribeBytes

        public com.google.protobuf.ByteString getResourceNamesUnsubscribeBytes​(int index)
         A list of Resource names to remove from the list of tracked resources.
         
        repeated string resource_names_unsubscribe = 4;
        Specified by:
        getResourceNamesUnsubscribeBytes in interface DeltaDiscoveryRequestOrBuilder
        Parameters:
        index - The index of the value to return.
        Returns:
        The bytes of the resourceNamesUnsubscribe at the given index.
      • getInitialResourceVersionsCount

        public int getInitialResourceVersionsCount()
        Description copied from interface: DeltaDiscoveryRequestOrBuilder
         Informs the server of the versions of the resources the xDS client knows of, to enable the
         client to continue the same logical xDS session even in the face of gRPC stream reconnection.
         It will not be populated: [1] in the very first stream of a session, since the client will
         not yet have any resources,  [2] in any message after the first in a stream (for a given
         type_url), since the server will already be correctly tracking the client's state.
         (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
         The map's keys are names of xDS resources known to the xDS client.
         The map's values are opaque resource versions.
         
        map<string, string> initial_resource_versions = 5;
        Specified by:
        getInitialResourceVersionsCount in interface DeltaDiscoveryRequestOrBuilder
      • containsInitialResourceVersions

        public boolean containsInitialResourceVersions​(String key)
         Informs the server of the versions of the resources the xDS client knows of, to enable the
         client to continue the same logical xDS session even in the face of gRPC stream reconnection.
         It will not be populated: [1] in the very first stream of a session, since the client will
         not yet have any resources,  [2] in any message after the first in a stream (for a given
         type_url), since the server will already be correctly tracking the client's state.
         (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
         The map's keys are names of xDS resources known to the xDS client.
         The map's values are opaque resource versions.
         
        map<string, string> initial_resource_versions = 5;
        Specified by:
        containsInitialResourceVersions in interface DeltaDiscoveryRequestOrBuilder
      • getInitialResourceVersionsMap

        public Map<String,​String> getInitialResourceVersionsMap()
         Informs the server of the versions of the resources the xDS client knows of, to enable the
         client to continue the same logical xDS session even in the face of gRPC stream reconnection.
         It will not be populated: [1] in the very first stream of a session, since the client will
         not yet have any resources,  [2] in any message after the first in a stream (for a given
         type_url), since the server will already be correctly tracking the client's state.
         (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
         The map's keys are names of xDS resources known to the xDS client.
         The map's values are opaque resource versions.
         
        map<string, string> initial_resource_versions = 5;
        Specified by:
        getInitialResourceVersionsMap in interface DeltaDiscoveryRequestOrBuilder
      • getInitialResourceVersionsOrDefault

        public String getInitialResourceVersionsOrDefault​(String key,
                                                          String defaultValue)
         Informs the server of the versions of the resources the xDS client knows of, to enable the
         client to continue the same logical xDS session even in the face of gRPC stream reconnection.
         It will not be populated: [1] in the very first stream of a session, since the client will
         not yet have any resources,  [2] in any message after the first in a stream (for a given
         type_url), since the server will already be correctly tracking the client's state.
         (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
         The map's keys are names of xDS resources known to the xDS client.
         The map's values are opaque resource versions.
         
        map<string, string> initial_resource_versions = 5;
        Specified by:
        getInitialResourceVersionsOrDefault in interface DeltaDiscoveryRequestOrBuilder
      • getInitialResourceVersionsOrThrow

        public String getInitialResourceVersionsOrThrow​(String key)
         Informs the server of the versions of the resources the xDS client knows of, to enable the
         client to continue the same logical xDS session even in the face of gRPC stream reconnection.
         It will not be populated: [1] in the very first stream of a session, since the client will
         not yet have any resources,  [2] in any message after the first in a stream (for a given
         type_url), since the server will already be correctly tracking the client's state.
         (In ADS, the first message *of each type_url* of a reconnected stream populates this map.)
         The map's keys are names of xDS resources known to the xDS client.
         The map's values are opaque resource versions.
         
        map<string, string> initial_resource_versions = 5;
        Specified by:
        getInitialResourceVersionsOrThrow in interface DeltaDiscoveryRequestOrBuilder
      • getResponseNonce

        public String getResponseNonce()
         When the DeltaDiscoveryRequest is a ACK or NACK message in response
         to a previous DeltaDiscoveryResponse, the response_nonce must be the
         nonce in the DeltaDiscoveryResponse.
         Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted.
         
        string response_nonce = 6;
        Specified by:
        getResponseNonce in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The responseNonce.
      • getResponseNonceBytes

        public com.google.protobuf.ByteString getResponseNonceBytes()
         When the DeltaDiscoveryRequest is a ACK or NACK message in response
         to a previous DeltaDiscoveryResponse, the response_nonce must be the
         nonce in the DeltaDiscoveryResponse.
         Otherwise (unlike in DiscoveryRequest) response_nonce must be omitted.
         
        string response_nonce = 6;
        Specified by:
        getResponseNonceBytes in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The bytes for responseNonce.
      • hasErrorDetail

        public boolean hasErrorDetail()
         This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
         failed to update configuration. The *message* field in *error_details*
         provides the Envoy internal exception related to the failure.
         
        .google.rpc.Status error_detail = 7;
        Specified by:
        hasErrorDetail in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        Whether the errorDetail field is set.
      • getErrorDetail

        public Status getErrorDetail()
         This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
         failed to update configuration. The *message* field in *error_details*
         provides the Envoy internal exception related to the failure.
         
        .google.rpc.Status error_detail = 7;
        Specified by:
        getErrorDetail in interface DeltaDiscoveryRequestOrBuilder
        Returns:
        The errorDetail.
      • getErrorDetailOrBuilder

        public StatusOrBuilder getErrorDetailOrBuilder()
         This is populated when the previous :ref:`DiscoveryResponse <envoy_api_msg_DiscoveryResponse>`
         failed to update configuration. The *message* field in *error_details*
         provides the Envoy internal exception related to the failure.
         
        .google.rpc.Status error_detail = 7;
        Specified by:
        getErrorDetailOrBuilder in interface DeltaDiscoveryRequestOrBuilder
      • isInitialized

        public final boolean isInitialized()
        Specified by:
        isInitialized in interface com.google.protobuf.MessageLiteOrBuilder
        Overrides:
        isInitialized in class com.google.protobuf.GeneratedMessageV3
      • writeTo

        public void writeTo​(com.google.protobuf.CodedOutputStream output)
                     throws IOException
        Specified by:
        writeTo in interface com.google.protobuf.MessageLite
        Overrides:
        writeTo in class com.google.protobuf.GeneratedMessageV3
        Throws:
        IOException
      • getSerializedSize

        public int getSerializedSize()
        Specified by:
        getSerializedSize in interface com.google.protobuf.MessageLite
        Overrides:
        getSerializedSize in class com.google.protobuf.GeneratedMessageV3
      • equals

        public boolean equals​(Object obj)
        Specified by:
        equals in interface com.google.protobuf.Message
        Overrides:
        equals in class com.google.protobuf.AbstractMessage
      • hashCode

        public int hashCode()
        Specified by:
        hashCode in interface com.google.protobuf.Message
        Overrides:
        hashCode in class com.google.protobuf.AbstractMessage
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(ByteBuffer data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(ByteBuffer data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(com.google.protobuf.ByteString data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(com.google.protobuf.ByteString data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(byte[] data)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • parseFrom

        public static DeltaDiscoveryRequest parseFrom​(byte[] data,
                                                      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
                                               throws com.google.protobuf.InvalidProtocolBufferException
        Throws:
        com.google.protobuf.InvalidProtocolBufferException
      • newBuilderForType

        public DeltaDiscoveryRequest.Builder newBuilderForType()
        Specified by:
        newBuilderForType in interface com.google.protobuf.Message
        Specified by:
        newBuilderForType in interface com.google.protobuf.MessageLite
      • toBuilder

        public DeltaDiscoveryRequest.Builder toBuilder()
        Specified by:
        toBuilder in interface com.google.protobuf.Message
        Specified by:
        toBuilder in interface com.google.protobuf.MessageLite
      • newBuilderForType

        protected DeltaDiscoveryRequest.Builder newBuilderForType​(com.google.protobuf.GeneratedMessageV3.BuilderParent parent)
        Specified by:
        newBuilderForType in class com.google.protobuf.GeneratedMessageV3
      • getParserForType

        public com.google.protobuf.Parser<DeltaDiscoveryRequest> getParserForType()
        Specified by:
        getParserForType in interface com.google.protobuf.Message
        Specified by:
        getParserForType in interface com.google.protobuf.MessageLite
        Overrides:
        getParserForType in class com.google.protobuf.GeneratedMessageV3
      • getDefaultInstanceForType

        public DeltaDiscoveryRequest getDefaultInstanceForType()
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageLiteOrBuilder
        Specified by:
        getDefaultInstanceForType in interface com.google.protobuf.MessageOrBuilder