async-grpc-xds 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/fixtures/async/grpc/test_interface.rb +79 -0
  4. data/fixtures/async/grpc/test_message.rb +56 -0
  5. data/lib/async/grpc/xds/ads_stream.rb +70 -0
  6. data/lib/async/grpc/xds/client.rb +255 -0
  7. data/lib/async/grpc/xds/context.rb +201 -0
  8. data/lib/async/grpc/xds/control_plane.rb +143 -0
  9. data/lib/async/grpc/xds/discovery_client.rb +356 -0
  10. data/lib/async/grpc/xds/health_checker.rb +88 -0
  11. data/lib/async/grpc/xds/load_balancer.rb +196 -0
  12. data/lib/async/grpc/xds/resource_builder.rb +138 -0
  13. data/lib/async/grpc/xds/resource_cache.rb +55 -0
  14. data/lib/async/grpc/xds/resources.rb +270 -0
  15. data/lib/async/grpc/xds/server.rb +34 -0
  16. data/lib/async/grpc/xds/service.rb +117 -0
  17. data/lib/async/grpc/xds/version.rb +12 -0
  18. data/lib/async/grpc/xds.rb +42 -0
  19. data/lib/envoy/annotations/deprecation_pb.rb +19 -0
  20. data/lib/envoy/config/cluster/v3/circuit_breaker_pb.rb +31 -0
  21. data/lib/envoy/config/cluster/v3/cluster_pb.rb +80 -0
  22. data/lib/envoy/config/cluster/v3/filter_pb.rb +28 -0
  23. data/lib/envoy/config/cluster/v3/outlier_detection_pb.rb +29 -0
  24. data/lib/envoy/config/core/v3/address_pb.rb +38 -0
  25. data/lib/envoy/config/core/v3/backoff_pb.rb +27 -0
  26. data/lib/envoy/config/core/v3/base_pb.rb +68 -0
  27. data/lib/envoy/config/core/v3/cel_pb.rb +24 -0
  28. data/lib/envoy/config/core/v3/config_source_pb.rb +42 -0
  29. data/lib/envoy/config/core/v3/event_service_config_pb.rb +27 -0
  30. data/lib/envoy/config/core/v3/extension_pb.rb +26 -0
  31. data/lib/envoy/config/core/v3/grpc_method_list_pb.rb +27 -0
  32. data/lib/envoy/config/core/v3/grpc_service_pb.rb +45 -0
  33. data/lib/envoy/config/core/v3/health_check_pb.rb +47 -0
  34. data/lib/envoy/config/core/v3/http_service_pb.rb +27 -0
  35. data/lib/envoy/config/core/v3/http_uri_pb.rb +27 -0
  36. data/lib/envoy/config/core/v3/protocol_pb.rb +51 -0
  37. data/lib/envoy/config/core/v3/proxy_protocol_pb.rb +31 -0
  38. data/lib/envoy/config/core/v3/resolver_pb.rb +27 -0
  39. data/lib/envoy/config/core/v3/socket_cmsg_headers_pb.rb +25 -0
  40. data/lib/envoy/config/core/v3/socket_option_pb.rb +31 -0
  41. data/lib/envoy/config/core/v3/substitution_format_string_pb.rb +30 -0
  42. data/lib/envoy/config/core/v3/udp_socket_config_pb.rb +26 -0
  43. data/lib/envoy/config/endpoint/v3/endpoint_components_pb.rb +40 -0
  44. data/lib/envoy/config/endpoint/v3/endpoint_pb.rb +32 -0
  45. data/lib/envoy/config/endpoint/v3/load_report_pb.rb +36 -0
  46. data/lib/envoy/service/discovery/v3/ads_pb.rb +26 -0
  47. data/lib/envoy/service/discovery/v3/aggregated_discovery_service.rb +64 -0
  48. data/lib/envoy/service/discovery/v3/discovery_pb.rb +42 -0
  49. data/lib/envoy/type/matcher/v3/address_pb.rb +25 -0
  50. data/lib/envoy/type/matcher/v3/filter_state_pb.rb +27 -0
  51. data/lib/envoy/type/matcher/v3/http_inputs_pb.rb +29 -0
  52. data/lib/envoy/type/matcher/v3/metadata_pb.rb +28 -0
  53. data/lib/envoy/type/matcher/v3/node_pb.rb +27 -0
  54. data/lib/envoy/type/matcher/v3/number_pb.rb +27 -0
  55. data/lib/envoy/type/matcher/v3/path_pb.rb +27 -0
  56. data/lib/envoy/type/matcher/v3/regex_pb.rb +30 -0
  57. data/lib/envoy/type/matcher/v3/status_code_input_pb.rb +25 -0
  58. data/lib/envoy/type/matcher/v3/string_pb.rb +29 -0
  59. data/lib/envoy/type/matcher/v3/struct_pb.rb +28 -0
  60. data/lib/envoy/type/matcher/v3/value_pb.rb +31 -0
  61. data/lib/envoy/type/metadata/v3/metadata_pb.rb +32 -0
  62. data/lib/envoy/type/v3/hash_policy_pb.rb +26 -0
  63. data/lib/envoy/type/v3/http_pb.rb +22 -0
  64. data/lib/envoy/type/v3/http_status_pb.rb +25 -0
  65. data/lib/envoy/type/v3/percent_pb.rb +26 -0
  66. data/lib/envoy/type/v3/range_pb.rb +25 -0
  67. data/lib/envoy/type/v3/ratelimit_strategy_pb.rb +28 -0
  68. data/lib/envoy/type/v3/ratelimit_unit_pb.rb +22 -0
  69. data/lib/envoy/type/v3/semantic_version_pb.rb +23 -0
  70. data/lib/envoy/type/v3/token_bucket_pb.rb +26 -0
  71. data/lib/envoy.rb +83 -0
  72. data/lib/google/protobuf/any_pb.rb +18 -0
  73. data/lib/google/protobuf/duration_pb.rb +18 -0
  74. data/lib/google/protobuf/empty_pb.rb +18 -0
  75. data/lib/google/protobuf/struct_pb.rb +21 -0
  76. data/lib/google/protobuf/timestamp_pb.rb +18 -0
  77. data/lib/google/protobuf/wrappers_pb.rb +26 -0
  78. data/lib/google/rpc/status_pb.rb +20 -0
  79. data/lib/udpa/annotations/migrate_pb.rb +22 -0
  80. data/lib/udpa/annotations/security_pb.rb +23 -0
  81. data/lib/udpa/annotations/sensitive_pb.rb +19 -0
  82. data/lib/udpa/annotations/status_pb.rb +21 -0
  83. data/lib/udpa/annotations/versioning_pb.rb +20 -0
  84. data/lib/validate/validate_pb.rb +43 -0
  85. data/lib/xds/annotations/v3/status_pb.rb +26 -0
  86. data/lib/xds/core/v3/authority_pb.rb +23 -0
  87. data/lib/xds/core/v3/cidr_pb.rb +24 -0
  88. data/lib/xds/core/v3/collection_entry_pb.rb +26 -0
  89. data/lib/xds/core/v3/context_params_pb.rb +22 -0
  90. data/lib/xds/core/v3/extension_pb.rb +23 -0
  91. data/lib/xds/core/v3/resource_locator_pb.rb +26 -0
  92. data/lib/xds/core/v3/resource_name_pb.rb +24 -0
  93. data/lib/xds/core/v3/resource_pb.rb +24 -0
  94. data/lib/xds/type/matcher/v3/domain_pb.rb +27 -0
  95. data/lib/xds/type/matcher/v3/http_inputs_pb.rb +22 -0
  96. data/lib/xds/type/matcher/v3/ip_pb.rb +28 -0
  97. data/lib/xds/type/matcher/v3/matcher_pb.rb +34 -0
  98. data/lib/xds/type/matcher/v3/range_pb.rb +31 -0
  99. data/lib/xds/type/matcher/v3/regex_pb.rb +25 -0
  100. data/lib/xds/type/matcher/v3/string_pb.rb +27 -0
  101. data/license.md +21 -0
  102. data/plan.md +156 -0
  103. data/proto/envoy/annotations/deprecation.proto +34 -0
  104. data/proto/envoy/annotations/resource.proto +19 -0
  105. data/proto/envoy/config/README.md +3 -0
  106. data/proto/envoy/config/cluster/v3/BUILD +18 -0
  107. data/proto/envoy/config/cluster/v3/circuit_breaker.proto +121 -0
  108. data/proto/envoy/config/cluster/v3/cluster.proto +1407 -0
  109. data/proto/envoy/config/cluster/v3/filter.proto +40 -0
  110. data/proto/envoy/config/cluster/v3/outlier_detection.proto +180 -0
  111. data/proto/envoy/config/core/v3/BUILD +16 -0
  112. data/proto/envoy/config/core/v3/address.proto +214 -0
  113. data/proto/envoy/config/core/v3/backoff.proto +37 -0
  114. data/proto/envoy/config/core/v3/base.proto +662 -0
  115. data/proto/envoy/config/core/v3/cel.proto +63 -0
  116. data/proto/envoy/config/core/v3/config_source.proto +283 -0
  117. data/proto/envoy/config/core/v3/event_service_config.proto +29 -0
  118. data/proto/envoy/config/core/v3/extension.proto +32 -0
  119. data/proto/envoy/config/core/v3/grpc_method_list.proto +33 -0
  120. data/proto/envoy/config/core/v3/grpc_service.proto +355 -0
  121. data/proto/envoy/config/core/v3/health_check.proto +443 -0
  122. data/proto/envoy/config/core/v3/http_service.proto +35 -0
  123. data/proto/envoy/config/core/v3/http_uri.proto +58 -0
  124. data/proto/envoy/config/core/v3/protocol.proto +807 -0
  125. data/proto/envoy/config/core/v3/proxy_protocol.proto +114 -0
  126. data/proto/envoy/config/core/v3/resolver.proto +36 -0
  127. data/proto/envoy/config/core/v3/socket_cmsg_headers.proto +28 -0
  128. data/proto/envoy/config/core/v3/socket_option.proto +108 -0
  129. data/proto/envoy/config/core/v3/substitution_format_string.proto +136 -0
  130. data/proto/envoy/config/core/v3/udp_socket_config.proto +32 -0
  131. data/proto/envoy/config/endpoint/v3/BUILD +16 -0
  132. data/proto/envoy/config/endpoint/v3/endpoint.proto +137 -0
  133. data/proto/envoy/config/endpoint/v3/endpoint_components.proto +229 -0
  134. data/proto/envoy/config/endpoint/v3/load_report.proto +220 -0
  135. data/proto/envoy/config/listener/v3/BUILD +18 -0
  136. data/proto/envoy/config/listener/v3/api_listener.proto +34 -0
  137. data/proto/envoy/config/listener/v3/listener.proto +455 -0
  138. data/proto/envoy/config/listener/v3/listener_components.proto +353 -0
  139. data/proto/envoy/config/listener/v3/quic_config.proto +108 -0
  140. data/proto/envoy/config/listener/v3/udp_listener_config.proto +52 -0
  141. data/proto/envoy/config/route/v3/BUILD +19 -0
  142. data/proto/envoy/config/route/v3/route.proto +172 -0
  143. data/proto/envoy/config/route/v3/route_components.proto +2918 -0
  144. data/proto/envoy/config/route/v3/scoped_route.proto +133 -0
  145. data/proto/envoy/extensions/transport_sockets/tls/v3/BUILD +14 -0
  146. data/proto/envoy/extensions/transport_sockets/tls/v3/cert.proto +12 -0
  147. data/proto/envoy/extensions/transport_sockets/tls/v3/common.proto +597 -0
  148. data/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto +61 -0
  149. data/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto +366 -0
  150. data/proto/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.proto +67 -0
  151. data/proto/envoy/service/README.md +3 -0
  152. data/proto/envoy/service/discovery/v3/BUILD +13 -0
  153. data/proto/envoy/service/discovery/v3/ads.proto +44 -0
  154. data/proto/envoy/service/discovery/v3/discovery.proto +443 -0
  155. data/proto/envoy/type/BUILD +9 -0
  156. data/proto/envoy/type/hash_policy.proto +28 -0
  157. data/proto/envoy/type/http.proto +24 -0
  158. data/proto/envoy/type/http_status.proto +140 -0
  159. data/proto/envoy/type/matcher/v3/address.proto +22 -0
  160. data/proto/envoy/type/matcher/v3/filter_state.proto +33 -0
  161. data/proto/envoy/type/matcher/v3/http_inputs.proto +71 -0
  162. data/proto/envoy/type/matcher/v3/metadata.proto +110 -0
  163. data/proto/envoy/type/matcher/v3/node.proto +29 -0
  164. data/proto/envoy/type/matcher/v3/number.proto +33 -0
  165. data/proto/envoy/type/matcher/v3/path.proto +31 -0
  166. data/proto/envoy/type/matcher/v3/regex.proto +97 -0
  167. data/proto/envoy/type/matcher/v3/status_code_input.proto +23 -0
  168. data/proto/envoy/type/matcher/v3/string.proto +94 -0
  169. data/proto/envoy/type/matcher/v3/struct.proto +91 -0
  170. data/proto/envoy/type/matcher/v3/value.proto +80 -0
  171. data/proto/envoy/type/metadata/v3/metadata.proto +117 -0
  172. data/proto/envoy/type/percent.proto +52 -0
  173. data/proto/envoy/type/range.proto +43 -0
  174. data/proto/envoy/type/semantic_version.proto +24 -0
  175. data/proto/envoy/type/token_bucket.proto +36 -0
  176. data/proto/envoy/type/v3/BUILD +12 -0
  177. data/proto/envoy/type/v3/hash_policy.proto +43 -0
  178. data/proto/envoy/type/v3/http.proto +24 -0
  179. data/proto/envoy/type/v3/http_status.proto +199 -0
  180. data/proto/envoy/type/v3/percent.proto +57 -0
  181. data/proto/envoy/type/v3/range.proto +50 -0
  182. data/proto/envoy/type/v3/ratelimit_strategy.proto +79 -0
  183. data/proto/envoy/type/v3/ratelimit_unit.proto +37 -0
  184. data/proto/envoy/type/v3/semantic_version.proto +27 -0
  185. data/proto/envoy/type/v3/token_bucket.proto +39 -0
  186. data/proto/google/protobuf/any.proto +162 -0
  187. data/proto/google/protobuf/duration.proto +115 -0
  188. data/proto/google/protobuf/empty.proto +51 -0
  189. data/proto/google/protobuf/struct.proto +95 -0
  190. data/proto/google/protobuf/timestamp.proto +145 -0
  191. data/proto/google/protobuf/wrappers.proto +157 -0
  192. data/proto/google/rpc/status.proto +47 -0
  193. data/proto/readme.md +70 -0
  194. data/proto/udpa/annotations/migrate.proto +49 -0
  195. data/proto/udpa/annotations/security.proto +31 -0
  196. data/proto/udpa/annotations/sensitive.proto +14 -0
  197. data/proto/udpa/annotations/status.proto +34 -0
  198. data/proto/udpa/annotations/versioning.proto +17 -0
  199. data/proto/validate/validate.proto +862 -0
  200. data/proto/xds/annotations/v3/migrate.proto +46 -0
  201. data/proto/xds/annotations/v3/security.proto +30 -0
  202. data/proto/xds/annotations/v3/sensitive.proto +16 -0
  203. data/proto/xds/annotations/v3/status.proto +59 -0
  204. data/proto/xds/annotations/v3/versioning.proto +20 -0
  205. data/proto/xds/core/v3/authority.proto +22 -0
  206. data/proto/xds/core/v3/cidr.proto +25 -0
  207. data/proto/xds/core/v3/collection_entry.proto +55 -0
  208. data/proto/xds/core/v3/context_params.proto +23 -0
  209. data/proto/xds/core/v3/extension.proto +26 -0
  210. data/proto/xds/core/v3/resource.proto +29 -0
  211. data/proto/xds/core/v3/resource_locator.proto +118 -0
  212. data/proto/xds/core/v3/resource_name.proto +42 -0
  213. data/proto/xds/type/matcher/v3/cel.proto +37 -0
  214. data/proto/xds/type/matcher/v3/domain.proto +46 -0
  215. data/proto/xds/type/matcher/v3/http_inputs.proto +23 -0
  216. data/proto/xds/type/matcher/v3/ip.proto +53 -0
  217. data/proto/xds/type/matcher/v3/matcher.proto +144 -0
  218. data/proto/xds/type/matcher/v3/range.proto +69 -0
  219. data/proto/xds/type/matcher/v3/regex.proto +46 -0
  220. data/proto/xds/type/matcher/v3/string.proto +71 -0
  221. data/proto/xds/type/v3/cel.proto +77 -0
  222. data/proto/xds/type/v3/range.proto +40 -0
  223. data/proto/xds/type/v3/typed_struct.proto +44 -0
  224. data/readme.md +37 -0
  225. data/releases.md +5 -0
  226. data/xds/Dockerfile.backend +24 -0
  227. data/xds/Dockerfile.control-plane +22 -0
  228. data/xds/backend_server.rb +68 -0
  229. data/xds/docker-compose.yaml +89 -0
  230. data/xds/go.mod +22 -0
  231. data/xds/go.sum +82 -0
  232. data/xds/readme.md +122 -0
  233. data/xds/test/async/grpc/xds/client.rb +294 -0
  234. data/xds/test/async/grpc/xds/control_plane.rb +94 -0
  235. data/xds/test_server.go +355 -0
  236. data/xds/update_protos.sh +123 -0
  237. data.tar.gz.sig +0 -0
  238. metadata +386 -0
  239. metadata.gz.sig +2 -0
@@ -0,0 +1,229 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.endpoint.v3;
4
+
5
+ import "envoy/config/core/v3/address.proto";
6
+ import "envoy/config/core/v3/base.proto";
7
+ import "envoy/config/core/v3/config_source.proto";
8
+ import "envoy/config/core/v3/health_check.proto";
9
+
10
+ import "google/protobuf/wrappers.proto";
11
+
12
+ import "xds/core/v3/collection_entry.proto";
13
+
14
+ import "envoy/annotations/deprecation.proto";
15
+ import "udpa/annotations/status.proto";
16
+ import "udpa/annotations/versioning.proto";
17
+ import "validate/validate.proto";
18
+
19
+ option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
20
+ option java_outer_classname = "EndpointComponentsProto";
21
+ option java_multiple_files = true;
22
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
23
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
24
+
25
+ // [#protodoc-title: Endpoints]
26
+
27
+ // Upstream host identifier.
28
+ message Endpoint {
29
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.Endpoint";
30
+
31
+ // The optional health check configuration.
32
+ message HealthCheckConfig {
33
+ option (udpa.annotations.versioning).previous_message_type =
34
+ "envoy.api.v2.endpoint.Endpoint.HealthCheckConfig";
35
+
36
+ // Optional alternative health check port value.
37
+ //
38
+ // By default the health check address port of an upstream host is the same
39
+ // as the host's serving address port. This provides an alternative health
40
+ // check port. Setting this with a non-zero value allows an upstream host
41
+ // to have different health check address port.
42
+ uint32 port_value = 1 [(validate.rules).uint32 = {lte: 65535}];
43
+
44
+ // By default, the host header for L7 health checks is controlled by cluster level configuration
45
+ // (see: :ref:`host <envoy_v3_api_field_config.core.v3.HealthCheck.HttpHealthCheck.host>` and
46
+ // :ref:`authority <envoy_v3_api_field_config.core.v3.HealthCheck.GrpcHealthCheck.authority>`). Setting this
47
+ // to a non-empty value allows overriding the cluster level configuration for a specific
48
+ // endpoint.
49
+ string hostname = 2;
50
+
51
+ // Optional alternative health check host address.
52
+ //
53
+ // .. attention::
54
+ //
55
+ // The form of the health check host address is expected to be a direct IP address.
56
+ core.v3.Address address = 3;
57
+
58
+ // Optional flag to control if perform active health check for this endpoint.
59
+ // Active health check is enabled by default if there is a health checker.
60
+ bool disable_active_health_check = 4;
61
+ }
62
+
63
+ message AdditionalAddress {
64
+ // Additional address that is associated with the endpoint.
65
+ core.v3.Address address = 1;
66
+ }
67
+
68
+ // The upstream host address.
69
+ //
70
+ // .. attention::
71
+ //
72
+ // The form of host address depends on the given cluster type. For STATIC or EDS,
73
+ // it is expected to be a direct IP address (or something resolvable by the
74
+ // specified :ref:`resolver <envoy_v3_api_field_config.core.v3.SocketAddress.resolver_name>`
75
+ // in the Address). For LOGICAL or STRICT DNS, it is expected to be hostname,
76
+ // and will be resolved via DNS.
77
+ core.v3.Address address = 1;
78
+
79
+ // The optional health check configuration is used as configuration for the
80
+ // health checker to contact the health checked host.
81
+ //
82
+ // .. attention::
83
+ //
84
+ // This takes into effect only for upstream clusters with
85
+ // :ref:`active health checking <arch_overview_health_checking>` enabled.
86
+ HealthCheckConfig health_check_config = 2;
87
+
88
+ // The hostname associated with this endpoint. This hostname is not used for routing or address
89
+ // resolution. If provided, it will be associated with the endpoint, and can be used for features
90
+ // that require a hostname, like
91
+ // :ref:`auto_host_rewrite <envoy_v3_api_field_config.route.v3.RouteAction.auto_host_rewrite>`.
92
+ string hostname = 3;
93
+
94
+ // An ordered list of addresses that together with ``address`` comprise the
95
+ // list of addresses for an endpoint. The address given in the ``address`` is
96
+ // prepended to this list. It is assumed that the list must already be
97
+ // sorted by preference order of the addresses. This will only be supported
98
+ // for STATIC and EDS clusters.
99
+ repeated AdditionalAddress additional_addresses = 4;
100
+ }
101
+
102
+ // An Endpoint that Envoy can route traffic to.
103
+ // [#next-free-field: 6]
104
+ message LbEndpoint {
105
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.LbEndpoint";
106
+
107
+ // Upstream host identifier or a named reference.
108
+ oneof host_identifier {
109
+ Endpoint endpoint = 1;
110
+
111
+ // [#not-implemented-hide:]
112
+ string endpoint_name = 5;
113
+ }
114
+
115
+ // Optional health status when known and supplied by EDS server.
116
+ core.v3.HealthStatus health_status = 2;
117
+
118
+ // The endpoint metadata specifies values that may be used by the load
119
+ // balancer to select endpoints in a cluster for a given request. The filter
120
+ // name should be specified as ``envoy.lb``. An example boolean key-value pair
121
+ // is ``canary``, providing the optional canary status of the upstream host.
122
+ // This may be matched against in a route's
123
+ // :ref:`RouteAction <envoy_v3_api_msg_config.route.v3.RouteAction>` metadata_match field
124
+ // to subset the endpoints considered in cluster load balancing.
125
+ core.v3.Metadata metadata = 3;
126
+
127
+ // The optional load balancing weight of the upstream host; at least 1.
128
+ // Envoy uses the load balancing weight in some of the built in load
129
+ // balancers. The load balancing weight for an endpoint is divided by the sum
130
+ // of the weights of all endpoints in the endpoint's locality to produce a
131
+ // percentage of traffic for the endpoint. This percentage is then further
132
+ // weighted by the endpoint's locality's load balancing weight from
133
+ // LocalityLbEndpoints. If unspecified, will be treated as 1. The sum
134
+ // of the weights of all endpoints in the endpoint's locality must not
135
+ // exceed uint32_t maximal value (4294967295).
136
+ google.protobuf.UInt32Value load_balancing_weight = 4 [(validate.rules).uint32 = {gte: 1}];
137
+ }
138
+
139
+ // LbEndpoint list collection. Entries are `LbEndpoint` resources or references.
140
+ // [#not-implemented-hide:]
141
+ message LbEndpointCollection {
142
+ xds.core.v3.CollectionEntry entries = 1;
143
+ }
144
+
145
+ // A configuration for an LEDS collection.
146
+ message LedsClusterLocalityConfig {
147
+ // Configuration for the source of LEDS updates for a Locality.
148
+ core.v3.ConfigSource leds_config = 1;
149
+
150
+ // The name of the LbEndpoint collection resource.
151
+ //
152
+ // If the name ends in ``/*``, it indicates an LbEndpoint glob collection,
153
+ // which is supported only in the xDS incremental protocol variants.
154
+ // Otherwise, it indicates an LbEndpointCollection list collection.
155
+ //
156
+ // Envoy currently supports only glob collections.
157
+ string leds_collection_name = 2;
158
+ }
159
+
160
+ // A group of endpoints belonging to a Locality.
161
+ // One can have multiple LocalityLbEndpoints for a locality, but only if
162
+ // they have different priorities.
163
+ // [#next-free-field: 10]
164
+ message LocalityLbEndpoints {
165
+ option (udpa.annotations.versioning).previous_message_type =
166
+ "envoy.api.v2.endpoint.LocalityLbEndpoints";
167
+
168
+ // [#not-implemented-hide:]
169
+ // A list of endpoints of a specific locality.
170
+ message LbEndpointList {
171
+ repeated LbEndpoint lb_endpoints = 1;
172
+ }
173
+
174
+ // Identifies location of where the upstream hosts run.
175
+ core.v3.Locality locality = 1;
176
+
177
+ // Metadata to provide additional information about the locality endpoints in aggregate.
178
+ core.v3.Metadata metadata = 9;
179
+
180
+ // The group of endpoints belonging to the locality specified.
181
+ // This is ignored if :ref:`leds_cluster_locality_config
182
+ // <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.leds_cluster_locality_config>` is set.
183
+ repeated LbEndpoint lb_endpoints = 2;
184
+
185
+ oneof lb_config {
186
+ // [#not-implemented-hide:]
187
+ // Not implemented and deprecated.
188
+ LbEndpointList load_balancer_endpoints = 7
189
+ [deprecated = true, (envoy.annotations.deprecated_at_minor_version) = "3.0"];
190
+
191
+ // LEDS Configuration for the current locality.
192
+ // If this is set, the :ref:`lb_endpoints
193
+ // <envoy_v3_api_field_config.endpoint.v3.LocalityLbEndpoints.lb_endpoints>`
194
+ // field is ignored.
195
+ LedsClusterLocalityConfig leds_cluster_locality_config = 8;
196
+ }
197
+
198
+ // Optional: Per priority/region/zone/sub_zone weight; at least 1. The load
199
+ // balancing weight for a locality is divided by the sum of the weights of all
200
+ // localities at the same priority level to produce the effective percentage
201
+ // of traffic for the locality. The sum of the weights of all localities at
202
+ // the same priority level must not exceed uint32_t maximal value (4294967295).
203
+ //
204
+ // Locality weights are only considered when :ref:`locality weighted load
205
+ // balancing <arch_overview_load_balancing_locality_weighted_lb>` is
206
+ // configured. These weights are ignored otherwise. If no weights are
207
+ // specified when locality weighted load balancing is enabled, the locality is
208
+ // assigned no load.
209
+ google.protobuf.UInt32Value load_balancing_weight = 3 [(validate.rules).uint32 = {gte: 1}];
210
+
211
+ // Optional: the priority for this LocalityLbEndpoints. If unspecified this will
212
+ // default to the highest priority (0).
213
+ //
214
+ // Under usual circumstances, Envoy will only select endpoints for the highest
215
+ // priority (0). In the event that enough endpoints for a particular priority are
216
+ // unavailable/unhealthy, Envoy will fail over to selecting endpoints for the
217
+ // next highest priority group. Read more at :ref:`priority levels <arch_overview_load_balancing_priority_levels>`.
218
+ //
219
+ // Priorities should range from 0 (highest) to N (lowest) without skipping.
220
+ uint32 priority = 5 [(validate.rules).uint32 = {lte: 128}];
221
+
222
+ // Optional: Per locality proximity value which indicates how close this
223
+ // locality is from the source locality. This value only provides ordering
224
+ // information (lower the value, closer it is to the source locality).
225
+ // This will be consumed by load balancing schemes that need proximity order
226
+ // to determine where to route the requests.
227
+ // [#not-implemented-hide:]
228
+ google.protobuf.UInt32Value proximity = 6;
229
+ }
@@ -0,0 +1,220 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.endpoint.v3;
4
+
5
+ import "envoy/config/core/v3/address.proto";
6
+ import "envoy/config/core/v3/base.proto";
7
+
8
+ import "google/protobuf/duration.proto";
9
+ import "google/protobuf/struct.proto";
10
+
11
+ import "xds/annotations/v3/status.proto";
12
+
13
+ import "udpa/annotations/status.proto";
14
+ import "udpa/annotations/versioning.proto";
15
+ import "validate/validate.proto";
16
+
17
+ option java_package = "io.envoyproxy.envoy.config.endpoint.v3";
18
+ option java_outer_classname = "LoadReportProto";
19
+ option java_multiple_files = true;
20
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3";
21
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
22
+
23
+ // [#protodoc-title: Load Report]
24
+
25
+ // These are stats Envoy reports to the management server at a frequency defined by
26
+ // :ref:`LoadStatsResponse.load_reporting_interval<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.load_reporting_interval>`.
27
+ // Stats per upstream region/zone and optionally per subzone.
28
+ // [#next-free-field: 15]
29
+ message UpstreamLocalityStats {
30
+ option (udpa.annotations.versioning).previous_message_type =
31
+ "envoy.api.v2.endpoint.UpstreamLocalityStats";
32
+
33
+ // Name of zone, region and optionally endpoint group these metrics were
34
+ // collected from. Zone and region names could be empty if unknown.
35
+ core.v3.Locality locality = 1;
36
+
37
+ // The total number of requests successfully completed by the endpoints in the
38
+ // locality.
39
+ uint64 total_successful_requests = 2;
40
+
41
+ // The total number of unfinished requests. A request can be an HTTP request
42
+ // or a TCP connection for a TCP connection pool.
43
+ uint64 total_requests_in_progress = 3;
44
+
45
+ // The total number of requests that failed due to errors at the endpoint,
46
+ // aggregated over all endpoints in the locality.
47
+ uint64 total_error_requests = 4;
48
+
49
+ // The total number of requests that were issued by this Envoy since
50
+ // the last report. This information is aggregated over all the
51
+ // upstream endpoints in the locality. A request can be an HTTP request
52
+ // or a TCP connection for a TCP connection pool.
53
+ uint64 total_issued_requests = 8;
54
+
55
+ // The total number of connections in an established state at the time of the
56
+ // report. This field is aggregated over all the upstream endpoints in the
57
+ // locality.
58
+ // In Envoy, this information may be based on ``upstream_cx_active metric``.
59
+ // [#not-implemented-hide:]
60
+ uint64 total_active_connections = 9 [(xds.annotations.v3.field_status).work_in_progress = true];
61
+
62
+ // The total number of connections opened since the last report.
63
+ // This field is aggregated over all the upstream endpoints in the locality.
64
+ // In Envoy, this information may be based on ``upstream_cx_total`` metric
65
+ // compared to itself between start and end of an interval, i.e.
66
+ // ``upstream_cx_total``(now) - ``upstream_cx_total``(now -
67
+ // load_report_interval).
68
+ // [#not-implemented-hide:]
69
+ uint64 total_new_connections = 10 [(xds.annotations.v3.field_status).work_in_progress = true];
70
+
71
+ // The total number of connection failures since the last report.
72
+ // This field is aggregated over all the upstream endpoints in the locality.
73
+ // In Envoy, this information may be based on ``upstream_cx_connect_fail``
74
+ // metric compared to itself between start and end of an interval, i.e.
75
+ // ``upstream_cx_connect_fail``(now) - ``upstream_cx_connect_fail``(now -
76
+ // load_report_interval).
77
+ // [#not-implemented-hide:]
78
+ uint64 total_fail_connections = 11 [(xds.annotations.v3.field_status).work_in_progress = true];
79
+
80
+ // CPU utilization stats for multi-dimensional load balancing.
81
+ // This typically comes from endpoint metrics reported via ORCA.
82
+ UnnamedEndpointLoadMetricStats cpu_utilization = 12;
83
+
84
+ // Memory utilization for multi-dimensional load balancing.
85
+ // This typically comes from endpoint metrics reported via ORCA.
86
+ UnnamedEndpointLoadMetricStats mem_utilization = 13;
87
+
88
+ // Blended application-defined utilization for multi-dimensional load balancing.
89
+ // This typically comes from endpoint metrics reported via ORCA.
90
+ UnnamedEndpointLoadMetricStats application_utilization = 14;
91
+
92
+ // Named stats for multi-dimensional load balancing.
93
+ // These typically come from endpoint metrics reported via ORCA.
94
+ repeated EndpointLoadMetricStats load_metric_stats = 5;
95
+
96
+ // Endpoint granularity stats information for this locality. This information
97
+ // is populated if the Server requests it by setting
98
+ // :ref:`LoadStatsResponse.report_endpoint_granularity<envoy_v3_api_field_service.load_stats.v3.LoadStatsResponse.report_endpoint_granularity>`.
99
+ repeated UpstreamEndpointStats upstream_endpoint_stats = 7;
100
+
101
+ // [#not-implemented-hide:] The priority of the endpoint group these metrics
102
+ // were collected from.
103
+ uint32 priority = 6;
104
+ }
105
+
106
+ // [#next-free-field: 8]
107
+ message UpstreamEndpointStats {
108
+ option (udpa.annotations.versioning).previous_message_type =
109
+ "envoy.api.v2.endpoint.UpstreamEndpointStats";
110
+
111
+ // Upstream host address.
112
+ core.v3.Address address = 1;
113
+
114
+ // Opaque and implementation dependent metadata of the
115
+ // endpoint. Envoy will pass this directly to the management server.
116
+ google.protobuf.Struct metadata = 6;
117
+
118
+ // The total number of requests successfully completed by the endpoints in the
119
+ // locality. These include non-5xx responses for HTTP, where errors
120
+ // originate at the client and the endpoint responded successfully. For gRPC,
121
+ // the grpc-status values are those not covered by total_error_requests below.
122
+ uint64 total_successful_requests = 2;
123
+
124
+ // The total number of unfinished requests for this endpoint.
125
+ uint64 total_requests_in_progress = 3;
126
+
127
+ // The total number of requests that failed due to errors at the endpoint.
128
+ // For HTTP these are responses with 5xx status codes and for gRPC the
129
+ // grpc-status values:
130
+ //
131
+ // - DeadlineExceeded
132
+ // - Unimplemented
133
+ // - Internal
134
+ // - Unavailable
135
+ // - Unknown
136
+ // - DataLoss
137
+ uint64 total_error_requests = 4;
138
+
139
+ // The total number of requests that were issued to this endpoint
140
+ // since the last report. A single TCP connection, HTTP or gRPC
141
+ // request or stream is counted as one request.
142
+ uint64 total_issued_requests = 7;
143
+
144
+ // Stats for multi-dimensional load balancing.
145
+ repeated EndpointLoadMetricStats load_metric_stats = 5;
146
+ }
147
+
148
+ message EndpointLoadMetricStats {
149
+ option (udpa.annotations.versioning).previous_message_type =
150
+ "envoy.api.v2.endpoint.EndpointLoadMetricStats";
151
+
152
+ // Name of the metric; may be empty.
153
+ string metric_name = 1;
154
+
155
+ // Number of calls that finished and included this metric.
156
+ uint64 num_requests_finished_with_metric = 2;
157
+
158
+ // Sum of metric values across all calls that finished with this metric for
159
+ // load_reporting_interval.
160
+ double total_metric_value = 3;
161
+ }
162
+
163
+ // Same as EndpointLoadMetricStats, except without the metric_name field.
164
+ message UnnamedEndpointLoadMetricStats {
165
+ // Number of calls that finished and included this metric.
166
+ uint64 num_requests_finished_with_metric = 1;
167
+
168
+ // Sum of metric values across all calls that finished with this metric for
169
+ // load_reporting_interval.
170
+ double total_metric_value = 2;
171
+ }
172
+
173
+ // Per cluster load stats. Envoy reports these stats a management server in a
174
+ // :ref:`LoadStatsRequest<envoy_v3_api_msg_service.load_stats.v3.LoadStatsRequest>`
175
+ // Next ID: 7
176
+ // [#next-free-field: 7]
177
+ message ClusterStats {
178
+ option (udpa.annotations.versioning).previous_message_type = "envoy.api.v2.endpoint.ClusterStats";
179
+
180
+ message DroppedRequests {
181
+ option (udpa.annotations.versioning).previous_message_type =
182
+ "envoy.api.v2.endpoint.ClusterStats.DroppedRequests";
183
+
184
+ // Identifier for the policy specifying the drop.
185
+ string category = 1 [(validate.rules).string = {min_len: 1}];
186
+
187
+ // Total number of deliberately dropped requests for the category.
188
+ uint64 dropped_count = 2;
189
+ }
190
+
191
+ // The name of the cluster.
192
+ string cluster_name = 1 [(validate.rules).string = {min_len: 1}];
193
+
194
+ // The eds_cluster_config service_name of the cluster.
195
+ // It's possible that two clusters send the same service_name to EDS,
196
+ // in that case, the management server is supposed to do aggregation on the load reports.
197
+ string cluster_service_name = 6;
198
+
199
+ // Need at least one.
200
+ repeated UpstreamLocalityStats upstream_locality_stats = 2
201
+ [(validate.rules).repeated = {min_items: 1}];
202
+
203
+ // Cluster-level stats such as total_successful_requests may be computed by
204
+ // summing upstream_locality_stats. In addition, below there are additional
205
+ // cluster-wide stats.
206
+ //
207
+ // The total number of dropped requests. This covers requests
208
+ // deliberately dropped by the drop_overload policy and circuit breaking.
209
+ uint64 total_dropped_requests = 3;
210
+
211
+ // Information about deliberately dropped requests for each category specified
212
+ // in the DropOverload policy.
213
+ repeated DroppedRequests dropped_requests = 5;
214
+
215
+ // Period over which the actual load report occurred. This will be guaranteed to include every
216
+ // request reported. Due to system load and delays between the ``LoadStatsRequest`` sent from Envoy
217
+ // and the ``LoadStatsResponse`` message sent from the management server, this may be longer than
218
+ // the requested load reporting interval in the ``LoadStatsResponse``.
219
+ google.protobuf.Duration load_report_interval = 4;
220
+ }
@@ -0,0 +1,18 @@
1
+ # DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py.
2
+
3
+ load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package")
4
+
5
+ licenses(["notice"]) # Apache 2
6
+
7
+ api_proto_package(
8
+ deps = [
9
+ "//envoy/annotations:pkg",
10
+ "//envoy/config/accesslog/v3:pkg",
11
+ "//envoy/config/core/v3:pkg",
12
+ "//envoy/type/v3:pkg",
13
+ "@com_github_cncf_xds//udpa/annotations:pkg",
14
+ "@com_github_cncf_xds//xds/annotations/v3:pkg",
15
+ "@com_github_cncf_xds//xds/core/v3:pkg",
16
+ "@com_github_cncf_xds//xds/type/matcher/v3:pkg",
17
+ ],
18
+ )
@@ -0,0 +1,34 @@
1
+ syntax = "proto3";
2
+
3
+ package envoy.config.listener.v3;
4
+
5
+ import "google/protobuf/any.proto";
6
+
7
+ import "udpa/annotations/status.proto";
8
+ import "udpa/annotations/versioning.proto";
9
+
10
+ option java_package = "io.envoyproxy.envoy.config.listener.v3";
11
+ option java_outer_classname = "ApiListenerProto";
12
+ option java_multiple_files = true;
13
+ option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/listener/v3;listenerv3";
14
+ option (udpa.annotations.file_status).package_version_status = ACTIVE;
15
+
16
+ // [#protodoc-title: API listener]
17
+
18
+ // Describes a type of API listener, which is used in non-proxy clients. The type of API
19
+ // exposed to the non-proxy application depends on the type of API listener.
20
+ message ApiListener {
21
+ option (udpa.annotations.versioning).previous_message_type =
22
+ "envoy.config.listener.v2.ApiListener";
23
+
24
+ // The type in this field determines the type of API listener. At present, the following
25
+ // types are supported:
26
+ // envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager (HTTP)
27
+ // envoy.extensions.filters.network.http_connection_manager.v3.EnvoyMobileHttpConnectionManager (HTTP)
28
+ // [#next-major-version: In the v3 API, replace this Any field with a oneof containing the
29
+ // specific config message for each type of API listener. We could not do this in v2 because
30
+ // it would have caused circular dependencies for go protos: lds.proto depends on this file,
31
+ // and http_connection_manager.proto depends on rds.proto, which is in the same directory as
32
+ // lds.proto, so lds.proto cannot depend on this file.]
33
+ google.protobuf.Any api_listener = 1;
34
+ }