summaryrefslogtreecommitdiff
path: root/src/rpc/envoy.service.discovery.v3.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/rpc/envoy.service.discovery.v3.rs')
-rw-r--r--src/rpc/envoy.service.discovery.v3.rs435
1 files changed, 435 insertions, 0 deletions
diff --git a/src/rpc/envoy.service.discovery.v3.rs b/src/rpc/envoy.service.discovery.v3.rs
new file mode 100644
index 00000000..643c1a5f
--- /dev/null
+++ b/src/rpc/envoy.service.discovery.v3.rs
@@ -0,0 +1,435 @@
+// @generated
+// This file is @generated by prost-build.
+// \[#protodoc-title: Common discovery API components\]
+
+/// Specifies a resource to be subscribed to.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ResourceLocator {
+ /// The resource name to subscribe to.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// A set of dynamic parameters used to match against the dynamic parameter
+ /// constraints on the resource. This allows clients to select between
+ /// multiple variants of the same resource.
+ #[prost(map="string, string", tag="2")]
+ pub dynamic_parameters: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
+}
+/// Specifies a concrete resource name.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ResourceName {
+ /// The name of the resource.
+ #[prost(string, tag="1")]
+ pub name: ::prost::alloc::string::String,
+ /// Dynamic parameter constraints associated with this resource. To be used by client-side caches
+ /// (including xDS proxies) when matching subscribed resource locators.
+ #[prost(message, optional, tag="2")]
+ pub dynamic_parameter_constraints: ::core::option::Option<DynamicParameterConstraints>,
+}
+/// \[#not-implemented-hide:\]
+/// An error associated with a specific resource name, returned to the
+/// client by the server.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct ResourceError {
+ /// The name of the resource.
+ #[prost(message, optional, tag="1")]
+ pub resource_name: ::core::option::Option<ResourceName>,
+ /// The error reported for the resource.
+ #[prost(message, optional, tag="2")]
+ pub error_detail: ::core::option::Option<super::super::super::super::google::rpc::Status>,
+}
+/// A DiscoveryRequest requests a set of versioned resources of the same type for
+/// a given Envoy node on some API.
+/// \[#next-free-field: 8\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DiscoveryRequest {
+ /// The version_info provided in the request messages will be the version_info
+ /// received with the most recent successfully processed response or empty on
+ /// the first request. It is expected that no new request is sent after a
+ /// response is received until the Envoy instance is ready to ACK/NACK the new
+ /// configuration. ACK/NACK takes place by returning the new API config version
+ /// as applied or the previous API config version respectively. Each type_url
+ /// (see below) has an independent version associated with it.
+ #[prost(string, tag="1")]
+ pub version_info: ::prost::alloc::string::String,
+ /// The node making the request.
+ #[prost(message, optional, tag="2")]
+ pub node: ::core::option::Option<super::super::super::config::core::v3::Node>,
+ /// List of resources to subscribe to, e.g. list of cluster names or a route
+ /// configuration name. If this is empty, all resources for the API are
+ /// returned. LDS/CDS may have empty resource_names, which will cause all
+ /// resources for the Envoy instance to be returned. The LDS and CDS responses
+ /// will then imply a number of resources that need to be fetched via EDS/RDS,
+ /// which will be explicitly enumerated in resource_names.
+ #[prost(string, repeated, tag="3")]
+ pub resource_names: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// \[#not-implemented-hide:\]
+ /// Alternative to ``resource_names`` field that allows specifying dynamic
+ /// parameters along with each resource name. Clients that populate this
+ /// field must be able to handle responses from the server where resources
+ /// are wrapped in a Resource message.
+ /// Note that it is legal for a request to have some resources listed
+ /// in ``resource_names`` and others in ``resource_locators``.
+ #[prost(message, repeated, tag="7")]
+ pub resource_locators: ::prost::alloc::vec::Vec<ResourceLocator>,
+ /// Type of the resource that is being requested, e.g.
+ /// "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment". This is implicit
+ /// in requests made via singleton xDS APIs such as CDS, LDS, etc. but is
+ /// required for ADS.
+ #[prost(string, tag="4")]
+ pub type_url: ::prost::alloc::string::String,
+ /// nonce corresponding to DiscoveryResponse being ACK/NACKed. See above
+ /// discussion on version_info and the DiscoveryResponse nonce comment. This
+ /// may be empty only if 1) this is a non-persistent-stream xDS such as HTTP,
+ /// or 2) the client has not yet accepted an update in this xDS stream (unlike
+ /// delta, where it is populated only for new explicit ACKs).
+ #[prost(string, tag="5")]
+ pub response_nonce: ::prost::alloc::string::String,
+ /// This is populated when the previous :ref:`DiscoveryResponse <envoy_v3_api_msg_service.discovery.v3.DiscoveryResponse>`
+ /// failed to update configuration. The ``message`` field in ``error_details`` provides the Envoy
+ /// internal exception related to the failure. It is only intended for consumption during manual
+ /// debugging, the string provided is not guaranteed to be stable across Envoy versions.
+ #[prost(message, optional, tag="6")]
+ pub error_detail: ::core::option::Option<super::super::super::super::google::rpc::Status>,
+}
+/// \[#next-free-field: 8\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DiscoveryResponse {
+ /// The version of the response data.
+ #[prost(string, tag="1")]
+ pub version_info: ::prost::alloc::string::String,
+ /// The response resources. These resources are typed and depend on the API being called.
+ #[prost(message, repeated, tag="2")]
+ pub resources: ::prost::alloc::vec::Vec<super::super::super::super::google::protobuf::Any>,
+ /// \[#not-implemented-hide:\]
+ /// Canary is used to support two Envoy command line flags:
+ ///
+ /// * --terminate-on-canary-transition-failure. When set, Envoy is able to
+ /// terminate if it detects that configuration is stuck at canary. Consider
+ /// this example sequence of updates:
+ /// - Management server applies a canary config successfully.
+ /// - Management server rolls back to a production config.
+ /// - Envoy rejects the new production config.
+ /// Since there is no sensible way to continue receiving configuration
+ /// updates, Envoy will then terminate and apply production config from a
+ /// clean slate.
+ /// * --dry-run-canary. When set, a canary response will never be applied, only
+ /// validated via a dry run.
+ #[prost(bool, tag="3")]
+ pub canary: bool,
+ /// Type URL for resources. Identifies the xDS API when muxing over ADS.
+ /// Must be consistent with the type_url in the 'resources' repeated Any (if non-empty).
+ #[prost(string, tag="4")]
+ pub type_url: ::prost::alloc::string::String,
+ /// For gRPC based subscriptions, the nonce provides a way to explicitly ack a
+ /// specific DiscoveryResponse in a following DiscoveryRequest. Additional
+ /// messages may have been sent by Envoy to the management server for the
+ /// previous version on the stream prior to this DiscoveryResponse, that were
+ /// unprocessed at response send time. The nonce allows the management server
+ /// to ignore any further DiscoveryRequests for the previous version until a
+ /// DiscoveryRequest bearing the nonce. The nonce is optional and is not
+ /// required for non-stream based xDS implementations.
+ #[prost(string, tag="5")]
+ pub nonce: ::prost::alloc::string::String,
+ /// The control plane instance that sent the response.
+ #[prost(message, optional, tag="6")]
+ pub control_plane: ::core::option::Option<super::super::super::config::core::v3::ControlPlane>,
+ /// \[#not-implemented-hide:\]
+ /// Errors associated with specific resources. Clients are expected to
+ /// remember the most recent error for a given resource across responses;
+ /// the error condition is not considered to be cleared until a response is
+ /// received that contains the resource in the 'resources' field.
+ #[prost(message, repeated, tag="7")]
+ pub resource_errors: ::prost::alloc::vec::Vec<ResourceError>,
+}
+/// 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: 10\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DeltaDiscoveryRequest {
+ /// The node making the request.
+ #[prost(message, optional, tag="1")]
+ pub node: ::core::option::Option<super::super::super::config::core::v3::Node>,
+ /// Type of the resource that is being requested, e.g.
+ /// ``type.googleapis.com/envoy.api.v2.ClusterLoadAssignment``. This does not need to be set if
+ /// resources are only referenced via ``xds_resource_subscribe`` and
+ /// ``xds_resources_unsubscribe``.
+ #[prost(string, tag="2")]
+ pub type_url: ::prost::alloc::string::String,
+ /// 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.
+ #[prost(string, repeated, tag="3")]
+ pub resource_names_subscribe: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// A list of Resource names to remove from the list of tracked resources.
+ #[prost(string, repeated, tag="4")]
+ pub resource_names_unsubscribe: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// \[#not-implemented-hide:\]
+ /// Alternative to ``resource_names_subscribe`` field that allows specifying dynamic parameters
+ /// along with each resource name.
+ /// Note that it is legal for a request to have some resources listed
+ /// in ``resource_names_subscribe`` and others in ``resource_locators_subscribe``.
+ #[prost(message, repeated, tag="8")]
+ pub resource_locators_subscribe: ::prost::alloc::vec::Vec<ResourceLocator>,
+ /// \[#not-implemented-hide:\]
+ /// Alternative to ``resource_names_unsubscribe`` field that allows specifying dynamic parameters
+ /// along with each resource name.
+ /// Note that it is legal for a request to have some resources listed
+ /// in ``resource_names_unsubscribe`` and others in ``resource_locators_unsubscribe``.
+ #[prost(message, repeated, tag="9")]
+ pub resource_locators_unsubscribe: ::prost::alloc::vec::Vec<ResourceLocator>,
+ /// 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.
+ #[prost(map="string, string", tag="5")]
+ pub initial_resource_versions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
+ /// 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.
+ #[prost(string, tag="6")]
+ pub response_nonce: ::prost::alloc::string::String,
+ /// This is populated when the previous :ref:`DiscoveryResponse <envoy_v3_api_msg_service.discovery.v3.DiscoveryResponse>`
+ /// failed to update configuration. The ``message`` field in ``error_details``
+ /// provides the Envoy internal exception related to the failure.
+ #[prost(message, optional, tag="7")]
+ pub error_detail: ::core::option::Option<super::super::super::super::google::rpc::Status>,
+}
+/// \[#next-free-field: 10\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DeltaDiscoveryResponse {
+ /// The version of the response data (used for debugging).
+ #[prost(string, tag="1")]
+ pub system_version_info: ::prost::alloc::string::String,
+ /// The response resources. These are typed resources, whose types must match
+ /// the type_url field.
+ #[prost(message, repeated, tag="2")]
+ pub resources: ::prost::alloc::vec::Vec<Resource>,
+ // field id 3 IS available!
+
+ /// Type URL for resources. Identifies the xDS API when muxing over ADS.
+ /// Must be consistent with the type_url in the Any within 'resources' if 'resources' is non-empty.
+ #[prost(string, tag="4")]
+ pub type_url: ::prost::alloc::string::String,
+ /// Resources names of resources that have be deleted and to be removed from the xDS Client.
+ /// Removed resources for missing resources can be ignored.
+ #[prost(string, repeated, tag="6")]
+ pub removed_resources: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// Alternative to removed_resources that allows specifying which variant of
+ /// a resource is being removed. This variant must be used for any resource
+ /// for which dynamic parameter constraints were sent to the client.
+ #[prost(message, repeated, tag="8")]
+ pub removed_resource_names: ::prost::alloc::vec::Vec<ResourceName>,
+ /// The nonce provides a way for DeltaDiscoveryRequests to uniquely
+ /// reference a DeltaDiscoveryResponse when (N)ACKing. The nonce is required.
+ #[prost(string, tag="5")]
+ pub nonce: ::prost::alloc::string::String,
+ /// \[#not-implemented-hide:\]
+ /// The control plane instance that sent the response.
+ #[prost(message, optional, tag="7")]
+ pub control_plane: ::core::option::Option<super::super::super::config::core::v3::ControlPlane>,
+ /// \[#not-implemented-hide:\]
+ /// Errors associated with specific resources. Note that a resource in
+ /// this field with a status of NOT_FOUND should be treated the same as
+ /// a resource listed in the 'removed_resources' or 'removed_resource_names'
+ /// fields.
+ #[prost(message, repeated, tag="9")]
+ pub resource_errors: ::prost::alloc::vec::Vec<ResourceError>,
+}
+/// A set of dynamic parameter constraints associated with a variant of an individual xDS resource.
+/// These constraints determine whether the resource matches a subscription based on the set of
+/// dynamic parameters in the subscription, as specified in the
+/// :ref:`ResourceLocator.dynamic_parameters<envoy_v3_api_field_service.discovery.v3.ResourceLocator.dynamic_parameters>`
+/// field. This allows xDS implementations (clients, servers, and caching proxies) to determine
+/// which variant of a resource is appropriate for a given client.
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct DynamicParameterConstraints {
+ #[prost(oneof="dynamic_parameter_constraints::Type", tags="1, 2, 3, 4")]
+ pub r#type: ::core::option::Option<dynamic_parameter_constraints::Type>,
+}
+/// Nested message and enum types in `DynamicParameterConstraints`.
+pub mod dynamic_parameter_constraints {
+ /// A single constraint for a given key.
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct SingleConstraint {
+ /// The key to match against.
+ #[prost(string, tag="1")]
+ pub key: ::prost::alloc::string::String,
+ #[prost(oneof="single_constraint::ConstraintType", tags="2, 3")]
+ pub constraint_type: ::core::option::Option<single_constraint::ConstraintType>,
+ }
+ /// Nested message and enum types in `SingleConstraint`.
+ pub mod single_constraint {
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct Exists {
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum ConstraintType {
+ /// Matches this exact value.
+ #[prost(string, tag="2")]
+ Value(::prost::alloc::string::String),
+ /// Key is present (matches any value except for the key being absent).
+ /// This allows setting a default constraint for clients that do
+ /// not send a key at all, while there may be other clients that need
+ /// special configuration based on that key.
+ #[prost(message, tag="3")]
+ Exists(Exists),
+ }
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+ pub struct ConstraintList {
+ #[prost(message, repeated, tag="1")]
+ pub constraints: ::prost::alloc::vec::Vec<super::DynamicParameterConstraints>,
+ }
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Oneof)]
+ pub enum Type {
+ /// A single constraint to evaluate.
+ #[prost(message, tag="1")]
+ Constraint(SingleConstraint),
+ /// A list of constraints that match if any one constraint in the list
+ /// matches.
+ #[prost(message, tag="2")]
+ OrConstraints(ConstraintList),
+ /// A list of constraints that must all match.
+ #[prost(message, tag="3")]
+ AndConstraints(ConstraintList),
+ /// The inverse (NOT) of a set of constraints.
+ #[prost(message, tag="4")]
+ NotConstraints(::prost::alloc::boxed::Box<super::DynamicParameterConstraints>),
+ }
+}
+/// \[#next-free-field: 10\]
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, PartialEq, ::prost::Message)]
+pub struct Resource {
+ /// The resource's name, to distinguish it from others of the same type of resource.
+ /// Only one of ``name`` or ``resource_name`` may be set.
+ #[prost(string, tag="3")]
+ pub name: ::prost::alloc::string::String,
+ /// Alternative to the ``name`` field, to be used when the server supports
+ /// multiple variants of the named resource that are differentiated by
+ /// dynamic parameter constraints.
+ /// Only one of ``name`` or ``resource_name`` may be set.
+ #[prost(message, optional, tag="8")]
+ pub resource_name: ::core::option::Option<ResourceName>,
+ /// The aliases are a list of other names that this resource can go by.
+ #[prost(string, repeated, tag="4")]
+ pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
+ /// The resource level version. It allows xDS to track the state of individual
+ /// resources.
+ #[prost(string, tag="1")]
+ pub version: ::prost::alloc::string::String,
+ /// The resource being tracked.
+ #[prost(message, optional, tag="2")]
+ pub resource: ::core::option::Option<super::super::super::super::google::protobuf::Any>,
+ /// Time-to-live value for the resource. For each resource, a timer is started. The timer is
+ /// reset each time the resource is received with a new TTL. If the resource is received with
+ /// no TTL set, the timer is removed for the resource. Upon expiration of the timer, the
+ /// configuration for the resource will be removed.
+ ///
+ /// The TTL can be refreshed or changed by sending a response that doesn't change the resource
+ /// version. In this case the resource field does not need to be populated, which allows for
+ /// light-weight "heartbeat" updates to keep a resource with a TTL alive.
+ ///
+ /// The TTL feature is meant to support configurations that should be removed in the event of
+ /// a management server failure. For example, the feature may be used for fault injection
+ /// testing where the fault injection should be terminated in the event that Envoy loses contact
+ /// with the management server.
+ #[prost(message, optional, tag="6")]
+ pub ttl: ::core::option::Option<super::super::super::super::google::protobuf::Duration>,
+ /// Cache control properties for the resource.
+ /// \[#not-implemented-hide:\]
+ #[prost(message, optional, tag="7")]
+ pub cache_control: ::core::option::Option<resource::CacheControl>,
+ /// The Metadata field can be used to provide additional information for the resource.
+ /// E.g. the trace data for debugging.
+ #[prost(message, optional, tag="9")]
+ pub metadata: ::core::option::Option<super::super::super::config::core::v3::Metadata>,
+}
+/// Nested message and enum types in `Resource`.
+pub mod resource {
+ /// Cache control properties for the resource.
+ /// \[#not-implemented-hide:\]
+ #[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+ pub struct CacheControl {
+ /// If true, xDS proxies may not cache this resource.
+ /// Note that this does not apply to clients other than xDS proxies, which must cache resources
+ /// for their own use, regardless of the value of this field.
+ #[prost(bool, tag="1")]
+ pub do_not_cache: bool,
+ }
+}
+/// \[#not-implemented-hide:\] Not configuration. Workaround c++ protobuf issue with importing
+/// services: <https://github.com/google/protobuf/issues/4221>
+#[allow(clippy::derive_partial_eq_without_eq)]
+#[derive(Clone, Copy, PartialEq, ::prost::Message)]
+pub struct AdsDummy {
+}
+include!("envoy.service.discovery.v3.tonic.rs");
+// @@protoc_insertion_point(module) \ No newline at end of file