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}