envoy-types 0.7.3

Collection of protobuf types and other assets to work with the Envoy Proxy through Rust gRPC services.
Documentation
// This file is @generated by prost-build.
/// Configuration for the composite cluster. See the :ref:`architecture overview  <arch_overview_composite_cluster>` for more information. This cluster type enables retry-aware
/// cluster selection, allowing different retry attempts to automatically target
/// different upstream clusters. Unlike the standard aggregate cluster which uses
/// health-based selection, the composite cluster uses the retry attempt count to
/// deterministically select which sub-cluster to route to.
///
/// When retry attempts exceed the number of configured clusters, requests will fail with no
/// host available.
///
/// Example configuration:
///
/// .. code-block:: yaml
///
/// ```text
/// name: composite_cluster
/// connect_timeout: 0.25s
/// lb_policy: CLUSTER_PROVIDED
/// cluster_type:
///    name: envoy.clusters.composite
///    typed_config:
///      "@type": type.googleapis.com/envoy.extensions.clusters.composite.v3.ClusterConfig
///      clusters:
///      - name: primary_cluster
///      - name: secondary_cluster
///      - name: fallback_cluster
/// ```
///
/// \[\#extension: envoy.clusters.composite\]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ClusterConfig {
    /// List of clusters to use for request routing. The first cluster is used for the
    /// initial request (attempt 1), the second cluster for the first retry (attempt 2),
    /// and so on. Must contain at least one cluster. When retry attempts exceed the number
    /// of configured clusters, requests will fail with no host available.
    #[prost(message, repeated, tag = "1")]
    pub clusters: ::prost::alloc::vec::Vec<cluster_config::ClusterEntry>,
}
/// Nested message and enum types in `ClusterConfig`.
pub mod cluster_config {
    /// Configuration for an individual cluster entry.
    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
    pub struct ClusterEntry {
        /// Name of the cluster. This cluster must be defined elsewhere in the configuration.
        #[prost(string, tag = "1")]
        pub name: ::prost::alloc::string::String,
    }
    impl ::prost::Name for ClusterEntry {
        const NAME: &'static str = "ClusterEntry";
        const PACKAGE: &'static str = "envoy.extensions.clusters.composite.v3";
        fn full_name() -> ::prost::alloc::string::String {
            "envoy.extensions.clusters.composite.v3.ClusterConfig.ClusterEntry".into()
        }
        fn type_url() -> ::prost::alloc::string::String {
            "type.googleapis.com/envoy.extensions.clusters.composite.v3.ClusterConfig.ClusterEntry"
                .into()
        }
    }
}
impl ::prost::Name for ClusterConfig {
    const NAME: &'static str = "ClusterConfig";
    const PACKAGE: &'static str = "envoy.extensions.clusters.composite.v3";
    fn full_name() -> ::prost::alloc::string::String {
        "envoy.extensions.clusters.composite.v3.ClusterConfig".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "type.googleapis.com/envoy.extensions.clusters.composite.v3.ClusterConfig".into()
    }
}