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,32 @@
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/endpoint/v3/endpoint_components_pb"
9
+ require "envoy/type/v3/percent_pb"
10
+ require "google/protobuf/duration_pb"
11
+ require "google/protobuf/wrappers_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/endpoint/v3/endpoint.proto\x12\x18\x65nvoy.config.endpoint.v3\x1a\x32\x65nvoy/config/endpoint/v3/endpoint_components.proto\x1a\x1b\x65nvoy/type/v3/percent.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\"\xb7\x07\n\x15\x43lusterLoadAssignment\x12\x1d\n\x0c\x63luster_name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12@\n\tendpoints\x18\x02 \x03(\x0b\x32-.envoy.config.endpoint.v3.LocalityLbEndpoints\x12\\\n\x0fnamed_endpoints\x18\x05 \x03(\x0b\x32\x43.envoy.config.endpoint.v3.ClusterLoadAssignment.NamedEndpointsEntry\x12\x46\n\x06policy\x18\x04 \x01(\x0b\x32\x36.envoy.config.endpoint.v3.ClusterLoadAssignment.Policy\x1a\x90\x04\n\x06Policy\x12[\n\x0e\x64rop_overloads\x18\x02 \x03(\x0b\x32\x43.envoy.config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload\x12\x46\n\x17overprovisioning_factor\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x07\xfa\x42\x04*\x02 \x00\x12\x41\n\x14\x65ndpoint_stale_after\x18\x04 \x01(\x0b\x32\x19.google.protobuf.DurationB\x08\xfa\x42\x05\xaa\x01\x02*\x00\x12 \n\x18weighted_priority_health\x18\x06 \x01(\x08\x1a\xa3\x01\n\x0c\x44ropOverload\x12\x19\n\x08\x63\x61tegory\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x39\n\x0f\x64rop_percentage\x18\x02 \x01(\x0b\x32 .envoy.type.v3.FractionalPercent:=\x9a\xc5\x88\x1e\x38\n6envoy.api.v2.ClusterLoadAssignment.Policy.DropOverload:0\x9a\xc5\x88\x1e+\n)envoy.api.v2.ClusterLoadAssignment.PolicyJ\x04\x08\x01\x10\x02J\x04\x08\x05\x10\x06R\x18\x64isable_overprovisioning\x1aY\n\x13NamedEndpointsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x31\n\x05value\x18\x02 \x01(\x0b\x32\".envoy.config.endpoint.v3.Endpoint:\x02\x38\x01:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.ClusterLoadAssignmentB\x8d\x01\n&io.envoyproxy.envoy.config.endpoint.v3B\rEndpointProtoP\x01ZJgithub.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3\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 Endpoint
25
+ module V3
26
+ ClusterLoadAssignment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.ClusterLoadAssignment").msgclass
27
+ ClusterLoadAssignment::Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.ClusterLoadAssignment.Policy").msgclass
28
+ ClusterLoadAssignment::Policy::DropOverload = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.ClusterLoadAssignment.Policy.DropOverload").msgclass
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,36 @@
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/base_pb"
10
+ require "google/protobuf/duration_pb"
11
+ require "google/protobuf/struct_pb"
12
+ require "xds/annotations/v3/status_pb"
13
+ require "udpa/annotations/status_pb"
14
+ require "udpa/annotations/versioning_pb"
15
+ require "validate/validate_pb"
16
+
17
+
18
+ descriptor_data = "\n*envoy/config/endpoint/v3/load_report.proto\x12\x18\x65nvoy.config.endpoint.v3\x1a\"envoy/config/core/v3/address.proto\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fxds/annotations/v3/status.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xb3\x06\n\x15UpstreamLocalityStats\x12\x30\n\x08locality\x18\x01 \x01(\x0b\x32\x1e.envoy.config.core.v3.Locality\x12!\n\x19total_successful_requests\x18\x02 \x01(\x04\x12\"\n\x1atotal_requests_in_progress\x18\x03 \x01(\x04\x12\x1c\n\x14total_error_requests\x18\x04 \x01(\x04\x12\x1d\n\x15total_issued_requests\x18\x08 \x01(\x04\x12*\n\x18total_active_connections\x18\t \x01(\x04\x42\x08\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x12\'\n\x15total_new_connections\x18\n \x01(\x04\x42\x08\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x12(\n\x16total_fail_connections\x18\x0b \x01(\x04\x42\x08\xd2\xc6\xa4\xe1\x06\x02\x08\x01\x12Q\n\x0f\x63pu_utilization\x18\x0c \x01(\x0b\x32\x38.envoy.config.endpoint.v3.UnnamedEndpointLoadMetricStats\x12Q\n\x0fmem_utilization\x18\r \x01(\x0b\x32\x38.envoy.config.endpoint.v3.UnnamedEndpointLoadMetricStats\x12Y\n\x17\x61pplication_utilization\x18\x0e \x01(\x0b\x32\x38.envoy.config.endpoint.v3.UnnamedEndpointLoadMetricStats\x12L\n\x11load_metric_stats\x18\x05 \x03(\x0b\x32\x31.envoy.config.endpoint.v3.EndpointLoadMetricStats\x12P\n\x17upstream_endpoint_stats\x18\x07 \x03(\x0b\x32/.envoy.config.endpoint.v3.UpstreamEndpointStats\x12\x10\n\x08priority\x18\x06 \x01(\r:2\x9a\xc5\x88\x1e-\n+envoy.api.v2.endpoint.UpstreamLocalityStats\"\xf8\x02\n\x15UpstreamEndpointStats\x12.\n\x07\x61\x64\x64ress\x18\x01 \x01(\x0b\x32\x1d.envoy.config.core.v3.Address\x12)\n\x08metadata\x18\x06 \x01(\x0b\x32\x17.google.protobuf.Struct\x12!\n\x19total_successful_requests\x18\x02 \x01(\x04\x12\"\n\x1atotal_requests_in_progress\x18\x03 \x01(\x04\x12\x1c\n\x14total_error_requests\x18\x04 \x01(\x04\x12\x1d\n\x15total_issued_requests\x18\x07 \x01(\x04\x12L\n\x11load_metric_stats\x18\x05 \x03(\x0b\x32\x31.envoy.config.endpoint.v3.EndpointLoadMetricStats:2\x9a\xc5\x88\x1e-\n+envoy.api.v2.endpoint.UpstreamEndpointStats\"\xab\x01\n\x17\x45ndpointLoadMetricStats\x12\x13\n\x0bmetric_name\x18\x01 \x01(\t\x12)\n!num_requests_finished_with_metric\x18\x02 \x01(\x04\x12\x1a\n\x12total_metric_value\x18\x03 \x01(\x01:4\x9a\xc5\x88\x1e/\n-envoy.api.v2.endpoint.EndpointLoadMetricStats\"g\n\x1eUnnamedEndpointLoadMetricStats\x12)\n!num_requests_finished_with_metric\x18\x01 \x01(\x04\x12\x1a\n\x12total_metric_value\x18\x02 \x01(\x01\"\xfd\x03\n\x0c\x43lusterStats\x12\x1d\n\x0c\x63luster_name\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x1c\n\x14\x63luster_service_name\x18\x06 \x01(\t\x12Z\n\x17upstream_locality_stats\x18\x02 \x03(\x0b\x32/.envoy.config.endpoint.v3.UpstreamLocalityStatsB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12\x1e\n\x16total_dropped_requests\x18\x03 \x01(\x04\x12P\n\x10\x64ropped_requests\x18\x05 \x03(\x0b\x32\x36.envoy.config.endpoint.v3.ClusterStats.DroppedRequests\x12\x37\n\x14load_report_interval\x18\x04 \x01(\x0b\x32\x19.google.protobuf.Duration\x1a~\n\x0f\x44roppedRequests\x12\x19\n\x08\x63\x61tegory\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12\x15\n\rdropped_count\x18\x02 \x01(\x04:9\x9a\xc5\x88\x1e\x34\n2envoy.api.v2.endpoint.ClusterStats.DroppedRequests:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.endpoint.ClusterStatsB\x8f\x01\n&io.envoyproxy.envoy.config.endpoint.v3B\x0fLoadReportProtoP\x01ZJgithub.com/envoyproxy/go-control-plane/envoy/config/endpoint/v3;endpointv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
19
+
20
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
21
+ pool.add_serialized_file(descriptor_data)
22
+
23
+ module Envoy
24
+ module Config
25
+ module Endpoint
26
+ module V3
27
+ UpstreamLocalityStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.UpstreamLocalityStats").msgclass
28
+ UpstreamEndpointStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.UpstreamEndpointStats").msgclass
29
+ EndpointLoadMetricStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.EndpointLoadMetricStats").msgclass
30
+ UnnamedEndpointLoadMetricStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.UnnamedEndpointLoadMetricStats").msgclass
31
+ ClusterStats = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.ClusterStats").msgclass
32
+ ClusterStats::DroppedRequests = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.config.endpoint.v3.ClusterStats.DroppedRequests").msgclass
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,26 @@
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/service/discovery/v3/discovery_pb"
9
+ require "udpa/annotations/status_pb"
10
+ require "udpa/annotations/versioning_pb"
11
+
12
+
13
+ descriptor_data = "\n$envoy/service/discovery/v3/ads.proto\x12\x1a\x65nvoy.service.discovery.v3\x1a*envoy/service/discovery/v3/discovery.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\"6\n\x08\x41\x64sDummy:*\x9a\xc5\x88\x1e%\n#envoy.service.discovery.v2.AdsDummy2\xa6\x02\n\x1a\x41ggregatedDiscoveryService\x12~\n\x19StreamAggregatedResources\x12,.envoy.service.discovery.v3.DiscoveryRequest\x1a-.envoy.service.discovery.v3.DiscoveryResponse\"\x00(\x01\x30\x01\x12\x87\x01\n\x18\x44\x65ltaAggregatedResources\x12\x31.envoy.service.discovery.v3.DeltaDiscoveryRequest\x1a\x32.envoy.service.discovery.v3.DeltaDiscoveryResponse\"\x00(\x01\x30\x01\x42\x8d\x01\n(io.envoyproxy.envoy.service.discovery.v3B\x08\x41\x64sProtoP\x01ZMgithub.com/envoyproxy/go-control-plane/envoy/service/discovery/v3;discoveryv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
14
+
15
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
16
+ pool.add_serialized_file(descriptor_data)
17
+
18
+ module Envoy
19
+ module Service
20
+ module Discovery
21
+ module V3
22
+ AdsDummy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.AdsDummy").msgclass
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Released under the MIT License.
4
+ # Copyright, 2026, by Samuel Williams.
5
+
6
+ # Service interface for Envoy Aggregated Discovery Service (ADS)
7
+ # This defines the RPC methods for xDS communication
8
+
9
+ require "protocol/grpc/interface"
10
+ require "envoy/service/discovery/v3/discovery_pb"
11
+
12
+ module Envoy
13
+ module Service
14
+ module Discovery
15
+ module V3
16
+ # Interface definition for AggregatedDiscoveryService
17
+ # Used with Async::GRPC::Client to make xDS calls
18
+ #
19
+ # @example Using with Async::GRPC::Client
20
+ # require "envoy/service/discovery/v3/aggregated_discovery_service"
21
+ # require "async/grpc/client"
22
+ #
23
+ # endpoint = Async::HTTP::Endpoint.parse("https://xds-control-plane:18000")
24
+ # http_client = Async::HTTP::Client.new(endpoint)
25
+ # grpc_client = Async::GRPC::Client.new(http_client)
26
+ #
27
+ # stub = grpc_client.stub(
28
+ # Envoy::Service::Discovery::V3::AggregatedDiscoveryService,
29
+ # "envoy.service.discovery.v3.AggregatedDiscoveryService"
30
+ # )
31
+ #
32
+ # # Bidirectional streaming RPC
33
+ # stub.stream_aggregated_resources do |input, output|
34
+ # request = Envoy::Service::Discovery::V3::DiscoveryRequest.new(
35
+ # type_url: "type.googleapis.com/envoy.config.cluster.v3.Cluster",
36
+ # resource_names: ["my-cluster"]
37
+ # )
38
+ # output.write(request)
39
+ #
40
+ # input.each do |response|
41
+ # # Process DiscoveryResponse
42
+ # end
43
+ # end
44
+ class AggregatedDiscoveryService < Protocol::GRPC::Interface
45
+ # StreamAggregatedResources is a bidirectional streaming RPC
46
+ # Request: stream of DiscoveryRequest
47
+ # Response: stream of DiscoveryResponse
48
+ rpc :StreamAggregatedResources,
49
+ request_class: DiscoveryRequest,
50
+ response_class: DiscoveryResponse,
51
+ streaming: :bidirectional
52
+
53
+ # DeltaAggregatedResources is a bidirectional streaming RPC for incremental xDS
54
+ # Request: stream of DeltaDiscoveryRequest
55
+ # Response: stream of DeltaDiscoveryResponse
56
+ rpc :DeltaAggregatedResources,
57
+ request_class: DeltaDiscoveryRequest,
58
+ response_class: DeltaDiscoveryResponse,
59
+ streaming: :bidirectional
60
+ end
61
+ end
62
+ end
63
+ end
64
+ 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
+ require "google/protobuf"
7
+
8
+ require "envoy/config/core/v3/base_pb"
9
+ require "google/protobuf/any_pb"
10
+ require "google/protobuf/duration_pb"
11
+ require "google/rpc/status_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/service/discovery/v3/discovery.proto\x12\x1a\x65nvoy.service.discovery.v3\x1a\x1f\x65nvoy/config/core/v3/base.proto\x1a\x19google/protobuf/any.proto\x1a\x1egoogle/protobuf/duration.proto\x1a\x17google/rpc/status.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xb9\x01\n\x0fResourceLocator\x12\x0c\n\x04name\x18\x01 \x01(\t\x12^\n\x12\x64ynamic_parameters\x18\x02 \x03(\x0b\x32\x42.envoy.service.discovery.v3.ResourceLocator.DynamicParametersEntry\x1a\x38\n\x16\x44ynamicParametersEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"|\n\x0cResourceName\x12\x0c\n\x04name\x18\x01 \x01(\t\x12^\n\x1d\x64ynamic_parameter_constraints\x18\x02 \x01(\x0b\x32\x37.envoy.service.discovery.v3.DynamicParameterConstraints\"z\n\rResourceError\x12?\n\rresource_name\x18\x01 \x01(\x0b\x32(.envoy.service.discovery.v3.ResourceName\x12(\n\x0c\x65rror_detail\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\"\xac\x02\n\x10\x44iscoveryRequest\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12(\n\x04node\x18\x02 \x01(\x0b\x32\x1a.envoy.config.core.v3.Node\x12\x16\n\x0eresource_names\x18\x03 \x03(\t\x12\x46\n\x11resource_locators\x18\x07 \x03(\x0b\x32+.envoy.service.discovery.v3.ResourceLocator\x12\x10\n\x08type_url\x18\x04 \x01(\t\x12\x16\n\x0eresponse_nonce\x18\x05 \x01(\t\x12(\n\x0c\x65rror_detail\x18\x06 \x01(\x0b\x32\x12.google.rpc.Status:$\x9a\xc5\x88\x1e\x1f\n\x1d\x65nvoy.api.v2.DiscoveryRequest\"\xa9\x02\n\x11\x44iscoveryResponse\x12\x14\n\x0cversion_info\x18\x01 \x01(\t\x12\'\n\tresources\x18\x02 \x03(\x0b\x32\x14.google.protobuf.Any\x12\x0e\n\x06\x63\x61nary\x18\x03 \x01(\x08\x12\x10\n\x08type_url\x18\x04 \x01(\t\x12\r\n\x05nonce\x18\x05 \x01(\t\x12\x39\n\rcontrol_plane\x18\x06 \x01(\x0b\x32\".envoy.config.core.v3.ControlPlane\x12\x42\n\x0fresource_errors\x18\x07 \x03(\x0b\x32).envoy.service.discovery.v3.ResourceError:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.api.v2.DiscoveryResponse\"\xdf\x04\n\x15\x44\x65ltaDiscoveryRequest\x12(\n\x04node\x18\x01 \x01(\x0b\x32\x1a.envoy.config.core.v3.Node\x12\x10\n\x08type_url\x18\x02 \x01(\t\x12 \n\x18resource_names_subscribe\x18\x03 \x03(\t\x12\"\n\x1aresource_names_unsubscribe\x18\x04 \x03(\t\x12P\n\x1bresource_locators_subscribe\x18\x08 \x03(\x0b\x32+.envoy.service.discovery.v3.ResourceLocator\x12R\n\x1dresource_locators_unsubscribe\x18\t \x03(\x0b\x32+.envoy.service.discovery.v3.ResourceLocator\x12q\n\x19initial_resource_versions\x18\x05 \x03(\x0b\x32N.envoy.service.discovery.v3.DeltaDiscoveryRequest.InitialResourceVersionsEntry\x12\x16\n\x0eresponse_nonce\x18\x06 \x01(\t\x12(\n\x0c\x65rror_detail\x18\x07 \x01(\x0b\x32\x12.google.rpc.Status\x1a>\n\x1cInitialResourceVersionsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:)\x9a\xc5\x88\x1e$\n\"envoy.api.v2.DeltaDiscoveryRequest\"\x9f\x03\n\x16\x44\x65ltaDiscoveryResponse\x12\x1b\n\x13system_version_info\x18\x01 \x01(\t\x12\x37\n\tresources\x18\x02 \x03(\x0b\x32$.envoy.service.discovery.v3.Resource\x12\x10\n\x08type_url\x18\x04 \x01(\t\x12\x19\n\x11removed_resources\x18\x06 \x03(\t\x12H\n\x16removed_resource_names\x18\x08 \x03(\x0b\x32(.envoy.service.discovery.v3.ResourceName\x12\r\n\x05nonce\x18\x05 \x01(\t\x12\x39\n\rcontrol_plane\x18\x07 \x01(\x0b\x32\".envoy.config.core.v3.ControlPlane\x12\x42\n\x0fresource_errors\x18\t \x03(\x0b\x32).envoy.service.discovery.v3.ResourceError:*\x9a\xc5\x88\x1e%\n#envoy.api.v2.DeltaDiscoveryResponse\"\xb6\x05\n\x1b\x44ynamicParameterConstraints\x12^\n\nconstraint\x18\x01 \x01(\x0b\x32H.envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraintH\x00\x12`\n\x0eor_constraints\x18\x02 \x01(\x0b\x32\x46.envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintListH\x00\x12\x61\n\x0f\x61nd_constraints\x18\x03 \x01(\x0b\x32\x46.envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintListH\x00\x12R\n\x0fnot_constraints\x18\x04 \x01(\x0b\x32\x37.envoy.service.discovery.v3.DynamicParameterConstraintsH\x00\x1a\xb5\x01\n\x10SingleConstraint\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x0f\n\x05value\x18\x02 \x01(\tH\x00\x12\x61\n\x06\x65xists\x18\x03 \x01(\x0b\x32O.envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.ExistsH\x00\x1a\x08\n\x06\x45xistsB\x16\n\x0f\x63onstraint_type\x12\x03\xf8\x42\x01\x1a^\n\x0e\x43onstraintList\x12L\n\x0b\x63onstraints\x18\x01 \x03(\x0b\x32\x37.envoy.service.discovery.v3.DynamicParameterConstraintsB\x06\n\x04type\"\x8b\x03\n\x08Resource\x12\x0c\n\x04name\x18\x03 \x01(\t\x12?\n\rresource_name\x18\x08 \x01(\x0b\x32(.envoy.service.discovery.v3.ResourceName\x12\x0f\n\x07\x61liases\x18\x04 \x03(\t\x12\x0f\n\x07version\x18\x01 \x01(\t\x12&\n\x08resource\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any\x12&\n\x03ttl\x18\x06 \x01(\x0b\x32\x19.google.protobuf.Duration\x12H\n\rcache_control\x18\x07 \x01(\x0b\x32\x31.envoy.service.discovery.v3.Resource.CacheControl\x12\x30\n\x08metadata\x18\t \x01(\x0b\x32\x1e.envoy.config.core.v3.Metadata\x1a$\n\x0c\x43\x61\x63heControl\x12\x14\n\x0c\x64o_not_cache\x18\x01 \x01(\x08:\x1c\x9a\xc5\x88\x1e\x17\n\x15\x65nvoy.api.v2.ResourceB\x93\x01\n(io.envoyproxy.envoy.service.discovery.v3B\x0e\x44iscoveryProtoP\x01ZMgithub.com/envoyproxy/go-control-plane/envoy/service/discovery/v3;discoveryv3\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 Service
24
+ module Discovery
25
+ module V3
26
+ ResourceLocator = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.ResourceLocator").msgclass
27
+ ResourceName = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.ResourceName").msgclass
28
+ ResourceError = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.ResourceError").msgclass
29
+ DiscoveryRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DiscoveryRequest").msgclass
30
+ DiscoveryResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DiscoveryResponse").msgclass
31
+ DeltaDiscoveryRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DeltaDiscoveryRequest").msgclass
32
+ DeltaDiscoveryResponse = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DeltaDiscoveryResponse").msgclass
33
+ DynamicParameterConstraints = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DynamicParameterConstraints").msgclass
34
+ DynamicParameterConstraints::SingleConstraint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint").msgclass
35
+ DynamicParameterConstraints::SingleConstraint::Exists = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DynamicParameterConstraints.SingleConstraint.Exists").msgclass
36
+ DynamicParameterConstraints::ConstraintList = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.DynamicParameterConstraints.ConstraintList").msgclass
37
+ Resource = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.Resource").msgclass
38
+ Resource::CacheControl = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.service.discovery.v3.Resource.CacheControl").msgclass
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,25 @@
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 "xds/core/v3/cidr_pb"
9
+ require "udpa/annotations/status_pb"
10
+
11
+
12
+ descriptor_data = "\n#envoy/type/matcher/v3/address.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\x16xds/core/v3/cidr.proto\x1a\x1dudpa/annotations/status.proto\"8\n\x0e\x41\x64\x64ressMatcher\x12&\n\x06ranges\x18\x01 \x03(\x0b\x32\x16.xds.core.v3.CidrRangeB\x85\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x0c\x41\x64\x64ressProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
13
+
14
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
+ pool.add_serialized_file(descriptor_data)
16
+
17
+ module Envoy
18
+ module Type
19
+ module Matcher
20
+ module V3
21
+ AddressMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.AddressMatcher").msgclass
22
+ end
23
+ end
24
+ end
25
+ 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 "envoy/type/matcher/v3/address_pb"
9
+ require "envoy/type/matcher/v3/string_pb"
10
+ require "udpa/annotations/status_pb"
11
+ require "validate/validate_pb"
12
+
13
+
14
+ descriptor_data = "\n(envoy/type/matcher/v3/filter_state.proto\x12\x15\x65nvoy.type.matcher.v3\x1a#envoy/type/matcher/v3/address.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"\xb8\x01\n\x12\x46ilterStateMatcher\x12\x14\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12<\n\x0cstring_match\x18\x02 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherH\x00\x12>\n\raddress_match\x18\x03 \x01(\x0b\x32%.envoy.type.matcher.v3.AddressMatcherH\x00\x42\x0e\n\x07matcher\x12\x03\xf8\x42\x01\x42\x89\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x10\x46ilterStateProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ FilterStateMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.FilterStateMatcher").msgclass
24
+ end
25
+ end
26
+ end
27
+ 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 "udpa/annotations/status_pb"
9
+ require "validate/validate_pb"
10
+
11
+
12
+ descriptor_data = "\n\'envoy/type/matcher/v3/http_inputs.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\x1dudpa/annotations/status.proto\x1a\x17validate/validate.proto\"?\n\x1bHttpRequestHeaderMatchInput\x12 \n\x0bheader_name\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\"@\n\x1cHttpRequestTrailerMatchInput\x12 \n\x0bheader_name\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\"@\n\x1cHttpResponseHeaderMatchInput\x12 \n\x0bheader_name\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\"A\n\x1dHttpResponseTrailerMatchInput\x12 \n\x0bheader_name\x18\x01 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x01\xc8\x01\x00\"?\n\x1fHttpRequestQueryParamMatchInput\x12\x1c\n\x0bquery_param\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x42\x88\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x0fHttpInputsProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
13
+
14
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
15
+ pool.add_serialized_file(descriptor_data)
16
+
17
+ module Envoy
18
+ module Type
19
+ module Matcher
20
+ module V3
21
+ HttpRequestHeaderMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpRequestHeaderMatchInput").msgclass
22
+ HttpRequestTrailerMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpRequestTrailerMatchInput").msgclass
23
+ HttpResponseHeaderMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpResponseHeaderMatchInput").msgclass
24
+ HttpResponseTrailerMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpResponseTrailerMatchInput").msgclass
25
+ HttpRequestQueryParamMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpRequestQueryParamMatchInput").msgclass
26
+ end
27
+ end
28
+ end
29
+ 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/type/matcher/v3/value_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/type/matcher/v3/metadata.proto\x12\x15\x65nvoy.type.matcher.v3\x1a!envoy/type/matcher/v3/value.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xdd\x02\n\x0fMetadataMatcher\x12\x17\n\x06\x66ilter\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12J\n\x04path\x18\x02 \x03(\x0b\x32\x32.envoy.type.matcher.v3.MetadataMatcher.PathSegmentB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12<\n\x05value\x18\x03 \x01(\x0b\x32#.envoy.type.matcher.v3.ValueMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12\x0e\n\x06invert\x18\x04 \x01(\x08\x1al\n\x0bPathSegment\x12\x16\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00:5\x9a\xc5\x88\x1e\x30\n.envoy.type.matcher.MetadataMatcher.PathSegmentB\x0e\n\x07segment\x12\x03\xf8\x42\x01:)\x9a\xc5\x88\x1e$\n\"envoy.type.matcher.MetadataMatcherB\x86\x01\n#io.envoyproxy.envoy.type.matcher.v3B\rMetadataProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ MetadataMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.MetadataMatcher").msgclass
24
+ MetadataMatcher::PathSegment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.MetadataMatcher.PathSegment").msgclass
25
+ end
26
+ end
27
+ end
28
+ 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 "envoy/type/matcher/v3/string_pb"
9
+ require "envoy/type/matcher/v3/struct_pb"
10
+ require "udpa/annotations/status_pb"
11
+ require "udpa/annotations/versioning_pb"
12
+
13
+
14
+ descriptor_data = "\n envoy/type/matcher/v3/node.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\"envoy/type/matcher/v3/string.proto\x1a\"envoy/type/matcher/v3/struct.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\"\xa9\x01\n\x0bNodeMatcher\x12\x35\n\x07node_id\x18\x01 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcher\x12<\n\x0enode_metadatas\x18\x02 \x03(\x0b\x32$.envoy.type.matcher.v3.StructMatcher:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.type.matcher.NodeMatcherB\x82\x01\n#io.envoyproxy.envoy.type.matcher.v3B\tNodeProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ NodeMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.NodeMatcher").msgclass
24
+ end
25
+ end
26
+ end
27
+ 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 "envoy/type/v3/range_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/type/matcher/v3/number.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\x19\x65nvoy/type/v3/range.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x8c\x01\n\rDoubleMatcher\x12+\n\x05range\x18\x01 \x01(\x0b\x32\x1a.envoy.type.v3.DoubleRangeH\x00\x12\x0f\n\x05\x65xact\x18\x02 \x01(\x01H\x00:\'\x9a\xc5\x88\x1e\"\n envoy.type.matcher.DoubleMatcherB\x14\n\rmatch_pattern\x12\x03\xf8\x42\x01\x42\x84\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x0bNumberProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ DoubleMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.DoubleMatcher").msgclass
24
+ end
25
+ end
26
+ end
27
+ 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 "envoy/type/matcher/v3/string_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/type/matcher/v3/path.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\"envoy/type/matcher/v3/string.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x81\x01\n\x0bPathMatcher\x12>\n\x04path\x18\x01 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.type.matcher.PathMatcherB\x0b\n\x04rule\x12\x03\xf8\x42\x01\x42\x82\x01\n#io.envoyproxy.envoy.type.matcher.v3B\tPathProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ PathMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.PathMatcher").msgclass
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,30 @@
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/wrappers_pb"
9
+ require "envoy/annotations/deprecation_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/type/matcher/v3/regex.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\x1egoogle/protobuf/wrappers.proto\x1a#envoy/annotations/deprecation.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xb4\x02\n\x0cRegexMatcher\x12P\n\ngoogle_re2\x18\x01 \x01(\x0b\x32-.envoy.type.matcher.v3.RegexMatcher.GoogleRE2B\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0H\x00\x12\x16\n\x05regex\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x1a\x82\x01\n\tGoogleRE2\x12\x43\n\x10max_program_size\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32ValueB\x0b\x18\x01\x92\xc7\x86\xd8\x04\x03\x33.0:0\x9a\xc5\x88\x1e+\n)envoy.type.matcher.RegexMatcher.GoogleRE2:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.type.matcher.RegexMatcherB\r\n\x0b\x65ngine_type\"\xaf\x01\n\x17RegexMatchAndSubstitute\x12>\n\x07pattern\x18\x01 \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x12!\n\x0csubstitution\x18\x02 \x01(\tB\x0b\xfa\x42\x08r\x06\xc0\x01\x02\xc8\x01\x00:1\x9a\xc5\x88\x1e,\n*envoy.type.matcher.RegexMatchAndSubstituteB\x83\x01\n#io.envoyproxy.envoy.type.matcher.v3B\nRegexProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
22
+ module Matcher
23
+ module V3
24
+ RegexMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.RegexMatcher").msgclass
25
+ RegexMatcher::GoogleRE2 = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.RegexMatcher.GoogleRE2").msgclass
26
+ RegexMatchAndSubstitute = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.RegexMatchAndSubstitute").msgclass
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,25 @@
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-envoy/type/matcher/v3/status_code_input.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\x1dudpa/annotations/status.proto\"\"\n HttpResponseStatusCodeMatchInput\"\'\n%HttpResponseStatusCodeClassMatchInputB\x8d\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x14StatusCodeInputProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
18
+ module Matcher
19
+ module V3
20
+ HttpResponseStatusCodeMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpResponseStatusCodeMatchInput").msgclass
21
+ HttpResponseStatusCodeClassMatchInput = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.HttpResponseStatusCodeClassMatchInput").msgclass
22
+ end
23
+ end
24
+ end
25
+ 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/type/matcher/v3/regex_pb"
9
+ require "xds/core/v3/extension_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/type/matcher/v3/string.proto\x12\x15\x65nvoy.type.matcher.v3\x1a!envoy/type/matcher/v3/regex.proto\x1a\x1bxds/core/v3/extension.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xce\x02\n\rStringMatcher\x12\x0f\n\x05\x65xact\x18\x01 \x01(\tH\x00\x12\x19\n\x06prefix\x18\x02 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x19\n\x06suffix\x18\x03 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x43\n\nsafe_regex\x18\x05 \x01(\x0b\x32#.envoy.type.matcher.v3.RegexMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01H\x00\x12\x1b\n\x08\x63ontains\x18\x07 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00\x12\x33\n\x06\x63ustom\x18\x08 \x01(\x0b\x32!.xds.core.v3.TypedExtensionConfigH\x00\x12\x13\n\x0bignore_case\x18\x06 \x01(\x08:\'\x9a\xc5\x88\x1e\"\n envoy.type.matcher.StringMatcherB\x14\n\rmatch_pattern\x12\x03\xf8\x42\x01J\x04\x08\x04\x10\x05R\x05regex\"\x82\x01\n\x11ListStringMatcher\x12@\n\x08patterns\x18\x01 \x03(\x0b\x32$.envoy.type.matcher.v3.StringMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x01:+\x9a\xc5\x88\x1e&\n$envoy.type.matcher.ListStringMatcherB\x84\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x0bStringProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
22
+ module Matcher
23
+ module V3
24
+ StringMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.StringMatcher").msgclass
25
+ ListStringMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.ListStringMatcher").msgclass
26
+ end
27
+ end
28
+ end
29
+ 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/type/matcher/v3/value_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/type/matcher/v3/struct.proto\x12\x15\x65nvoy.type.matcher.v3\x1a!envoy/type/matcher/v3/value.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xac\x02\n\rStructMatcher\x12H\n\x04path\x18\x02 \x03(\x0b\x32\x30.envoy.type.matcher.v3.StructMatcher.PathSegmentB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x12<\n\x05value\x18\x03 \x01(\x0b\x32#.envoy.type.matcher.v3.ValueMatcherB\x08\xfa\x42\x05\x8a\x01\x02\x10\x01\x1aj\n\x0bPathSegment\x12\x16\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00:3\x9a\xc5\x88\x1e.\n,envoy.type.matcher.StructMatcher.PathSegmentB\x0e\n\x07segment\x12\x03\xf8\x42\x01:\'\x9a\xc5\x88\x1e\"\n envoy.type.matcher.StructMatcherB\x84\x01\n#io.envoyproxy.envoy.type.matcher.v3B\x0bStructProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
21
+ module Matcher
22
+ module V3
23
+ StructMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.StructMatcher").msgclass
24
+ StructMatcher::PathSegment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.StructMatcher.PathSegment").msgclass
25
+ end
26
+ end
27
+ end
28
+ 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/type/matcher/v3/number_pb"
9
+ require "envoy/type/matcher/v3/string_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/type/matcher/v3/value.proto\x12\x15\x65nvoy.type.matcher.v3\x1a\"envoy/type/matcher/v3/number.proto\x1a\"envoy/type/matcher/v3/string.proto\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\xeb\x03\n\x0cValueMatcher\x12\x43\n\nnull_match\x18\x01 \x01(\x0b\x32-.envoy.type.matcher.v3.ValueMatcher.NullMatchH\x00\x12<\n\x0c\x64ouble_match\x18\x02 \x01(\x0b\x32$.envoy.type.matcher.v3.DoubleMatcherH\x00\x12<\n\x0cstring_match\x18\x03 \x01(\x0b\x32$.envoy.type.matcher.v3.StringMatcherH\x00\x12\x14\n\nbool_match\x18\x04 \x01(\x08H\x00\x12\x17\n\rpresent_match\x18\x05 \x01(\x08H\x00\x12\x38\n\nlist_match\x18\x06 \x01(\x0b\x32\".envoy.type.matcher.v3.ListMatcherH\x00\x12\x34\n\x08or_match\x18\x07 \x01(\x0b\x32 .envoy.type.matcher.v3.OrMatcherH\x00\x1a=\n\tNullMatch:0\x9a\xc5\x88\x1e+\n)envoy.type.matcher.ValueMatcher.NullMatch:&\x9a\xc5\x88\x1e!\n\x1f\x65nvoy.type.matcher.ValueMatcherB\x14\n\rmatch_pattern\x12\x03\xf8\x42\x01\"\x81\x01\n\x0bListMatcher\x12\x35\n\x06one_of\x18\x01 \x01(\x0b\x32#.envoy.type.matcher.v3.ValueMatcherH\x00:%\x9a\xc5\x88\x1e \n\x1e\x65nvoy.type.matcher.ListMatcherB\x14\n\rmatch_pattern\x12\x03\xf8\x42\x01\"R\n\tOrMatcher\x12\x45\n\x0evalue_matchers\x18\x01 \x03(\x0b\x32#.envoy.type.matcher.v3.ValueMatcherB\x08\xfa\x42\x05\x92\x01\x02\x08\x02\x42\x83\x01\n#io.envoyproxy.envoy.type.matcher.v3B\nValueProtoP\x01ZFgithub.com/envoyproxy/go-control-plane/envoy/type/matcher/v3;matcherv3\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 Type
22
+ module Matcher
23
+ module V3
24
+ ValueMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.ValueMatcher").msgclass
25
+ ValueMatcher::NullMatch = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.ValueMatcher.NullMatch").msgclass
26
+ ListMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.ListMatcher").msgclass
27
+ OrMatcher = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.matcher.v3.OrMatcher").msgclass
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,32 @@
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
+ require "udpa/annotations/versioning_pb"
10
+ require "validate/validate_pb"
11
+
12
+
13
+ descriptor_data = "\n%envoy/type/metadata/v3/metadata.proto\x12\x16\x65nvoy.type.metadata.v3\x1a\x1dudpa/annotations/status.proto\x1a!udpa/annotations/versioning.proto\x1a\x17validate/validate.proto\"\x85\x02\n\x0bMetadataKey\x12\x14\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01\x12G\n\x04path\x18\x02 \x03(\x0b\x32/.envoy.type.metadata.v3.MetadataKey.PathSegmentB\x08\xfa\x42\x05\x92\x01\x02\x08\x01\x1al\n\x0bPathSegment\x12\x16\n\x03key\x18\x01 \x01(\tB\x07\xfa\x42\x04r\x02\x10\x01H\x00:5\x9a\xc5\x88\x1e\x30\n.envoy.type.metadata.v2.MetadataKey.PathSegmentB\x0e\n\x07segment\x12\x03\xf8\x42\x01:)\x9a\xc5\x88\x1e$\n\"envoy.type.metadata.v2.MetadataKey\"\xb3\x04\n\x0cMetadataKind\x12?\n\x07request\x18\x01 \x01(\x0b\x32,.envoy.type.metadata.v3.MetadataKind.RequestH\x00\x12;\n\x05route\x18\x02 \x01(\x0b\x32*.envoy.type.metadata.v3.MetadataKind.RouteH\x00\x12?\n\x07\x63luster\x18\x03 \x01(\x0b\x32,.envoy.type.metadata.v3.MetadataKind.ClusterH\x00\x12\x39\n\x04host\x18\x04 \x01(\x0b\x32).envoy.type.metadata.v3.MetadataKind.HostH\x00\x1a=\n\x07Request:2\x9a\xc5\x88\x1e-\n+envoy.type.metadata.v2.MetadataKind.Request\x1a\x39\n\x05Route:0\x9a\xc5\x88\x1e+\n)envoy.type.metadata.v2.MetadataKind.Route\x1a=\n\x07\x43luster:2\x9a\xc5\x88\x1e-\n+envoy.type.metadata.v2.MetadataKind.Cluster\x1a\x37\n\x04Host:/\x9a\xc5\x88\x1e*\n(envoy.type.metadata.v2.MetadataKind.Host:*\x9a\xc5\x88\x1e%\n#envoy.type.metadata.v2.MetadataKindB\x0b\n\x04kind\x12\x03\xf8\x42\x01\x42\x89\x01\n$io.envoyproxy.envoy.type.metadata.v3B\rMetadataProtoP\x01ZHgithub.com/envoyproxy/go-control-plane/envoy/type/metadata/v3;metadatav3\xba\x80\xc8\xd1\x06\x02\x10\x02\x62\x06proto3"
14
+
15
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
16
+ pool.add_serialized_file(descriptor_data)
17
+
18
+ module Envoy
19
+ module Type
20
+ module Metadata
21
+ module V3
22
+ MetadataKey = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKey").msgclass
23
+ MetadataKey::PathSegment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKey.PathSegment").msgclass
24
+ MetadataKind = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKind").msgclass
25
+ MetadataKind::Request = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKind.Request").msgclass
26
+ MetadataKind::Route = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKind.Route").msgclass
27
+ MetadataKind::Cluster = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKind.Cluster").msgclass
28
+ MetadataKind::Host = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("envoy.type.metadata.v3.MetadataKind.Host").msgclass
29
+ end
30
+ end
31
+ end
32
+ end