xds_api/generated/
envoy.config.endpoint.v3.rs

1// This file is @generated by prost-build.
2/// Upstream host identifier.
3#[derive(Clone, PartialEq, ::prost::Message)]
4pub struct Endpoint {
5    /// The upstream host address.
6    ///
7    /// .. attention::
8    ///
9    ///    The form of host address depends on the given cluster type. For STATIC or EDS,
10    ///    it is expected to be a direct IP address (or something resolvable by the
11    ///    specified :ref:`resolver <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`
12    ///    in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
13    ///    and will be resolved via DNS.
14    #[prost(message, optional, tag = "1")]
15    pub address: ::core::option::Option<super::super::core::v3::Address>,
16    /// The optional health check configuration is used as configuration for the
17    /// health checker to contact the health checked host.
18    ///
19    /// .. attention::
20    ///
21    ///    This takes into effect only for upstream clusters with
22    ///    :ref:`active health checking <arch_overview_health_checking>` enabled.
23    #[prost(message, optional, tag = "2")]
24    pub health_check_config: ::core::option::Option<endpoint::HealthCheckConfig>,
25    /// The hostname associated with this endpoint. This hostname is not used for routing or address
26    /// resolution. If provided, it will be associated with the endpoint, and can be used for features
27    /// that require a hostname, like
28    /// :ref:`auto_host_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.auto_host_rewrite>`.
29    #[prost(string, tag = "3")]
30    pub hostname: ::prost::alloc::string::String,
31    /// An ordered list of addresses that together with ``address`` comprise the
32    /// list of addresses for an endpoint. The address given in the ``address`` is
33    /// prepended to this list. It is assumed that the list must already be
34    /// sorted by preference order of the addresses. This will only be supported
35    /// for STATIC and EDS clusters.
36    #[prost(message, repeated, tag = "4")]
37    pub additional_addresses: ::prost::alloc::vec::Vec<endpoint::AdditionalAddress>,
38}
39/// Nested message and enum types in `Endpoint`.
40pub mod endpoint {
41    /// The optional health check configuration.
42    #[derive(Clone, PartialEq, ::prost::Message)]
43    pub struct HealthCheckConfig {
44        /// Optional alternative health check port value.
45        ///
46        /// By default the health check address port of an upstream host is the same
47        /// as the host's serving address port. This provides an alternative health
48        /// check port. Setting this with a non-zero value allows an upstream host
49        /// to have different health check address port.
50        #[prost(uint32, tag = "1")]
51        pub port_value: u32,
52        /// By default, the host header for L7 health checks is controlled by cluster level configuration
53        /// (see: :ref:`host <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.host>` and
54        /// :ref:`authority <envoy_v3_api_field_config.core.v3.HealthCheck.GrpcHealthCheck.authority>`). Setting this
55        /// to a non-empty value allows overriding the cluster level configuration for a specific
56        /// endpoint.
57        #[prost(string, tag = "2")]
58        pub hostname: ::prost::alloc::string::String,
59        /// Optional alternative health check host address.
60        ///
61        /// .. attention::
62        ///
63        ///    The form of the health check host address is expected to be a direct IP address.
64        #[prost(message, optional, tag = "3")]
65        pub address: ::core::option::Option<super::super::super::core::v3::Address>,
66        /// Optional flag to control if perform active health check for this endpoint.
67        /// Active health check is enabled by default if there is a health checker.
68        #[prost(bool, tag = "4")]
69        pub disable_active_health_check: bool,
70    }
71    impl ::prost::Name for HealthCheckConfig {
72        const NAME: &'static str = "HealthCheckConfig";
73        const PACKAGE: &'static str = "envoy.config.endpoint.v3";
74        fn full_name() -> ::prost::alloc::string::String {
75            "envoy.config.endpoint.v3.Endpoint.HealthCheckConfig".into()
76        }
77        fn type_url() -> ::prost::alloc::string::String {
78            "type.googleapis.com/envoy.config.endpoint.v3.Endpoint.HealthCheckConfig"
79                .into()
80        }
81    }
82    #[derive(Clone, PartialEq, ::prost::Message)]
83    pub struct AdditionalAddress {
84        /// Additional address that is associated with the endpoint.
85        #[prost(message, optional, tag = "1")]
86        pub address: ::core::option::Option<super::super::super::core::v3::Address>,
87    }
88    impl ::prost::Name for AdditionalAddress {
89        const NAME: &'static str = "AdditionalAddress";
90        const PACKAGE: &'static str = "envoy.config.endpoint.v3";
91        fn full_name() -> ::prost::alloc::string::String {
92            "envoy.config.endpoint.v3.Endpoint.AdditionalAddress".into()
93        }
94        fn type_url() -> ::prost::alloc::string::String {
95            "type.googleapis.com/envoy.config.endpoint.v3.Endpoint.AdditionalAddress"
96                .into()
97        }
98    }
99}
100impl ::prost::Name for Endpoint {
101    const NAME: &'static str = "Endpoint";
102    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
103    fn full_name() -> ::prost::alloc::string::String {
104        "envoy.config.endpoint.v3.Endpoint".into()
105    }
106    fn type_url() -> ::prost::alloc::string::String {
107        "type.googleapis.com/envoy.config.endpoint.v3.Endpoint".into()
108    }
109}
110/// An Endpoint that Envoy can route traffic to.
111/// \[#next-free-field: 6\]
112#[derive(Clone, PartialEq, ::prost::Message)]
113pub struct LbEndpoint {
114    /// Optional health status when known and supplied by EDS server.
115    #[prost(enumeration = "super::super::core::v3::HealthStatus", tag = "2")]
116    pub health_status: i32,
117    /// The endpoint metadata specifies values that may be used by the load
118    /// balancer to select endpoints in a cluster for a given request. The filter
119    /// name should be specified as ``envoy.lb``. An example boolean key-value pair
120    /// is ``canary``, providing the optional canary status of the upstream host.
121    /// This may be matched against in a route's
122    /// :ref:`RouteAction <envoy_v3_api_msg_config.route.v3.RouteAction>` metadata_match field
123    /// to subset the endpoints considered in cluster load balancing.
124    #[prost(message, optional, tag = "3")]
125    pub metadata: ::core::option::Option<super::super::core::v3::Metadata>,
126    /// The optional load balancing weight of the upstream host; at least 1.
127    /// Envoy uses the load balancing weight in some of the built in load
128    /// balancers. The load balancing weight for an endpoint is divided by the sum
129    /// of the weights of all endpoints in the endpoint's locality to produce a
130    /// percentage of traffic for the endpoint. This percentage is then further
131    /// weighted by the endpoint's locality's load balancing weight from
132    /// LocalityLbEndpoints. If unspecified, will be treated as 1. The sum
133    /// of the weights of all endpoints in the endpoint's locality must not
134    /// exceed uint32_t maximal value (4294967295).
135    #[prost(message, optional, tag = "4")]
136    pub load_balancing_weight: ::core::option::Option<
137        super::super::super::super::google::protobuf::UInt32Value,
138    >,
139    /// Upstream host identifier or a named reference.
140    #[prost(oneof = "lb_endpoint::HostIdentifier", tags = "1, 5")]
141    pub host_identifier: ::core::option::Option<lb_endpoint::HostIdentifier>,
142}
143/// Nested message and enum types in `LbEndpoint`.
144pub mod lb_endpoint {
145    /// Upstream host identifier or a named reference.
146    #[derive(Clone, PartialEq, ::prost::Oneof)]
147    pub enum HostIdentifier {
148        #[prost(message, tag = "1")]
149        Endpoint(super::Endpoint),
150        /// \[#not-implemented-hide:\]
151        #[prost(string, tag = "5")]
152        EndpointName(::prost::alloc::string::String),
153    }
154}
155impl ::prost::Name for LbEndpoint {
156    const NAME: &'static str = "LbEndpoint";
157    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
158    fn full_name() -> ::prost::alloc::string::String {
159        "envoy.config.endpoint.v3.LbEndpoint".into()
160    }
161    fn type_url() -> ::prost::alloc::string::String {
162        "type.googleapis.com/envoy.config.endpoint.v3.LbEndpoint".into()
163    }
164}
165/// \[#not-implemented-hide:\]
166/// A configuration for a LEDS collection.
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct LedsClusterLocalityConfig {
169    /// Configuration for the source of LEDS updates for a Locality.
170    #[prost(message, optional, tag = "1")]
171    pub leds_config: ::core::option::Option<super::super::core::v3::ConfigSource>,
172    /// The xDS transport protocol glob collection resource name.
173    /// The service is only supported in delta xDS (incremental) mode.
174    #[prost(string, tag = "2")]
175    pub leds_collection_name: ::prost::alloc::string::String,
176}
177impl ::prost::Name for LedsClusterLocalityConfig {
178    const NAME: &'static str = "LedsClusterLocalityConfig";
179    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
180    fn full_name() -> ::prost::alloc::string::String {
181        "envoy.config.endpoint.v3.LedsClusterLocalityConfig".into()
182    }
183    fn type_url() -> ::prost::alloc::string::String {
184        "type.googleapis.com/envoy.config.endpoint.v3.LedsClusterLocalityConfig".into()
185    }
186}
187/// A group of endpoints belonging to a Locality.
188/// One can have multiple LocalityLbEndpoints for a locality, but only if
189/// they have different priorities.
190/// \[#next-free-field: 9\]
191#[derive(Clone, PartialEq, ::prost::Message)]
192pub struct LocalityLbEndpoints {
193    /// Identifies location of where the upstream hosts run.
194    #[prost(message, optional, tag = "1")]
195    pub locality: ::core::option::Option<super::super::core::v3::Locality>,
196    /// The group of endpoints belonging to the locality specified.
197    /// [#comment:TODO(adisuissa): Once LEDS is implemented this field needs to be
198    /// deprecated and replaced by ``load_balancer_endpoints``.]
199    #[prost(message, repeated, tag = "2")]
200    pub lb_endpoints: ::prost::alloc::vec::Vec<LbEndpoint>,
201    /// Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
202    /// balancing weight for a locality is divided by the sum of the weights of all
203    /// localities  at the same priority level to produce the effective percentage
204    /// of traffic for the locality. The sum of the weights of all localities at
205    /// the same priority level must not exceed uint32_t maximal value (4294967295).
206    ///
207    /// Locality weights are only considered when :ref:`locality weighted load
208    /// balancing <arch_overview_load_balancing_locality_weighted_lb>` is
209    /// configured. These weights are ignored otherwise. If no weights are
210    /// specified when locality weighted load balancing is enabled, the locality is
211    /// assigned no load.
212    #[prost(message, optional, tag = "3")]
213    pub load_balancing_weight: ::core::option::Option<
214        super::super::super::super::google::protobuf::UInt32Value,
215    >,
216    /// Optional: the priority for this LocalityLbEndpoints. If unspecified this will
217    /// default to the highest priority (0).
218    ///
219    /// Under usual circumstances, Envoy will only select endpoints for the highest
220    /// priority (0). In the event that enough endpoints for a particular priority are
221    /// unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
222    /// next highest priority group. Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>`.
223    ///
224    /// Priorities should range from 0 (highest) to N (lowest) without skipping.
225    #[prost(uint32, tag = "5")]
226    pub priority: u32,
227    /// Optional: Per locality proximity value which indicates how close this
228    /// locality is from the source locality. This value only provides ordering
229    /// information (lower the value, closer it is to the source locality).
230    /// This will be consumed by load balancing schemes that need proximity order
231    /// to determine where to route the requests.
232    /// \[#not-implemented-hide:\]
233    #[prost(message, optional, tag = "6")]
234    pub proximity: ::core::option::Option<
235        super::super::super::super::google::protobuf::UInt32Value,
236    >,
237    /// \[#not-implemented-hide:\]
238    #[prost(oneof = "locality_lb_endpoints::LbConfig", tags = "7, 8")]
239    pub lb_config: ::core::option::Option<locality_lb_endpoints::LbConfig>,
240}
241/// Nested message and enum types in `LocalityLbEndpoints`.
242pub mod locality_lb_endpoints {
243    /// \[#not-implemented-hide:\]
244    /// A list of endpoints of a specific locality.
245    #[derive(Clone, PartialEq, ::prost::Message)]
246    pub struct LbEndpointList {
247        #[prost(message, repeated, tag = "1")]
248        pub lb_endpoints: ::prost::alloc::vec::Vec<super::LbEndpoint>,
249    }
250    impl ::prost::Name for LbEndpointList {
251        const NAME: &'static str = "LbEndpointList";
252        const PACKAGE: &'static str = "envoy.config.endpoint.v3";
253        fn full_name() -> ::prost::alloc::string::String {
254            "envoy.config.endpoint.v3.LocalityLbEndpoints.LbEndpointList".into()
255        }
256        fn type_url() -> ::prost::alloc::string::String {
257            "type.googleapis.com/envoy.config.endpoint.v3.LocalityLbEndpoints.LbEndpointList"
258                .into()
259        }
260    }
261    /// \[#not-implemented-hide:\]
262    #[derive(Clone, PartialEq, ::prost::Oneof)]
263    pub enum LbConfig {
264        /// The group of endpoints belonging to the locality.
265        /// [#comment:TODO(adisuissa): Once LEDS is implemented the ``lb_endpoints`` field
266        /// needs to be deprecated.]
267        #[prost(message, tag = "7")]
268        LoadBalancerEndpoints(LbEndpointList),
269        /// LEDS Configuration for the current locality.
270        #[prost(message, tag = "8")]
271        LedsClusterLocalityConfig(super::LedsClusterLocalityConfig),
272    }
273}
274impl ::prost::Name for LocalityLbEndpoints {
275    const NAME: &'static str = "LocalityLbEndpoints";
276    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
277    fn full_name() -> ::prost::alloc::string::String {
278        "envoy.config.endpoint.v3.LocalityLbEndpoints".into()
279    }
280    fn type_url() -> ::prost::alloc::string::String {
281        "type.googleapis.com/envoy.config.endpoint.v3.LocalityLbEndpoints".into()
282    }
283}
284/// Each route from RDS will map to a single cluster or traffic split across
285/// clusters using weights expressed in the RDS WeightedCluster.
286///
287/// With EDS, each cluster is treated independently from a LB perspective, with
288/// LB taking place between the Localities within a cluster and at a finer
289/// granularity between the hosts within a locality. The percentage of traffic
290/// for each endpoint is determined by both its load_balancing_weight, and the
291/// load_balancing_weight of its locality. First, a locality will be selected,
292/// then an endpoint within that locality will be chose based on its weight.
293/// \[#next-free-field: 6\]
294#[derive(Clone, PartialEq, ::prost::Message)]
295pub struct ClusterLoadAssignment {
296    /// Name of the cluster. This will be the :ref:`service_name
297    /// <envoy_v3_api_field_config.cluster.v3.Cluster.EdsClusterConfig.service_name>` value if specified
298    /// in the cluster :ref:`EdsClusterConfig
299    /// <envoy_v3_api_msg_config.cluster.v3.Cluster.EdsClusterConfig>`.
300    #[prost(string, tag = "1")]
301    pub cluster_name: ::prost::alloc::string::String,
302    /// List of endpoints to load balance to.
303    #[prost(message, repeated, tag = "2")]
304    pub endpoints: ::prost::alloc::vec::Vec<LocalityLbEndpoints>,
305    /// Map of named endpoints that can be referenced in LocalityLbEndpoints.
306    /// \[#not-implemented-hide:\]
307    #[prost(map = "string, message", tag = "5")]
308    pub named_endpoints: ::std::collections::HashMap<
309        ::prost::alloc::string::String,
310        Endpoint,
311    >,
312    /// Load balancing policy settings.
313    #[prost(message, optional, tag = "4")]
314    pub policy: ::core::option::Option<cluster_load_assignment::Policy>,
315}
316/// Nested message and enum types in `ClusterLoadAssignment`.
317pub mod cluster_load_assignment {
318    /// Load balancing policy settings.
319    /// \[#next-free-field: 7\]
320    #[derive(Clone, PartialEq, ::prost::Message)]
321    pub struct Policy {
322        /// Action to trim the overall incoming traffic to protect the upstream
323        /// hosts. This action allows protection in case the hosts are unable to
324        /// recover from an outage, or unable to autoscale or unable to handle
325        /// incoming traffic volume for any reason.
326        ///
327        /// At the client each category is applied one after the other to generate
328        /// the 'actual' drop percentage on all outgoing traffic. For example:
329        ///
330        /// .. code-block:: json
331        ///
332        ///   { "drop_overloads": [
333        ///       { "category": "throttle", "drop_percentage": 60 }
334        ///       { "category": "lb", "drop_percentage": 50 }
335        ///   ]}
336        ///
337        /// The actual drop percentages applied to the traffic at the clients will be
338        ///     "throttle"_drop = 60%
339        ///     "lb"_drop = 20%  // 50% of the remaining 'actual' load, which is 40%.
340        ///     actual_outgoing_load = 20% // remaining after applying all categories.
341        ///
342        /// Envoy supports only one element and will NACK if more than one element is present.
343        /// Other xDS-capable data planes will not necessarily have this limitation.
344        ///
345        /// In Envoy, this ``drop_overloads`` config can be overridden by a runtime key
346        /// "load_balancing_policy.drop_overload_limit" setting. This runtime key can be set to
347        /// any integer number between 0 and 100. 0 means drop 0%. 100 means drop 100%.
348        /// When both ``drop_overloads`` config and "load_balancing_policy.drop_overload_limit"
349        /// setting are in place, the min of these two wins.
350        #[prost(message, repeated, tag = "2")]
351        pub drop_overloads: ::prost::alloc::vec::Vec<policy::DropOverload>,
352        /// Priority levels and localities are considered overprovisioned with this
353        /// factor (in percentage). This means that we don't consider a priority
354        /// level or locality unhealthy until the fraction of healthy hosts
355        /// multiplied by the overprovisioning factor drops below 100.
356        /// With the default value 140(1.4), Envoy doesn't consider a priority level
357        /// or a locality unhealthy until their percentage of healthy hosts drops
358        /// below 72%. For example:
359        ///
360        /// .. code-block:: json
361        ///
362        ///   { "overprovisioning_factor": 100 }
363        ///
364        /// Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>` and
365        /// :ref:`localities <arch_overview_load_balancing_locality_weighted_lb>`.
366        #[prost(message, optional, tag = "3")]
367        pub overprovisioning_factor: ::core::option::Option<
368            super::super::super::super::super::google::protobuf::UInt32Value,
369        >,
370        /// The max time until which the endpoints from this assignment can be used.
371        /// If no new assignments are received before this time expires the endpoints
372        /// are considered stale and should be marked unhealthy.
373        /// Defaults to 0 which means endpoints never go stale.
374        #[prost(message, optional, tag = "4")]
375        pub endpoint_stale_after: ::core::option::Option<
376            super::super::super::super::super::google::protobuf::Duration,
377        >,
378        /// If true, use the :ref:`load balancing weight
379        /// <envoy_v3_api_field_config.endpoint.v3.LbEndpoint.load_balancing_weight>` of healthy and unhealthy
380        /// hosts to determine the health of the priority level. If false, use the number of healthy and unhealthy hosts
381        /// to determine the health of the priority level, or in other words assume each host has a weight of 1 for
382        /// this calculation.
383        ///
384        /// Note: this is not currently implemented for
385        /// :ref:`locality weighted load balancing <arch_overview_load_balancing_locality_weighted_lb>`.
386        #[prost(bool, tag = "6")]
387        pub weighted_priority_health: bool,
388    }
389    /// Nested message and enum types in `Policy`.
390    pub mod policy {
391        #[derive(Clone, PartialEq, ::prost::Message)]
392        pub struct DropOverload {
393            /// Identifier for the policy specifying the drop.
394            #[prost(string, tag = "1")]
395            pub category: ::prost::alloc::string::String,
396            /// Percentage of traffic that should be dropped for the category.
397            #[prost(message, optional, tag = "2")]
398            pub drop_percentage: ::core::option::Option<
399                super::super::super::super::super::r#type::v3::FractionalPercent,
400            >,
401        }
402        impl ::prost::Name for DropOverload {
403            const NAME: &'static str = "DropOverload";
404            const PACKAGE: &'static str = "envoy.config.endpoint.v3";
405            fn full_name() -> ::prost::alloc::string::String {
406                "envoy.config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload"
407                    .into()
408            }
409            fn type_url() -> ::prost::alloc::string::String {
410                "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload"
411                    .into()
412            }
413        }
414    }
415    impl ::prost::Name for Policy {
416        const NAME: &'static str = "Policy";
417        const PACKAGE: &'static str = "envoy.config.endpoint.v3";
418        fn full_name() -> ::prost::alloc::string::String {
419            "envoy.config.endpoint.v3.ClusterLoadAssignment.Policy".into()
420        }
421        fn type_url() -> ::prost::alloc::string::String {
422            "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment.Policy"
423                .into()
424        }
425    }
426}
427impl ::prost::Name for ClusterLoadAssignment {
428    const NAME: &'static str = "ClusterLoadAssignment";
429    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
430    fn full_name() -> ::prost::alloc::string::String {
431        "envoy.config.endpoint.v3.ClusterLoadAssignment".into()
432    }
433    fn type_url() -> ::prost::alloc::string::String {
434        "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment".into()
435    }
436}
437/// These are stats Envoy reports to the management server at a frequency defined by
438/// :ref:`LoadStatsResponse.load_reporting_interval<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.load_reporting_interval>`.
439/// Stats per upstream region/zone and optionally per subzone.
440/// \[#next-free-field: 9\]
441#[derive(Clone, PartialEq, ::prost::Message)]
442pub struct UpstreamLocalityStats {
443    /// Name of zone, region and optionally endpoint group these metrics were
444    /// collected from. Zone and region names could be empty if unknown.
445    #[prost(message, optional, tag = "1")]
446    pub locality: ::core::option::Option<super::super::core::v3::Locality>,
447    /// The total number of requests successfully completed by the endpoints in the
448    /// locality.
449    #[prost(uint64, tag = "2")]
450    pub total_successful_requests: u64,
451    /// The total number of unfinished requests
452    #[prost(uint64, tag = "3")]
453    pub total_requests_in_progress: u64,
454    /// The total number of requests that failed due to errors at the endpoint,
455    /// aggregated over all endpoints in the locality.
456    #[prost(uint64, tag = "4")]
457    pub total_error_requests: u64,
458    /// The total number of requests that were issued by this Envoy since
459    /// the last report. This information is aggregated over all the
460    /// upstream endpoints in the locality.
461    #[prost(uint64, tag = "8")]
462    pub total_issued_requests: u64,
463    /// Stats for multi-dimensional load balancing.
464    #[prost(message, repeated, tag = "5")]
465    pub load_metric_stats: ::prost::alloc::vec::Vec<EndpointLoadMetricStats>,
466    /// Endpoint granularity stats information for this locality. This information
467    /// is populated if the Server requests it by setting
468    /// :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.report_endpoint_granularity>`.
469    #[prost(message, repeated, tag = "7")]
470    pub upstream_endpoint_stats: ::prost::alloc::vec::Vec<UpstreamEndpointStats>,
471    /// \[#not-implemented-hide:\] The priority of the endpoint group these metrics
472    /// were collected from.
473    #[prost(uint32, tag = "6")]
474    pub priority: u32,
475}
476impl ::prost::Name for UpstreamLocalityStats {
477    const NAME: &'static str = "UpstreamLocalityStats";
478    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
479    fn full_name() -> ::prost::alloc::string::String {
480        "envoy.config.endpoint.v3.UpstreamLocalityStats".into()
481    }
482    fn type_url() -> ::prost::alloc::string::String {
483        "type.googleapis.com/envoy.config.endpoint.v3.UpstreamLocalityStats".into()
484    }
485}
486/// \[#next-free-field: 8\]
487#[derive(Clone, PartialEq, ::prost::Message)]
488pub struct UpstreamEndpointStats {
489    /// Upstream host address.
490    #[prost(message, optional, tag = "1")]
491    pub address: ::core::option::Option<super::super::core::v3::Address>,
492    /// Opaque and implementation dependent metadata of the
493    /// endpoint. Envoy will pass this directly to the management server.
494    #[prost(message, optional, tag = "6")]
495    pub metadata: ::core::option::Option<
496        super::super::super::super::google::protobuf::Struct,
497    >,
498    /// The total number of requests successfully completed by the endpoints in the
499    /// locality. These include non-5xx responses for HTTP, where errors
500    /// originate at the client and the endpoint responded successfully. For gRPC,
501    /// the grpc-status values are those not covered by total_error_requests below.
502    #[prost(uint64, tag = "2")]
503    pub total_successful_requests: u64,
504    /// The total number of unfinished requests for this endpoint.
505    #[prost(uint64, tag = "3")]
506    pub total_requests_in_progress: u64,
507    /// The total number of requests that failed due to errors at the endpoint.
508    /// For HTTP these are responses with 5xx status codes and for gRPC the
509    /// grpc-status values:
510    ///
511    ///    - DeadlineExceeded
512    ///    - Unimplemented
513    ///    - Internal
514    ///    - Unavailable
515    ///    - Unknown
516    ///    - DataLoss
517    #[prost(uint64, tag = "4")]
518    pub total_error_requests: u64,
519    /// The total number of requests that were issued to this endpoint
520    /// since the last report. A single TCP connection, HTTP or gRPC
521    /// request or stream is counted as one request.
522    #[prost(uint64, tag = "7")]
523    pub total_issued_requests: u64,
524    /// Stats for multi-dimensional load balancing.
525    #[prost(message, repeated, tag = "5")]
526    pub load_metric_stats: ::prost::alloc::vec::Vec<EndpointLoadMetricStats>,
527}
528impl ::prost::Name for UpstreamEndpointStats {
529    const NAME: &'static str = "UpstreamEndpointStats";
530    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
531    fn full_name() -> ::prost::alloc::string::String {
532        "envoy.config.endpoint.v3.UpstreamEndpointStats".into()
533    }
534    fn type_url() -> ::prost::alloc::string::String {
535        "type.googleapis.com/envoy.config.endpoint.v3.UpstreamEndpointStats".into()
536    }
537}
538#[derive(Clone, PartialEq, ::prost::Message)]
539pub struct EndpointLoadMetricStats {
540    /// Name of the metric; may be empty.
541    #[prost(string, tag = "1")]
542    pub metric_name: ::prost::alloc::string::String,
543    /// Number of calls that finished and included this metric.
544    #[prost(uint64, tag = "2")]
545    pub num_requests_finished_with_metric: u64,
546    /// Sum of metric values across all calls that finished with this metric for
547    /// load_reporting_interval.
548    #[prost(double, tag = "3")]
549    pub total_metric_value: f64,
550}
551impl ::prost::Name for EndpointLoadMetricStats {
552    const NAME: &'static str = "EndpointLoadMetricStats";
553    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
554    fn full_name() -> ::prost::alloc::string::String {
555        "envoy.config.endpoint.v3.EndpointLoadMetricStats".into()
556    }
557    fn type_url() -> ::prost::alloc::string::String {
558        "type.googleapis.com/envoy.config.endpoint.v3.EndpointLoadMetricStats".into()
559    }
560}
561/// Per cluster load stats. Envoy reports these stats a management server in a
562/// :ref:`LoadStatsRequest<envoy_v3_api_msg_service.load_stats.v3.LoadStatsRequest>`
563/// Next ID: 7
564/// \[#next-free-field: 7\]
565#[derive(Clone, PartialEq, ::prost::Message)]
566pub struct ClusterStats {
567    /// The name of the cluster.
568    #[prost(string, tag = "1")]
569    pub cluster_name: ::prost::alloc::string::String,
570    /// The eds_cluster_config service_name of the cluster.
571    /// It's possible that two clusters send the same service_name to EDS,
572    /// in that case, the management server is supposed to do aggregation on the load reports.
573    #[prost(string, tag = "6")]
574    pub cluster_service_name: ::prost::alloc::string::String,
575    /// Need at least one.
576    #[prost(message, repeated, tag = "2")]
577    pub upstream_locality_stats: ::prost::alloc::vec::Vec<UpstreamLocalityStats>,
578    /// Cluster-level stats such as total_successful_requests may be computed by
579    /// summing upstream_locality_stats. In addition, below there are additional
580    /// cluster-wide stats.
581    ///
582    /// The total number of dropped requests. This covers requests
583    /// deliberately dropped by the drop_overload policy and circuit breaking.
584    #[prost(uint64, tag = "3")]
585    pub total_dropped_requests: u64,
586    /// Information about deliberately dropped requests for each category specified
587    /// in the DropOverload policy.
588    #[prost(message, repeated, tag = "5")]
589    pub dropped_requests: ::prost::alloc::vec::Vec<cluster_stats::DroppedRequests>,
590    /// Period over which the actual load report occurred. This will be guaranteed to include every
591    /// request reported. Due to system load and delays between the ``LoadStatsRequest`` sent from Envoy
592    /// and the ``LoadStatsResponse`` message sent from the management server, this may be longer than
593    /// the requested load reporting interval in the ``LoadStatsResponse``.
594    #[prost(message, optional, tag = "4")]
595    pub load_report_interval: ::core::option::Option<
596        super::super::super::super::google::protobuf::Duration,
597    >,
598}
599/// Nested message and enum types in `ClusterStats`.
600pub mod cluster_stats {
601    #[derive(Clone, PartialEq, ::prost::Message)]
602    pub struct DroppedRequests {
603        /// Identifier for the policy specifying the drop.
604        #[prost(string, tag = "1")]
605        pub category: ::prost::alloc::string::String,
606        /// Total number of deliberately dropped requests for the category.
607        #[prost(uint64, tag = "2")]
608        pub dropped_count: u64,
609    }
610    impl ::prost::Name for DroppedRequests {
611        const NAME: &'static str = "DroppedRequests";
612        const PACKAGE: &'static str = "envoy.config.endpoint.v3";
613        fn full_name() -> ::prost::alloc::string::String {
614            "envoy.config.endpoint.v3.ClusterStats.DroppedRequests".into()
615        }
616        fn type_url() -> ::prost::alloc::string::String {
617            "type.googleapis.com/envoy.config.endpoint.v3.ClusterStats.DroppedRequests"
618                .into()
619        }
620    }
621}
622impl ::prost::Name for ClusterStats {
623    const NAME: &'static str = "ClusterStats";
624    const PACKAGE: &'static str = "envoy.config.endpoint.v3";
625    fn full_name() -> ::prost::alloc::string::String {
626        "envoy.config.endpoint.v3.ClusterStats".into()
627    }
628    fn type_url() -> ::prost::alloc::string::String {
629        "type.googleapis.com/envoy.config.endpoint.v3.ClusterStats".into()
630    }
631}