1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
// 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()
}
}