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,117 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "async"
7
+ require "async/queue"
8
+ require "async/grpc/service"
9
+ require "protocol/grpc/error"
10
+ require "protocol/grpc/status"
11
+ require "set"
12
+
13
+ require "envoy/service/discovery/v3/aggregated_discovery_service"
14
+
15
+ require_relative "control_plane"
16
+
17
+ module Async
18
+ module GRPC
19
+ module XDS
20
+ # Serves Envoy Aggregated Discovery Service requests from a {ControlPlane}.
21
+ class Service < Async::GRPC::Service
22
+ SERVICE_NAME = "envoy.service.discovery.v3.AggregatedDiscoveryService"
23
+
24
+ def initialize(control_plane)
25
+ super(Envoy::Service::Discovery::V3::AggregatedDiscoveryService, SERVICE_NAME)
26
+ @control_plane = control_plane
27
+ end
28
+
29
+ def stream_aggregated_resources(input, output, call)
30
+ stream = Stream.new(@control_plane, output)
31
+ @control_plane.register_stream(stream)
32
+
33
+ reader = Async do
34
+ input.each do |request|
35
+ stream.request(request)
36
+ end
37
+ end
38
+
39
+ writer = Async do
40
+ stream.run
41
+ end
42
+
43
+ reader.wait
44
+ ensure
45
+ stream&.close
46
+ reader&.stop
47
+ writer&.stop
48
+ @control_plane.remove_stream(stream) if stream
49
+ end
50
+
51
+ def delta_aggregated_resources(input, output, call)
52
+ raise Protocol::GRPC::Error.new(
53
+ Protocol::GRPC::Status::UNIMPLEMENTED,
54
+ "Delta xDS is not implemented."
55
+ )
56
+ end
57
+
58
+ # Represents one ADS stream and its subscribed resources.
59
+ class Stream
60
+ def initialize(control_plane, output)
61
+ @control_plane = control_plane
62
+ @output = output
63
+ @subscriptions = Hash.new{|hash, type_url| hash[type_url] = Set.new}
64
+ @versions = {}
65
+ @queue = Async::Queue.new
66
+ @closed = false
67
+ end
68
+
69
+ def request(request)
70
+ return if request.type_url.nil? || request.type_url.empty?
71
+
72
+ if request.error_detail
73
+ Console.warn(self, "Received xDS NACK.", type_url: request.type_url, error_detail: request.error_detail)
74
+ return
75
+ end
76
+
77
+ if request.resource_names.any?
78
+ @subscriptions[request.type_url].merge(request.resource_names)
79
+ else
80
+ @subscriptions[request.type_url]
81
+ end
82
+
83
+ @queue << request.type_url
84
+ end
85
+
86
+ def changed(type_url)
87
+ @queue << type_url unless @closed
88
+ end
89
+
90
+ def run
91
+ until @closed
92
+ type_url = @queue.dequeue
93
+ flush(type_url)
94
+ end
95
+ end
96
+
97
+ def flush(type_url)
98
+ names = @subscriptions[type_url]
99
+ return unless names
100
+
101
+ version = @control_plane.version(type_url)
102
+ return if @versions[type_url] == version
103
+
104
+ response = @control_plane.response(type_url, names)
105
+ @output.write(response)
106
+ @versions[type_url] = version
107
+ end
108
+
109
+ def close
110
+ @closed = true
111
+ @queue.close
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ module Async
7
+ module GRPC
8
+ module XDS
9
+ VERSION = "0.0.1"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ # Load order matters - Context must be loaded before Client
7
+ require_relative "xds/version"
8
+ require_relative "xds/resource_cache"
9
+ require_relative "xds/resources"
10
+ require_relative "xds/ads_stream"
11
+ require_relative "xds/discovery_client"
12
+ require_relative "xds/health_checker"
13
+ require_relative "xds/load_balancer"
14
+ require_relative "xds/context"
15
+ require_relative "xds/client"
16
+ require_relative "xds/resource_builder"
17
+ require_relative "xds/control_plane"
18
+ require_relative "xds/service"
19
+ require_relative "xds/server"
20
+
21
+ module Async
22
+ module GRPC
23
+ # xDS (Discovery Service) support for dynamic service discovery and configuration
24
+ #
25
+ # Provides dynamic service discovery and load balancing for gRPC clients
26
+ # using the xDS (Discovery Service) protocol.
27
+ #
28
+ # @example Basic usage
29
+ # require "async/grpc/xds"
30
+ #
31
+ # bootstrap = {
32
+ # xds_servers: [{server_uri: "xds-control-plane:18000"}],
33
+ # node: {id: "client-1", cluster: "test"}
34
+ # }
35
+ #
36
+ # xds_client = Async::GRPC::XDS::Client.new("myservice", bootstrap: bootstrap)
37
+ # stub = xds_client.stub(MyServiceInterface, "myservice")
38
+ # response = stub.say_hello(request)
39
+ module XDS
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "google/protobuf/descriptor_pb"
9
+
10
+
11
+ descriptor_data = "\n#envoy/annotations/deprecation.proto\x12\x11\x65nvoy.annotations\x1a google/protobuf/descriptor.proto:?\n\x15\x64isallowed_by_default\x12\x1d.google.protobuf.FieldOptions\x18\xe7\xad\xaeZ \x01(\x08:E\n\x1b\x64\x65precated_at_minor_version\x12\x1d.google.protobuf.FieldOptions\x18\xf2\xe8\x80K \x01(\t:H\n\x1a\x64isallowed_by_default_enum\x12!.google.protobuf.EnumValueOptions\x18\xf5\xce\xb6! \x01(\x08:N\n deprecated_at_minor_version_enum\x12!.google.protobuf.EnumValueOptions\x18\xc1\xbe\xb3V \x01(\tB:Z8github.com/envoyproxy/go-control-plane/envoy/annotationsb\x06proto3"
12
+
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
+ pool.add_serialized_file(descriptor_data)
15
+
16
+ module Envoy
17
+ module Annotations
18
+ end
19
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/base_pb"
9
+ require "envoy/type/v3/percent_pb"
10
+ require "google/protobuf/wrappers_pb"
11
+ require "udpa/annotations/status_pb"
12
+ require "udpa/annotations/versioning_pb"
13
+ require "validate/validate_pb"
14
+
15
+
16
+ descriptor_data = "\n-envoy/config/cluster/v3/circuit_breaker.proto\x12\x17\x65nvoy.config.cluster.v3\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xaa\x07\n\x0f\x43ircuitBreakers\x12G\n\nthresholds\x18\x01 \x03(\x0b\x32\x33.envoy.config.cluster.v3.CircuitBreakers.Thresholds\x12P\n\x13per_host_thresholds\x18\x02 \x03(\x0b\x32\x33.envoy.config.cluster.v3.CircuitBreakers.Thresholds\x1a\xce\x05\n\nThresholds\x12\x41\n\x08priority\x18\x01 \x01(\x0e\x32%.envoy.config.core.v3.RoutingPriorityB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x35\n\x0fmax_connections\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12:\n\x14max_pending_requests\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x32\n\x0cmax_requests\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x31\n\x0bmax_retries\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12U\n\x0cretry_budget\x18\x08 \x01(\x0b\x32?.envoy.config.cluster.v3.CircuitBreakers.Thresholds.RetryBudget\x12\x17\n\x0ftrack_remaining\x18\x06 \x01(\x08\x12:\n\x14max_connection_pools\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x1a\xbe\x01\n\x0bRetryBudget\x12.\n\x0e\x62udget_percent\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12;\n\x15min_retry_concurrency\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value:B\x9a\xc5\x88\x1e=\n;envoy.api.v2.cluster.CircuitBreakers.Thresholds.RetryBudget:6\x9a\xc5\x88\x1e\x31\n/envoy.api.v2.cluster.CircuitBreakers.Thresholds:+\x9a\xc5\x88\x1e&\n$envoy.api.v2.cluster.CircuitBreakersB\x90\x01\n%io.envoyproxy.envoy.config.cluster.v3B\x13\x43ircuitBreakerProtoP\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
17
+
18
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
19
+ pool.add_serialized_file(descriptor_data)
20
+
21
+ module Envoy
22
+ module Config
23
+ module Cluster
24
+ module V3
25
+ CircuitBreakers = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.CircuitBreakers").msgclass
26
+ CircuitBreakers::Thresholds = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.CircuitBreakers.Thresholds").msgclass
27
+ CircuitBreakers::Thresholds::RetryBudget = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.CircuitBreakers.Thresholds.RetryBudget").msgclass
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,80 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/cluster/v3/circuit_breaker_pb"
9
+ require "envoy/config/cluster/v3/filter_pb"
10
+ require "envoy/config/cluster/v3/outlier_detection_pb"
11
+ require "envoy/config/core/v3/address_pb"
12
+ require "envoy/config/core/v3/base_pb"
13
+ require "envoy/config/core/v3/config_source_pb"
14
+ require "envoy/config/core/v3/extension_pb"
15
+ require "envoy/config/core/v3/health_check_pb"
16
+ require "envoy/config/core/v3/protocol_pb"
17
+ require "envoy/config/core/v3/resolver_pb"
18
+ require "envoy/config/endpoint/v3/endpoint_pb"
19
+ require "envoy/type/metadata/v3/metadata_pb"
20
+ require "envoy/type/v3/percent_pb"
21
+ require "google/protobuf/any_pb"
22
+ require "google/protobuf/duration_pb"
23
+ require "google/protobuf/struct_pb"
24
+ require "google/protobuf/wrappers_pb"
25
+ require "xds/core/v3/collection_entry_pb"
26
+ require "xds/type/matcher/v3/matcher_pb"
27
+ require "envoy/annotations/deprecation_pb"
28
+ require "udpa/annotations/migrate_pb"
29
+ require "udpa/annotations/security_pb"
30
+ require "udpa/annotations/status_pb"
31
+ require "udpa/annotations/versioning_pb"
32
+ require "validate/validate_pb"
33
+
34
+
35
+ descriptor_data = "\n%envoy/config/cluster/v3/cluster.proto\x12\x17\x65nvoy.config.cluster.v3\x1a-envoy/config/cluster/v3/circuit_breaker.proto\x1a$envoy/config/cluster/v3/filter.proto\x1a/envoy/config/cluster/v3/outlier_detection.proto\x1a\"envoy/config/core/v3/address.proto\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a(envoy/config/core/v3/config_source.proto\x1a$envoy/config/core/v3/extension.proto\x1a\'envoy/config/core/v3/health_check.proto\x1a#envoy/config/core/v3/protocol.proto\x1a#envoy/config/core/v3/resolver.proto\x1a\'envoy/config/endpoint/v3/endpoint.proto\x1a%envoy/type/metadata/v3/metadata.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\"xds/core/v3/collection_entry.proto\x1a!xds/type/matcher/v3/matcher.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1fudpa/annotations/security.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"B\n\x11\x43lusterCollection\x12-\n\x07\x65ntries\x18\x01 \x01(\x0b\x32\x1c.xds.core.v3.CollectionEntry\"\x87\x46\n\x07\x43luster\x12W\n\x18transport_socket_matches\x18+ \x03(\x0b\x32\x35.envoy.config.cluster.v3.Cluster.TransportSocketMatch\x12>\n\x18transport_socket_matcher\x18; \x01(\x0b\x32\x1c.xds.type.matcher.v3.Matcher\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x31\n\ralt_stat_name\x18\x1c \x01(\tB\x1a\xf2\x98\xfe\x8f\x05\x14\n\x12observability_name\x12H\n\x04type\x18\x02 \x01(\x0e\x32..envoy.config.cluster.v3.Cluster.DiscoveryTypeB\x08\xfa\x42\x05\x82\x01\x02\x10\x01H\x00\x12J\n\x0c\x63luster_type\x18& \x01(\x0b\x32\x32.envoy.config.cluster.v3.Cluster.CustomClusterTypeH\x00\x12M\n\x12\x65\x64s_cluster_config\x18\x03 \x01(\x0b\x32\x31.envoy.config.cluster.v3.Cluster.EdsClusterConfig\x12<\n\x0f\x63onnect_timeout\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12P\n!per_connection_buffer_limit_bytes\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\x8a\x93\xb7*\x02\x10\x01\x12\x46\n\tlb_policy\x18\x06 \x01(\x0e\x32).envoy.config.cluster.v3.Cluster.LbPolicyB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12H\n\x0fload_assignment\x18! \x01(\x0b\x32/.envoy.config.endpoint.v3.ClusterLoadAssignment\x12\x38\n\rhealth_checks\x18\x08 \x03(\x0b\x32!.envoy.config.core.v3.HealthCheck\x12N\n\x1bmax_requests_per_connection\x18\t \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x42\n\x10\x63ircuit_breakers\x18\n \x01(\x0b\x32(.envoy.config.cluster.v3.CircuitBreakers\x12\x66\n\x1eupstream_http_protocol_options\x18. \x01(\x0b\x32\x31.envoy.config.core.v3.UpstreamHttpProtocolOptionsB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\\\n\x1c\x63ommon_http_protocol_options\x18\x1d \x01(\x0b\x32).envoy.config.core.v3.HttpProtocolOptionsB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12V\n\x15http_protocol_options\x18\r \x01(\x0b\x32*.envoy.config.core.v3.Http1ProtocolOptionsB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12^\n\x16http2_protocol_options\x18\x0e \x01(\x0b\x32*.envoy.config.core.v3.Http2ProtocolOptionsB\x12\x18\x01\x8a\x93\xb7*\x02\x10\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12m\n typed_extension_protocol_options\x18$ \x03(\x0b\x32\x43.envoy.config.cluster.v3.Cluster.TypedExtensionProtocolOptionsEntry\x12L\n\x10\x64ns_refresh_rate\x18\x10 \x01(\x0b\x32\x19.google.protobuf.DurationB\x17\x18\x01\xfa\x42\t\xaa\x01\x06*\x04\x10\xc0\x84=\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x42\n\ndns_jitter\x18: \x01(\x0b\x32\x19.google.protobuf.DurationB\x13\x18\x01\xfa\x42\x05\xaa\x01\x02\x32\x00\x92\xc7\x86\xd8\x04\x03\x33.0\x12[\n\x18\x64ns_failure_refresh_rate\x18, \x01(\x0b\x32,.envoy.config.cluster.v3.Cluster.RefreshRateB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12$\n\x0frespect_dns_ttl\x18\' \x01(\x08\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12U\n\x11\x64ns_lookup_family\x18\x11 \x01(\x0e\x32\x30.envoy.config.cluster.v3.Cluster.DnsLookupFamilyB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x41\n\rdns_resolvers\x18\x12 \x03(\x0b\x32\x1d.envoy.config.core.v3.AddressB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12,\n\x17use_tcp_for_dns_lookups\x18- \x01(\x08\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12U\n\x15\x64ns_resolution_config\x18\x35 \x01(\x0b\x32).envoy.config.core.v3.DnsResolutionConfigB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12M\n\x19typed_dns_resolver_config\x18\x37 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x39\n\x15wait_for_warm_on_init\x18\x36 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12\x44\n\x11outlier_detection\x18\x13 \x01(\x0b\x32).envoy.config.cluster.v3.OutlierDetection\x12=\n\x10\x63leanup_interval\x18\x14 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12>\n\x14upstream_bind_config\x18\x15 \x01(\x0b\x32 .envoy.config.core.v3.BindConfig\x12I\n\x10lb_subset_config\x18\x16 \x01(\x0b\x32/.envoy.config.cluster.v3.Cluster.LbSubsetConfig\x12P\n\x13ring_hash_lb_config\x18\x17 \x01(\x0b\x32\x31.envoy.config.cluster.v3.Cluster.RingHashLbConfigH\x01\x12K\n\x10maglev_lb_config\x18\x34 \x01(\x0b\x32/.envoy.config.cluster.v3.Cluster.MaglevLbConfigH\x01\x12V\n\x16original_dst_lb_config\x18\" \x01(\x0b\x32\x34.envoy.config.cluster.v3.Cluster.OriginalDstLbConfigH\x01\x12X\n\x17least_request_lb_config\x18% \x01(\x0b\x32\x35.envoy.config.cluster.v3.Cluster.LeastRequestLbConfigH\x01\x12T\n\x15round_robin_lb_config\x18\x38 \x01(\x0b\x32\x33.envoy.config.cluster.v3.Cluster.RoundRobinLbConfigH\x01\x12I\n\x10\x63ommon_lb_config\x18\x1b \x01(\x0b\x32/.envoy.config.cluster.v3.Cluster.CommonLbConfig\x12?\n\x10transport_socket\x18\x18 \x01(\x0b\x32%.envoy.config.core.v3.TransportSocket\x12\x30\n\x08metadata\x18\x19 \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x12\x62\n\x12protocol_selection\x18\x1a \x01(\x0e\x32\x39.envoy.config.cluster.v3.Cluster.ClusterProtocolSelectionB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12W\n\x1bupstream_connection_options\x18\x1e \x01(\x0b\x32\x32.envoy.config.cluster.v3.UpstreamConnectionOptions\x12\x30\n(close_connections_on_host_health_failure\x18\x1f \x01(\x08\x12%\n\x1dignore_health_on_host_removal\x18 \x01(\x08\x12\x30\n\x07\x66ilters\x18( \x03(\x0b\x32\x1f.envoy.config.cluster.v3.Filter\x12K\n\x15load_balancing_policy\x18) \x01(\x0b\x32,.envoy.config.cluster.v3.LoadBalancingPolicy\x12\x36\n\nlrs_server\x18* \x01(\x0b\x32\".envoy.config.core.v3.ConfigSource\x12#\n\x1blrs_report_endpoint_metrics\x18\x39 \x03(\t\x12*\n\x15track_timeout_budgets\x18/ \x01(\x08\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x43\n\x0fupstream_config\x18\x30 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12G\n\x13track_cluster_stats\x18\x31 \x01(\x0b\x32*.envoy.config.cluster.v3.TrackClusterStats\x12L\n\x11preconnect_policy\x18\x32 \x01(\x0b\x32\x31.envoy.config.cluster.v3.Cluster.PreconnectPolicy\x12\x31\n)connection_pool_per_downstream_connection\x18\x33 \x01(\x08\x1a\xc8\x01\n\x14TransportSocketMatch\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12&\n\x05match\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12?\n\x10transport_socket\x18\x03 \x01(\x0b\x32%.envoy.config.core.v3.TransportSocket:0\x9a\xc5\x88\x1e+\n)envoy.api.v2.Cluster.TransportSocketMatch\x1a\x85\x01\n\x11\x43ustomClusterType\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12*\n\x0ctyped_config\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:-\x9a\xc5\x88\x1e(\n&envoy.api.v2.Cluster.CustomClusterType\x1a\x8e\x01\n\x10\x45\x64sClusterConfig\x12\x36\n\neds_config\x18\x01 \x01(\x0b\x32\".envoy.config.core.v3.ConfigSource\x12\x14\n\x0cservice_name\x18\x02 \x01(\t:,\x9a\xc5\x88\x1e\'\n%envoy.api.v2.Cluster.EdsClusterConfig\x1a\xd9\x08\n\x0eLbSubsetConfig\x12i\n\x0f\x66\x61llback_policy\x18\x01 \x01(\x0e\x32\x46.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicyB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12/\n\x0e\x64\x65\x66\x61ult_subset\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\x12Z\n\x10subset_selectors\x18\x03 \x03(\x0b\x32@.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector\x12\x1d\n\x15locality_weight_aware\x18\x04 \x01(\x08\x12\x1d\n\x15scale_locality_weight\x18\x05 \x01(\x08\x12\x16\n\x0epanic_mode_any\x18\x06 \x01(\x08\x12\x13\n\x0blist_as_any\x18\x07 \x01(\x08\x12z\n\x18metadata_fallback_policy\x18\x08 \x01(\x0e\x32N.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicyB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x1a\x9b\x03\n\x10LbSubsetSelector\x12\x0c\n\x04keys\x18\x01 \x03(\t\x12\x1e\n\x16single_host_per_subset\x18\x04 \x01(\x08\x12\x82\x01\n\x0f\x66\x61llback_policy\x18\x02 \x01(\x0e\x32_.envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicyB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x1c\n\x14\x66\x61llback_keys_subset\x18\x03 \x03(\t\"y\n\x1eLbSubsetSelectorFallbackPolicy\x12\x0f\n\x0bNOT_DEFINED\x10\x00\x12\x0f\n\x0bNO_FALLBACK\x10\x01\x12\x10\n\x0c\x41NY_ENDPOINT\x10\x02\x12\x12\n\x0e\x44\x45\x46\x41ULT_SUBSET\x10\x03\x12\x0f\n\x0bKEYS_SUBSET\x10\x04:;\x9a\xc5\x88\x1e\x36\n4envoy.api.v2.Cluster.LbSubsetConfig.LbSubsetSelector\"O\n\x16LbSubsetFallbackPolicy\x12\x0f\n\x0bNO_FALLBACK\x10\x00\x12\x10\n\x0c\x41NY_ENDPOINT\x10\x01\x12\x12\n\x0e\x44\x45\x46\x41ULT_SUBSET\x10\x02\"M\n\x1eLbSubsetMetadataFallbackPolicy\x12\x18\n\x14METADATA_NO_FALLBACK\x10\x00\x12\x11\n\rFALLBACK_LIST\x10\x01:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.Cluster.LbSubsetConfig\x1a\xb4\x01\n\x0fSlowStartConfig\x12\x34\n\x11slow_start_window\x18\x01 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\x37\n\naggression\x18\x02 \x01(\x0b\x32#.envoy.config.core.v3.RuntimeDouble\x12\x32\n\x12min_weight_percent\x18\x03 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x1a\x61\n\x12RoundRobinLbConfig\x12K\n\x11slow_start_config\x18\x01 \x01(\x0b\x32\x30.envoy.config.cluster.v3.Cluster.SlowStartConfig\x1a\x94\x02\n\x14LeastRequestLbConfig\x12;\n\x0c\x63hoice_count\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(\x02\x12@\n\x13\x61\x63tive_request_bias\x18\x02 \x01(\x0b\x32#.envoy.config.core.v3.RuntimeDouble\x12K\n\x11slow_start_config\x18\x03 \x01(\x0b\x32\x30.envoy.config.cluster.v3.Cluster.SlowStartConfig:0\x9a\xc5\x88\x1e+\n)envoy.api.v2.Cluster.LeastRequestLbConfig\x1a\xe1\x02\n\x10RingHashLbConfig\x12\x43\n\x11minimum_ring_size\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\n\xfa\x42\x07\x32\x05\x18\x80\x80\x80\x04\x12_\n\rhash_function\x18\x03 \x01(\x0e\x32>.envoy.config.cluster.v3.Cluster.RingHashLbConfig.HashFunctionB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x43\n\x11maximum_ring_size\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\n\xfa\x42\x07\x32\x05\x18\x80\x80\x80\x04\".\n\x0cHashFunction\x12\x0b\n\x07XX_HASH\x10\x00\x12\x11\n\rMURMUR_HASH_2\x10\x01:,\x9a\xc5\x88\x1e\'\n%envoy.api.v2.Cluster.RingHashLbConfigJ\x04\x08\x02\x10\x03\x1aN\n\x0eMaglevLbConfig\x12<\n\ntable_size\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt64ValueB\n\xfa\x42\x07\x32\x05\x18\xcb\x96\xb1\x02\x1a\xfd\x01\n\x13OriginalDstLbConfig\x12\x17\n\x0fuse_http_header\x18\x01 \x01(\x08\x12\x18\n\x10http_header_name\x18\x02 \x01(\t\x12G\n\x16upstream_port_override\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\t\xfa\x42\x06*\x04\x18\xff\xff\x03\x12\x39\n\x0cmetadata_key\x18\x04 \x01(\x0b\x32#.envoy.type.metadata.v3.MetadataKey:/\x9a\xc5\x88\x1e*\n(envoy.api.v2.Cluster.OriginalDstLbConfig\x1a\xb2\t\n\x0e\x43ommonLbConfig\x12\x37\n\x17healthy_panic_threshold\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12\x61\n\x14zone_aware_lb_config\x18\x02 \x01(\x0b\x32\x41.envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfigH\x00\x12o\n\x1blocality_weighted_lb_config\x18\x03 \x01(\x0b\x32H.envoy.config.cluster.v3.Cluster.CommonLbConfig.LocalityWeightedLbConfigH\x00\x12\x36\n\x13update_merge_window\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x12\'\n\x1fignore_new_hosts_until_first_hc\x18\x05 \x01(\x08\x12,\n$close_connections_on_host_set_change\x18\x06 \x01(\x08\x12o\n\x1c\x63onsistent_hashing_lb_config\x18\x07 \x01(\x0b\x32I.envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfig\x12\x43\n\x14override_host_status\x18\x08 \x01(\x0b\x32%.envoy.config.core.v3.HealthStatusSet\x1a\xd9\x01\n\x11ZoneAwareLbConfig\x12/\n\x0frouting_enabled\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12\x36\n\x10min_cluster_size\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt64Value\x12\x1d\n\x15\x66\x61il_traffic_on_panic\x18\x03 \x01(\x08:<\x9a\xc5\x88\x1e\x37\n5envoy.api.v2.Cluster.CommonLbConfig.ZoneAwareLbConfig\x1a_\n\x18LocalityWeightedLbConfig:C\x9a\xc5\x88\x1e>\n<envoy.api.v2.Cluster.CommonLbConfig.LocalityWeightedLbConfig\x1a\xc7\x01\n\x19\x43onsistentHashingLbConfig\x12 \n\x18use_hostname_for_hashing\x18\x01 \x01(\x08\x12\x42\n\x13hash_balance_factor\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(d:D\x9a\xc5\x88\x1e?\n=envoy.api.v2.Cluster.CommonLbConfig.ConsistentHashingLbConfig:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.Cluster.CommonLbConfigB\x1b\n\x19locality_config_specifier\x1a\xb7\x01\n\x0bRefreshRate\x12@\n\rbase_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\xfa\x42\x0b\xaa\x01\x08\x08\x01*\x04\x10\xc0\x84=\x12=\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0c\xfa\x42\t\xaa\x01\x06*\x04\x10\xc0\x84=:\'\x9a\xc5\x88\x1e\"\n envoy.api.v2.Cluster.RefreshRate\x1a\xcc\x01\n\x10PreconnectPolicy\x12\\\n\x1dper_upstream_preconnect_ratio\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.DoubleValueB\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\x08@)\x00\x00\x00\x00\x00\x00\xf0?\x12Z\n\x1bpredictive_preconnect_ratio\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.DoubleValueB\x17\xfa\x42\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\x08@)\x00\x00\x00\x00\x00\x00\xf0?\x1aZ\n\"TypedExtensionProtocolOptionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01\"W\n\rDiscoveryType\x12\n\n\x06STATIC\x10\x00\x12\x0e\n\nSTRICT_DNS\x10\x01\x12\x0f\n\x0bLOGICAL_DNS\x10\x02\x12\x07\n\x03\x45\x44S\x10\x03\x12\x10\n\x0cORIGINAL_DST\x10\x04\"\xa4\x01\n\x08LbPolicy\x12\x0f\n\x0bROUND_ROBIN\x10\x00\x12\x11\n\rLEAST_REQUEST\x10\x01\x12\r\n\tRING_HASH\x10\x02\x12\n\n\x06RANDOM\x10\x03\x12\n\n\x06MAGLEV\x10\x05\x12\x14\n\x10\x43LUSTER_PROVIDED\x10\x06\x12 \n\x1cLOAD_BALANCING_POLICY_CONFIG\x10\x07\"\x04\x08\x04\x10\x04*\x0fORIGINAL_DST_LB\"P\n\x0f\x44nsLookupFamily\x12\x08\n\x04\x41UTO\x10\x00\x12\x0b\n\x07V4_ONLY\x10\x01\x12\x0b\n\x07V6_ONLY\x10\x02\x12\x10\n\x0cV4_PREFERRED\x10\x03\x12\x07\n\x03\x41LL\x10\x04\"T\n\x18\x43lusterProtocolSelection\x12\x1b\n\x17USE_CONFIGURED_PROTOCOL\x10\x00\x12\x1b\n\x17USE_DOWNSTREAM_PROTOCOL\x10\x01:\x1b\x9a\xc5\x88\x1e\x16\n\x14\x65nvoy.api.v2.ClusterB\x18\n\x16\x63luster_discovery_typeB\x0b\n\tlb_configJ\x04\x08\x0c\x10\rJ\x04\x08\x0f\x10\x10J\x04\x08\x07\x10\x08J\x04\x08\x0b\x10\x0cJ\x04\x08#\x10$R\x05hostsR\x0btls_contextR\x1a\x65xtension_protocol_options\"\xba\x02\n\x13LoadBalancingPolicy\x12\x45\n\x08policies\x18\x01 \x03(\x0b\x32\x33.envoy.config.cluster.v3.LoadBalancingPolicy.Policy\x1a\xb2\x01\n\x06Policy\x12J\n\x16typed_extension_config\x18\x04 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig:.\x9a\xc5\x88\x1e)\n\'envoy.api.v2.LoadBalancingPolicy.PolicyJ\x04\x08\x02\x10\x03J\x04\x08\x01\x10\x02J\x04\x08\x03\x10\x04R\x06\x63onfigR\x04nameR\x0ctyped_config:\'\x9a\xc5\x88\x1e\"\n envoy.api.v2.LoadBalancingPolicy\"\xb7\x04\n\x19UpstreamConnectionOptions\x12\x39\n\rtcp_keepalive\x18\x01 \x01(\x0b\x32\".envoy.config.core.v3.TcpKeepalive\x12\x38\n0set_local_interface_name_on_upstream_connections\x18\x02 \x01(\x08\x12\x65\n\x15happy_eyeballs_config\x18\x03 \x01(\x0b\x32\x46.envoy.config.cluster.v3.UpstreamConnectionOptions.HappyEyeballsConfig\x1a\xd4\x01\n\x13HappyEyeballsConfig\x12r\n\x1c\x66irst_address_family_version\x18\x01 \x01(\x0e\x32L.envoy.config.cluster.v3.UpstreamConnectionOptions.FirstAddressFamilyVersion\x12I\n\x1a\x66irst_address_family_count\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02(\x01\"8\n\x19\x46irstAddressFamilyVersion\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x06\n\x02V4\x10\x01\x12\x06\n\x02V6\x10\x02:-\x9a\xc5\x88\x1e(\n&envoy.api.v2.UpstreamConnectionOptions\"h\n\x11TrackClusterStats\x12\x17\n\x0ftimeout_budgets\x18\x01 \x01(\x08\x12\x1e\n\x16request_response_sizes\x18\x02 \x01(\x08\x12\x1a\n\x12per_endpoint_stats\x18\x03 \x01(\x08\x42\x89\x01\n%io.envoyproxy.envoy.config.cluster.v3B\x0c\x43lusterProtoP\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
36
+
37
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
38
+ pool.add_serialized_file(descriptor_data)
39
+
40
+ module Envoy
41
+ module Config
42
+ module Cluster
43
+ module V3
44
+ ClusterCollection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.ClusterCollection").msgclass
45
+ Cluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster").msgclass
46
+ Cluster::TransportSocketMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.TransportSocketMatch").msgclass
47
+ Cluster::CustomClusterType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.CustomClusterType").msgclass
48
+ Cluster::EdsClusterConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.EdsClusterConfig").msgclass
49
+ Cluster::LbSubsetConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbSubsetConfig").msgclass
50
+ Cluster::LbSubsetConfig::LbSubsetSelector = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector").msgclass
51
+ Cluster::LbSubsetConfig::LbSubsetSelector::LbSubsetSelectorFallbackPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetSelector.LbSubsetSelectorFallbackPolicy").enummodule
52
+ Cluster::LbSubsetConfig::LbSubsetFallbackPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetFallbackPolicy").enummodule
53
+ Cluster::LbSubsetConfig::LbSubsetMetadataFallbackPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbSubsetConfig.LbSubsetMetadataFallbackPolicy").enummodule
54
+ Cluster::SlowStartConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.SlowStartConfig").msgclass
55
+ Cluster::RoundRobinLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.RoundRobinLbConfig").msgclass
56
+ Cluster::LeastRequestLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LeastRequestLbConfig").msgclass
57
+ Cluster::RingHashLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.RingHashLbConfig").msgclass
58
+ Cluster::RingHashLbConfig::HashFunction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.RingHashLbConfig.HashFunction").enummodule
59
+ Cluster::MaglevLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.MaglevLbConfig").msgclass
60
+ Cluster::OriginalDstLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.OriginalDstLbConfig").msgclass
61
+ Cluster::CommonLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.CommonLbConfig").msgclass
62
+ Cluster::CommonLbConfig::ZoneAwareLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.CommonLbConfig.ZoneAwareLbConfig").msgclass
63
+ Cluster::CommonLbConfig::LocalityWeightedLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.CommonLbConfig.LocalityWeightedLbConfig").msgclass
64
+ Cluster::CommonLbConfig::ConsistentHashingLbConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.CommonLbConfig.ConsistentHashingLbConfig").msgclass
65
+ Cluster::RefreshRate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.RefreshRate").msgclass
66
+ Cluster::PreconnectPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.PreconnectPolicy").msgclass
67
+ Cluster::DiscoveryType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.DiscoveryType").enummodule
68
+ Cluster::LbPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.LbPolicy").enummodule
69
+ Cluster::DnsLookupFamily = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.DnsLookupFamily").enummodule
70
+ Cluster::ClusterProtocolSelection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Cluster.ClusterProtocolSelection").enummodule
71
+ LoadBalancingPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.LoadBalancingPolicy").msgclass
72
+ LoadBalancingPolicy::Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.LoadBalancingPolicy.Policy").msgclass
73
+ UpstreamConnectionOptions = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.UpstreamConnectionOptions").msgclass
74
+ UpstreamConnectionOptions::HappyEyeballsConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.UpstreamConnectionOptions.HappyEyeballsConfig").msgclass
75
+ UpstreamConnectionOptions::FirstAddressFamilyVersion = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.UpstreamConnectionOptions.FirstAddressFamilyVersion").enummodule
76
+ TrackClusterStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.TrackClusterStats").msgclass
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/config_source_pb"
9
+ require "google/protobuf/any_pb"
10
+ require "udpa/annotations/status_pb"
11
+ require "udpa/annotations/versioning_pb"
12
+ require "validate/validate_pb"
13
+
14
+
15
+ descriptor_data = "\n$envoy/config/cluster/v3/filter.proto\x12\x17\x65nvoy.config.cluster.v3\x1a(envoy/config/core/v3/config_source.proto\x1a\x19google/protobuf/any.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xb6\x01\n\x06\x46ilter\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12*\n\x0ctyped_config\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12\x45\n\x10\x63onfig_discovery\x18\x03 \x01(\x0b\x32+.envoy.config.core.v3.ExtensionConfigSource:\"\x9a\xc5\x88\x1e\x1d\n\x1b\x65nvoy.api.v2.cluster.FilterB\x88\x01\n%io.envoyproxy.envoy.config.cluster.v3B\x0b\x46ilterProtoP\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
16
+
17
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
18
+ pool.add_serialized_file(descriptor_data)
19
+
20
+ module Envoy
21
+ module Config
22
+ module Cluster
23
+ module V3
24
+ Filter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.Filter").msgclass
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/extension_pb"
9
+ require "google/protobuf/duration_pb"
10
+ require "google/protobuf/wrappers_pb"
11
+ require "udpa/annotations/status_pb"
12
+ require "udpa/annotations/versioning_pb"
13
+ require "validate/validate_pb"
14
+
15
+
16
+ descriptor_data = "\n/envoy/config/cluster/v3/outlier_detection.proto\x12\x17\x65nvoy.config.cluster.v3\x1a$envoy/config/core/v3/extension.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x93\x0e\n\x10OutlierDetection\x12\x35\n\x0f\x63onsecutive_5xx\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x35\n\x08interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12?\n\x12\x62\x61se_ejection_time\x18\x03 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12\x43\n\x14max_ejection_percent\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12H\n\x19\x65nforcing_consecutive_5xx\x18\x05 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12\x45\n\x16\x65nforcing_success_rate\x18\x06 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12@\n\x1asuccess_rate_minimum_hosts\x18\x07 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x41\n\x1bsuccess_rate_request_volume\x18\x08 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12?\n\x19success_rate_stdev_factor\x18\t \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x41\n\x1b\x63onsecutive_gateway_failure\x18\n \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12T\n%enforcing_consecutive_gateway_failure\x18\x0b \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12*\n\"split_external_local_origin_errors\x18\x0c \x01(\x08\x12\x46\n consecutive_local_origin_failure\x18\r \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12Y\n*enforcing_consecutive_local_origin_failure\x18\x0e \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12R\n#enforcing_local_origin_success_rate\x18\x0f \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12K\n\x1c\x66\x61ilure_percentage_threshold\x18\x10 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12K\n\x1c\x65nforcing_failure_percentage\x18\x11 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12X\n)enforcing_failure_percentage_local_origin\x18\x12 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02\x18\x64\x12\x46\n failure_percentage_minimum_hosts\x18\x13 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12G\n!failure_percentage_request_volume\x18\x14 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12>\n\x11max_ejection_time\x18\x15 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12;\n\x18max_ejection_time_jitter\x18\x16 \x01(\x0b\x32\x19.google.protobuf.Duration\x12O\n+successful_active_health_check_uneject_host\x18\x17 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12<\n\x08monitors\x18\x18 \x03(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig\x12\x39\n\x15\x61lways_eject_one_host\x18\x19 \x01(\x0b\x32\x1a.google.protobuf.BoolValue:,\x9a\xc5\x88\x1e\'\n%envoy.api.v2.cluster.OutlierDetectionB\x92\x01\n%io.envoyproxy.envoy.config.cluster.v3B\x15OutlierDetectionProtoP\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/config/cluster/v3;clusterv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
17
+
18
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
19
+ pool.add_serialized_file(descriptor_data)
20
+
21
+ module Envoy
22
+ module Config
23
+ module Cluster
24
+ module V3
25
+ OutlierDetection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.cluster.v3.OutlierDetection").msgclass
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/extension_pb"
9
+ require "envoy/config/core/v3/socket_option_pb"
10
+ require "google/protobuf/wrappers_pb"
11
+ require "envoy/annotations/deprecation_pb"
12
+ require "udpa/annotations/status_pb"
13
+ require "udpa/annotations/versioning_pb"
14
+ require "validate/validate_pb"
15
+
16
+
17
+ descriptor_data = "\n\"envoy/config/core/v3/address.proto\x12\x14\x65nvoy.config.core.v3\x1a$envoy/config/core/v3/extension.proto\x1a(envoy/config/core/v3/socket_option.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"T\n\x04Pipe\x12\x15\n\x04path\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x16\n\x04mode\x18\x02 \x01(\rB\x08\xfa\x42\x05*\x03\x18\xff\x03:\x1d\x9a\xc5\x88\x1e\x18\n\x16\x65nvoy.api.v2.core.Pipe\"j\n\x14\x45nvoyInternalAddress\x12\x1e\n\x14server_listener_name\x18\x01 \x01(\tH\x00\x12\x13\n\x0b\x65ndpoint_id\x18\x02 \x01(\tB\x1d\n\x16\x61\x64\x64ress_name_specifier\x12\x03\xf8\x42\x01\"\xd7\x02\n\rSocketAddress\x12H\n\x08protocol\x18\x01 \x01(\x0e\x32,.envoy.config.core.v3.SocketAddress.ProtocolB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x18\n\x07\x61\x64\x64ress\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x1f\n\nport_value\x18\x03 \x01(\rB\t\xfa\x42\x06*\x04\x18\xff\xff\x03H\x00\x12\x14\n\nnamed_port\x18\x04 \x01(\tH\x00\x12\x15\n\rresolver_name\x18\x05 \x01(\t\x12\x13\n\x0bipv4_compat\x18\x06 \x01(\x08\x12\"\n\x1anetwork_namespace_filepath\x18\x07 \x01(\t\"\x1c\n\x08Protocol\x12\x07\n\x03TCP\x10\x00\x12\x07\n\x03UDP\x10\x01:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.api.v2.core.SocketAddressB\x15\n\x0eport_specifier\x12\x03\xf8\x42\x01\"\xdd\x01\n\x0cTcpKeepalive\x12\x36\n\x10keepalive_probes\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x34\n\x0ekeepalive_time\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x38\n\x12keepalive_interval\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.core.TcpKeepalive\"\x99\x01\n\x12\x45xtraSourceAddress\x12>\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32#.envoy.config.core.v3.SocketAddressB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x43\n\x0esocket_options\x18\x02 \x01(\x0b\x32+.envoy.config.core.v3.SocketOptionsOverride\"\xc5\x03\n\nBindConfig\x12;\n\x0esource_address\x18\x01 \x01(\x0b\x32#.envoy.config.core.v3.SocketAddress\x12,\n\x08\x66reebind\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValue\x12:\n\x0esocket_options\x18\x03 \x03(\x0b\x32\".envoy.config.core.v3.SocketOption\x12H\n\x16\x65xtra_source_addresses\x18\x05 \x03(\x0b\x32(.envoy.config.core.v3.ExtraSourceAddress\x12U\n\x1b\x61\x64\x64itional_source_addresses\x18\x04 \x03(\x0b\x32#.envoy.config.core.v3.SocketAddressB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12J\n\x16local_address_selector\x18\x06 \x01(\x0b\x32*.envoy.config.core.v3.TypedExtensionConfig:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.core.BindConfig\"\xf4\x01\n\x07\x41\x64\x64ress\x12=\n\x0esocket_address\x18\x01 \x01(\x0b\x32#.envoy.config.core.v3.SocketAddressH\x00\x12*\n\x04pipe\x18\x02 \x01(\x0b\x32\x1a.envoy.config.core.v3.PipeH\x00\x12L\n\x16\x65nvoy_internal_address\x18\x03 \x01(\x0b\x32*.envoy.config.core.v3.EnvoyInternalAddressH\x00: \x9a\xc5\x88\x1e\x1b\n\x19\x65nvoy.api.v2.core.AddressB\x0e\n\x07\x61\x64\x64ress\x12\x03\xf8\x42\x01\"\x8c\x01\n\tCidrRange\x12\x1f\n\x0e\x61\x64\x64ress_prefix\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12:\n\nprefix_len\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x08\xfa\x42\x05*\x03\x18\x80\x01:\"\x9a\xc5\x88\x1e\x1d\n\x1b\x65nvoy.api.v2.core.CidrRangeB\x80\x01\n\"io.envoyproxy.envoy.config.core.v3B\x0c\x41\x64\x64ressProtoP\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
18
+
19
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
20
+ pool.add_serialized_file(descriptor_data)
21
+
22
+ module Envoy
23
+ module Config
24
+ module Core
25
+ module V3
26
+ Pipe = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Pipe").msgclass
27
+ EnvoyInternalAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.EnvoyInternalAddress").msgclass
28
+ SocketAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.SocketAddress").msgclass
29
+ SocketAddress::Protocol = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.SocketAddress.Protocol").enummodule
30
+ TcpKeepalive = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.TcpKeepalive").msgclass
31
+ ExtraSourceAddress = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.ExtraSourceAddress").msgclass
32
+ BindConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.BindConfig").msgclass
33
+ Address = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Address").msgclass
34
+ CidrRange = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.CidrRange").msgclass
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "google/protobuf/duration_pb"
9
+ require "udpa/annotations/status_pb"
10
+ require "udpa/annotations/versioning_pb"
11
+ require "validate/validate_pb"
12
+
13
+
14
+ descriptor_data = "\n\"envoy/config/core/v3/backoff.proto\x12\x14\x65nvoy.config.core.v3\x1a\x1egoogle/protobuf/duration.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xb8\x01\n\x0f\x42\x61\x63koffStrategy\x12@\n\rbase_interval\x18\x01 \x01(\x0b\x32\x19.google.protobuf.DurationB\x0e\xfa\x42\x0b\xaa\x01\x08\x08\x01\x32\x04\x10\xc0\x84=\x12\x39\n\x0cmax_interval\x18\x02 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.core.BackoffStrategyB\x80\x01\n\"io.envoyproxy.envoy.config.core.v3B\x0c\x42\x61\x63koffProtoP\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
15
+
16
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
17
+ pool.add_serialized_file(descriptor_data)
18
+
19
+ module Envoy
20
+ module Config
21
+ module Core
22
+ module V3
23
+ BackoffStrategy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.BackoffStrategy").msgclass
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/address_pb"
9
+ require "envoy/config/core/v3/backoff_pb"
10
+ require "envoy/config/core/v3/http_uri_pb"
11
+ require "envoy/type/v3/percent_pb"
12
+ require "envoy/type/v3/semantic_version_pb"
13
+ require "google/protobuf/any_pb"
14
+ require "google/protobuf/struct_pb"
15
+ require "google/protobuf/wrappers_pb"
16
+ require "xds/core/v3/context_params_pb"
17
+ require "envoy/annotations/deprecation_pb"
18
+ require "udpa/annotations/migrate_pb"
19
+ require "udpa/annotations/status_pb"
20
+ require "udpa/annotations/versioning_pb"
21
+ require "validate/validate_pb"
22
+
23
+
24
+ descriptor_data = "\n\x1f\x65nvoy/config/core/v3/base.proto\x12\x14\x65nvoy.config.core.v3\x1a\"envoy/config/core/v3/address.proto\x1a\"envoy/config/core/v3/backoff.proto\x1a#envoy/config/core/v3/http_uri.proto\x1a\x1b\x65nvoy/type/v3/percent.proto\x1a$envoy/type/v3/semantic_version.proto\x1a\x19google/protobuf/any.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1egoogle/protobuf/wrappers.proto\x1a xds/core/v3/context_params.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1eudpa/annotations/migrate.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"]\n\x08Locality\x12\x0e\n\x06region\x18\x01 \x01(\t\x12\x0c\n\x04zone\x18\x02 \x01(\t\x12\x10\n\x08sub_zone\x18\x03 \x01(\t:!\x9a\xc5\x88\x1e\x1c\n\x1a\x65nvoy.api.v2.core.Locality\"\x91\x01\n\x0c\x42uildVersion\x12/\n\x07version\x18\x01 \x01(\x0b\x32\x1e.envoy.type.v3.SemanticVersion\x12)\n\x08metadata\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.core.BuildVersion\"\xcf\x01\n\tExtension\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x10\n\x08\x63\x61tegory\x18\x02 \x01(\t\x12$\n\x0ftype_descriptor\x18\x03 \x01(\tB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x33\n\x07version\x18\x04 \x01(\x0b\x32\".envoy.config.core.v3.BuildVersion\x12\x10\n\x08\x64isabled\x18\x05 \x01(\x08\x12\x11\n\ttype_urls\x18\x06 \x03(\t:\"\x9a\xc5\x88\x1e\x1d\n\x1b\x65nvoy.api.v2.core.Extension\"\x8a\x05\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x63luster\x18\x02 \x01(\t\x12)\n\x08metadata\x18\x03 \x01(\x0b\x32\x17.google.protobuf.Struct\x12M\n\x12\x64ynamic_parameters\x18\x0c \x03(\x0b\x32\x31.envoy.config.core.v3.Node.DynamicParametersEntry\x12\x30\n\x08locality\x18\x04 \x01(\x0b\x32\x1e.envoy.config.core.v3.Locality\x12\x17\n\x0fuser_agent_name\x18\x06 \x01(\t\x12\x1c\n\x12user_agent_version\x18\x07 \x01(\tH\x00\x12\x46\n\x18user_agent_build_version\x18\x08 \x01(\x0b\x32\".envoy.config.core.v3.BuildVersionH\x00\x12\x33\n\nextensions\x18\t \x03(\x0b\x32\x1f.envoy.config.core.v3.Extension\x12\x17\n\x0f\x63lient_features\x18\n \x03(\t\x12G\n\x13listening_addresses\x18\x0b \x03(\x0b\x32\x1d.envoy.config.core.v3.AddressB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x1aT\n\x16\x44ynamicParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12)\n\x05value\x18\x02 \x01(\x0b\x32\x1a.xds.core.v3.ContextParams:\x02\x38\x01:\x1d\x9a\xc5\x88\x1e\x18\n\x16\x65nvoy.api.v2.core.NodeB\x19\n\x17user_agent_version_typeJ\x04\x08\x05\x10\x06R\rbuild_version\"\x90\x03\n\x08Metadata\x12Y\n\x0f\x66ilter_metadata\x18\x01 \x03(\x0b\x32\x32.envoy.config.core.v3.Metadata.FilterMetadataEntryB\x0c\xfa\x42\t\x9a\x01\x06\"\x04r\x02\x10\x01\x12\x64\n\x15typed_filter_metadata\x18\x02 \x03(\x0b\x32\x37.envoy.config.core.v3.Metadata.TypedFilterMetadataEntryB\x0c\xfa\x42\t\x9a\x01\x06\"\x04r\x02\x10\x01\x1aN\n\x13\x46ilterMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12&\n\x05value\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct:\x02\x38\x01\x1aP\n\x18TypedFilterMetadataEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any:\x02\x38\x01:!\x9a\xc5\x88\x1e\x1c\n\x1a\x65nvoy.api.v2.core.Metadata\"c\n\rRuntimeUInt32\x12\x15\n\rdefault_value\x18\x02 \x01(\r\x12\x13\n\x0bruntime_key\x18\x03 \x01(\t:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.api.v2.core.RuntimeUInt32\"T\n\x0eRuntimePercent\x12-\n\rdefault_value\x18\x01 \x01(\x0b\x32\x16.envoy.type.v3.Percent\x12\x13\n\x0bruntime_key\x18\x02 \x01(\t\"c\n\rRuntimeDouble\x12\x15\n\rdefault_value\x18\x01 \x01(\x01\x12\x13\n\x0bruntime_key\x18\x02 \x01(\t:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.api.v2.core.RuntimeDouble\"\x93\x01\n\x12RuntimeFeatureFlag\x12;\n\rdefault_value\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x13\n\x0bruntime_key\x18\x02 \x01(\t:+\x9a\xc5\x88\x1e&\n$envoy.api.v2.core.RuntimeFeatureFlag\"K\n\x08KeyValue\x12#\n\x03key\x18\x01 \x01(\tB\x16\x18\x01\xfa\x42\x08r\x06\x10\x01(\x80\x80\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12\x1a\n\x05value\x18\x02 \x01(\x0c\x42\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\"O\n\x0cKeyValuePair\x12\x18\n\x03key\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\x10\x01(\x80\x80\x01\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value\"\xde\x02\n\x0eKeyValueAppend\x12\x32\n\x06record\x18\x03 \x01(\x0b\x32\".envoy.config.core.v3.KeyValuePair\x12\x42\n\x05\x65ntry\x18\x01 \x01(\x0b\x32\x1e.envoy.config.core.v3.KeyValueB\x13\x18\x01\xfa\x42\x05\x8a\x01\x02\x08\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12S\n\x06\x61\x63tion\x18\x02 \x01(\x0e\x32\x39.envoy.config.core.v3.KeyValueAppend.KeyValueAppendActionB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\"\x7f\n\x14KeyValueAppendAction\x12\x1b\n\x17\x41PPEND_IF_EXISTS_OR_ADD\x10\x00\x12\x11\n\rADD_IF_ABSENT\x10\x01\x12\x1e\n\x1aOVERWRITE_IF_EXISTS_OR_ADD\x10\x02\x12\x17\n\x13OVERWRITE_IF_EXISTS\x10\x03\"c\n\x10KeyValueMutation\x12\x34\n\x06\x61ppend\x18\x01 \x01(\x0b\x32$.envoy.config.core.v3.KeyValueAppend\x12\x19\n\x06remove\x18\x02 \x01(\tB\t\xfa\x42\x06r\x04(\x80\x80\x01\"5\n\x0eQueryParameter\x12\x14\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\r\n\x05value\x18\x02 \x01(\t\"\xb7\x01\n\x0bHeaderValue\x12\x1e\n\x03key\x18\x01 \x01(\tB\x11\xfa\x42\x0er\x0c\x10\x01(\x80\x80\x01\xc0\x01\x01\xc8\x01\x00\x12\x30\n\x05value\x18\x02 \x01(\tB!\xfa\x42\x0cr\n(\x80\x80\x01\xc0\x01\x02\xc8\x01\x00\xf2\x98\xfe\x8f\x05\x0c\x12\nvalue_type\x12\x30\n\traw_value\x18\x03 \x01(\x0c\x42\x1d\xfa\x42\x08z\x06\x10\x00\x18\x80\x80\x01\xf2\x98\xfe\x8f\x05\x0c\x12\nvalue_type:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.core.HeaderValue\"\xab\x03\n\x11HeaderValueOption\x12;\n\x06header\x18\x01 \x01(\x0b\x32!.envoy.config.core.v3.HeaderValueB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x37\n\x06\x61ppend\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.BoolValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0\x12[\n\rappend_action\x18\x03 \x01(\x0e\x32:.envoy.config.core.v3.HeaderValueOption.HeaderAppendActionB\x08\xfa\x42\x05\x82\x01\x02\x10\x01\x12\x18\n\x10keep_empty_value\x18\x04 \x01(\x08\"}\n\x12HeaderAppendAction\x12\x1b\n\x17\x41PPEND_IF_EXISTS_OR_ADD\x10\x00\x12\x11\n\rADD_IF_ABSENT\x10\x01\x12\x1e\n\x1aOVERWRITE_IF_EXISTS_OR_ADD\x10\x02\x12\x17\n\x13OVERWRITE_IF_EXISTS\x10\x03:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.core.HeaderValueOption\"c\n\tHeaderMap\x12\x32\n\x07headers\x18\x01 \x03(\x0b\x32!.envoy.config.core.v3.HeaderValue:\"\x9a\xc5\x88\x1e\x1d\n\x1b\x65nvoy.api.v2.core.HeaderMap\")\n\x10WatchedDirectory\x12\x15\n\x04path\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\"\xfd\x01\n\nDataSource\x12\x1b\n\x08\x66ilename\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x16\n\x0cinline_bytes\x18\x02 \x01(\x0cH\x00\x12\x17\n\rinline_string\x18\x03 \x01(\tH\x00\x12\'\n\x14\x65nvironment_variable\x18\x04 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x41\n\x11watched_directory\x18\x05 \x01(\x0b\x32&.envoy.config.core.v3.WatchedDirectory:#\x9a\xc5\x88\x1e\x1e\n\x1c\x65nvoy.api.v2.core.DataSourceB\x10\n\tspecifier\x12\x03\xf8\x42\x01\"\xe3\x04\n\x0bRetryPolicy\x12=\n\x0eretry_back_off\x18\x01 \x01(\x0b\x32%.envoy.config.core.v3.BackoffStrategy\x12\x46\n\x0bnum_retries\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x13\xf2\x98\xfe\x8f\x05\r\n\x0bmax_retries\x12\x10\n\x08retry_on\x18\x03 \x01(\t\x12G\n\x0eretry_priority\x18\x04 \x01(\x0b\x32/.envoy.config.core.v3.RetryPolicy.RetryPriority\x12R\n\x14retry_host_predicate\x18\x05 \x03(\x0b\x32\x34.envoy.config.core.v3.RetryPolicy.RetryHostPredicate\x12)\n!host_selection_retry_max_attempts\x18\x06 \x01(\x03\x1a\x63\n\rRetryPriority\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\r\n\x0b\x63onfig_type\x1ah\n\x12RetryHostPredicate\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x02 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00\x42\r\n\x0b\x63onfig_type:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.core.RetryPolicy\"\xca\x01\n\x10RemoteDataSource\x12\x39\n\x08http_uri\x18\x01 \x01(\x0b\x32\x1d.envoy.config.core.v3.HttpUriB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x17\n\x06sha256\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x37\n\x0cretry_policy\x18\x03 \x01(\x0b\x32!.envoy.config.core.v3.RetryPolicy:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.core.RemoteDataSource\"\xba\x01\n\x0f\x41syncDataSource\x12\x31\n\x05local\x18\x01 \x01(\x0b\x32 .envoy.config.core.v3.DataSourceH\x00\x12\x38\n\x06remote\x18\x02 \x01(\x0b\x32&.envoy.config.core.v3.RemoteDataSourceH\x00:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.core.AsyncDataSourceB\x10\n\tspecifier\x12\x03\xf8\x42\x01\"\x9d\x01\n\x0fTransportSocket\x12\x15\n\x04name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12,\n\x0ctyped_config\x18\x03 \x01(\x0b\x32\x14.google.protobuf.AnyH\x00:(\x9a\xc5\x88\x1e#\n!envoy.api.v2.core.TransportSocketB\r\n\x0b\x63onfig_typeJ\x04\x08\x02\x10\x03R\x06\x63onfig\"\xa5\x01\n\x18RuntimeFractionalPercent\x12\x41\n\rdefault_value\x18\x01 \x01(\x0b\x32 .envoy.type.v3.FractionalPercentB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x13\n\x0bruntime_key\x18\x02 \x01(\t:1\x9a\xc5\x88\x1e,\n*envoy.api.v2.core.RuntimeFractionalPercent\"I\n\x0c\x43ontrolPlane\x12\x12\n\nidentifier\x18\x01 \x01(\t:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.core.ControlPlane*(\n\x0fRoutingPriority\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x00\x12\x08\n\x04HIGH\x10\x01*\x89\x01\n\rRequestMethod\x12\x16\n\x12METHOD_UNSPECIFIED\x10\x00\x12\x07\n\x03GET\x10\x01\x12\x08\n\x04HEAD\x10\x02\x12\x08\n\x04POST\x10\x03\x12\x07\n\x03PUT\x10\x04\x12\n\n\x06\x44\x45LETE\x10\x05\x12\x0b\n\x07\x43ONNECT\x10\x06\x12\x0b\n\x07OPTIONS\x10\x07\x12\t\n\x05TRACE\x10\x08\x12\t\n\x05PATCH\x10\t*>\n\x10TrafficDirection\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\x0b\n\x07INBOUND\x10\x01\x12\x0c\n\x08OUTBOUND\x10\x02\x42}\n\"io.envoyproxy.envoy.config.core.v3B\tBaseProtoP\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
25
+
26
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
27
+ pool.add_serialized_file(descriptor_data)
28
+
29
+ module Envoy
30
+ module Config
31
+ module Core
32
+ module V3
33
+ Locality = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Locality").msgclass
34
+ BuildVersion = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.BuildVersion").msgclass
35
+ Extension = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Extension").msgclass
36
+ Node = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Node").msgclass
37
+ Metadata = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.Metadata").msgclass
38
+ RuntimeUInt32 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RuntimeUInt32").msgclass
39
+ RuntimePercent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RuntimePercent").msgclass
40
+ RuntimeDouble = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RuntimeDouble").msgclass
41
+ RuntimeFeatureFlag = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RuntimeFeatureFlag").msgclass
42
+ KeyValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.KeyValue").msgclass
43
+ KeyValuePair = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.KeyValuePair").msgclass
44
+ KeyValueAppend = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.KeyValueAppend").msgclass
45
+ KeyValueAppend::KeyValueAppendAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.KeyValueAppend.KeyValueAppendAction").enummodule
46
+ KeyValueMutation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.KeyValueMutation").msgclass
47
+ QueryParameter = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.QueryParameter").msgclass
48
+ HeaderValue = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.HeaderValue").msgclass
49
+ HeaderValueOption = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.HeaderValueOption").msgclass
50
+ HeaderValueOption::HeaderAppendAction = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.HeaderValueOption.HeaderAppendAction").enummodule
51
+ HeaderMap = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.HeaderMap").msgclass
52
+ WatchedDirectory = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.WatchedDirectory").msgclass
53
+ DataSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.DataSource").msgclass
54
+ RetryPolicy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RetryPolicy").msgclass
55
+ RetryPolicy::RetryPriority = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RetryPolicy.RetryPriority").msgclass
56
+ RetryPolicy::RetryHostPredicate = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RetryPolicy.RetryHostPredicate").msgclass
57
+ RemoteDataSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RemoteDataSource").msgclass
58
+ AsyncDataSource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.AsyncDataSource").msgclass
59
+ TransportSocket = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.TransportSocket").msgclass
60
+ RuntimeFractionalPercent = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RuntimeFractionalPercent").msgclass
61
+ ControlPlane = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.ControlPlane").msgclass
62
+ RoutingPriority = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RoutingPriority").enummodule
63
+ RequestMethod = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.RequestMethod").enummodule
64
+ TrafficDirection = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.TrafficDirection").enummodule
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ require "google/protobuf"
7
+
8
+ require "udpa/annotations/status_pb"
9
+
10
+
11
+ descriptor_data = "\n\x1e\x65nvoy/config/core/v3/cel.proto\x12\x14\x65nvoy.config.core.v3\x1a\x1dudpa/annotations/status.proto\"v\n\x13\x43\x65lExpressionConfig\x12 \n\x18\x65nable_string_conversion\x18\x01 \x01(\x08\x12\x1c\n\x14\x65nable_string_concat\x18\x02 \x01(\x08\x12\x1f\n\x17\x65nable_string_functions\x18\x03 \x01(\x08\x42|\n\"io.envoyproxy.envoy.config.core.v3B\x08\x43\x65lProtoP\x01ZBgithub.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
12
+
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
+ pool.add_serialized_file(descriptor_data)
15
+
16
+ module Envoy
17
+ module Config
18
+ module Core
19
+ module V3
20
+ CelExpressionConfig = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.core.v3.CelExpressionConfig").msgclass
21
+ end
22
+ end
23
+ end
24
+ end