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,145 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+
31
+ syntax = "proto3";
32
+
33
+ package google.protobuf;
34
+
35
+ option cc_enable_arenas = true;
36
+ option go_package = "google.golang.org/protobuf/types/known/timestamppb";
37
+ option java_package = "com.google.protobuf";
38
+ option java_outer_classname = "TimestampProto";
39
+ option java_multiple_files = true;
40
+ option objc_class_prefix = "GPB";
41
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
42
+
43
+ // A Timestamp represents a point in time independent of any time zone or local
44
+ // calendar, encoded as a count of seconds and fractions of seconds at
45
+ // nanosecond resolution. The count is relative to an epoch at UTC midnight on
46
+ // January 1, 1970, in the proleptic Gregorian calendar which extends the
47
+ // Gregorian calendar backwards to year one.
48
+ //
49
+ // All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
50
+ // second table is needed for interpretation, using a [24-hour linear
51
+ // smear](https://developers.google.com/time/smear).
52
+ //
53
+ // The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
54
+ // restricting to that range, we ensure that we can convert to and from [RFC
55
+ // 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
56
+ //
57
+ // # Examples
58
+ //
59
+ // Example 1: Compute Timestamp from POSIX `time()`.
60
+ //
61
+ // Timestamp timestamp;
62
+ // timestamp.set_seconds(time(NULL));
63
+ // timestamp.set_nanos(0);
64
+ //
65
+ // Example 2: Compute Timestamp from POSIX `gettimeofday()`.
66
+ //
67
+ // struct timeval tv;
68
+ // gettimeofday(&tv, NULL);
69
+ //
70
+ // Timestamp timestamp;
71
+ // timestamp.set_seconds(tv.tv_sec);
72
+ // timestamp.set_nanos(tv.tv_usec * 1000);
73
+ //
74
+ // Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
75
+ //
76
+ // FILETIME ft;
77
+ // GetSystemTimeAsFileTime(&ft);
78
+ // UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
79
+ //
80
+ // // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
81
+ // // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
82
+ // Timestamp timestamp;
83
+ // timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
84
+ // timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
85
+ //
86
+ // Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
87
+ //
88
+ // long millis = System.currentTimeMillis();
89
+ //
90
+ // Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
91
+ // .setNanos((int) ((millis % 1000) * 1000000)).build();
92
+ //
93
+ // Example 5: Compute Timestamp from Java `Instant.now()`.
94
+ //
95
+ // Instant now = Instant.now();
96
+ //
97
+ // Timestamp timestamp =
98
+ // Timestamp.newBuilder().setSeconds(now.getEpochSecond())
99
+ // .setNanos(now.getNano()).build();
100
+ //
101
+ // Example 6: Compute Timestamp from current time in Python.
102
+ //
103
+ // timestamp = Timestamp()
104
+ // timestamp.GetCurrentTime()
105
+ //
106
+ // # JSON Mapping
107
+ //
108
+ // In JSON format, the Timestamp type is encoded as a string in the
109
+ // [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
110
+ // format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
111
+ // where {year} is always expressed using four digits while {month}, {day},
112
+ // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
113
+ // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
114
+ // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
115
+ // is required. A ProtoJSON serializer should always use UTC (as indicated by
116
+ // "Z") when printing the Timestamp type and a ProtoJSON parser should be
117
+ // able to accept both UTC and other timezones (as indicated by an offset).
118
+ //
119
+ // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
120
+ // 01:30 UTC on January 15, 2017.
121
+ //
122
+ // In JavaScript, one can convert a Date object to this format using the
123
+ // standard
124
+ // [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
125
+ // method. In Python, a standard `datetime.datetime` object can be converted
126
+ // to this format using
127
+ // [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
128
+ // the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
129
+ // the Joda Time's [`ISODateTimeFormat.dateTime()`](
130
+ // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
131
+ // ) to obtain a formatter capable of generating timestamps in this format.
132
+ //
133
+ message Timestamp {
134
+ // Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must
135
+ // be between -62135596800 and 253402300799 inclusive (which corresponds to
136
+ // 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z).
137
+ int64 seconds = 1;
138
+
139
+ // Non-negative fractions of a second at nanosecond resolution. This field is
140
+ // the nanosecond portion of the duration, not an alternative to seconds.
141
+ // Negative second values with fractions must still have non-negative nanos
142
+ // values that count forward in time. Must be between 0 and 999,999,999
143
+ // inclusive.
144
+ int32 nanos = 2;
145
+ }
@@ -0,0 +1,157 @@
1
+ // Protocol Buffers - Google's data interchange format
2
+ // Copyright 2008 Google Inc. All rights reserved.
3
+ // https://developers.google.com/protocol-buffers/
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ // * Redistributions in binary form must reproduce the above
12
+ // copyright notice, this list of conditions and the following disclaimer
13
+ // in the documentation and/or other materials provided with the
14
+ // distribution.
15
+ // * Neither the name of Google Inc. nor the names of its
16
+ // contributors may be used to endorse or promote products derived from
17
+ // this software without specific prior written permission.
18
+ //
19
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
+ // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
+ // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
+ // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
+ // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
+ // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
+ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
+ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ //
31
+ // Wrappers for primitive (non-message) types. These types were needed
32
+ // for legacy reasons and are not recommended for use in new APIs.
33
+ //
34
+ // Historically these wrappers were useful to have presence on proto3 primitive
35
+ // fields, but proto3 syntax has been updated to support the `optional` keyword.
36
+ // Using that keyword is now the strongly preferred way to add presence to
37
+ // proto3 primitive fields.
38
+ //
39
+ // A secondary usecase was to embed primitives in the `google.protobuf.Any`
40
+ // type: it is now recommended that you embed your value in your own wrapper
41
+ // message which can be specifically documented.
42
+ //
43
+ // These wrappers have no meaningful use within repeated fields as they lack
44
+ // the ability to detect presence on individual elements.
45
+ // These wrappers have no meaningful use within a map or a oneof since
46
+ // individual entries of a map or fields of a oneof can already detect presence.
47
+
48
+ syntax = "proto3";
49
+
50
+ package google.protobuf;
51
+
52
+ option cc_enable_arenas = true;
53
+ option go_package = "google.golang.org/protobuf/types/known/wrapperspb";
54
+ option java_package = "com.google.protobuf";
55
+ option java_outer_classname = "WrappersProto";
56
+ option java_multiple_files = true;
57
+ option objc_class_prefix = "GPB";
58
+ option csharp_namespace = "Google.Protobuf.WellKnownTypes";
59
+
60
+ // Wrapper message for `double`.
61
+ //
62
+ // The JSON representation for `DoubleValue` is JSON number.
63
+ //
64
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
65
+ // has no plan to be removed.
66
+ message DoubleValue {
67
+ // The double value.
68
+ double value = 1;
69
+ }
70
+
71
+ // Wrapper message for `float`.
72
+ //
73
+ // The JSON representation for `FloatValue` is JSON number.
74
+ //
75
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
76
+ // has no plan to be removed.
77
+ message FloatValue {
78
+ // The float value.
79
+ float value = 1;
80
+ }
81
+
82
+ // Wrapper message for `int64`.
83
+ //
84
+ // The JSON representation for `Int64Value` is JSON string.
85
+ //
86
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
87
+ // has no plan to be removed.
88
+ message Int64Value {
89
+ // The int64 value.
90
+ int64 value = 1;
91
+ }
92
+
93
+ // Wrapper message for `uint64`.
94
+ //
95
+ // The JSON representation for `UInt64Value` is JSON string.
96
+ //
97
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
98
+ // has no plan to be removed.
99
+ message UInt64Value {
100
+ // The uint64 value.
101
+ uint64 value = 1;
102
+ }
103
+
104
+ // Wrapper message for `int32`.
105
+ //
106
+ // The JSON representation for `Int32Value` is JSON number.
107
+ //
108
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
109
+ // has no plan to be removed.
110
+ message Int32Value {
111
+ // The int32 value.
112
+ int32 value = 1;
113
+ }
114
+
115
+ // Wrapper message for `uint32`.
116
+ //
117
+ // The JSON representation for `UInt32Value` is JSON number.
118
+ //
119
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
120
+ // has no plan to be removed.
121
+ message UInt32Value {
122
+ // The uint32 value.
123
+ uint32 value = 1;
124
+ }
125
+
126
+ // Wrapper message for `bool`.
127
+ //
128
+ // The JSON representation for `BoolValue` is JSON `true` and `false`.
129
+ //
130
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
131
+ // has no plan to be removed.
132
+ message BoolValue {
133
+ // The bool value.
134
+ bool value = 1;
135
+ }
136
+
137
+ // Wrapper message for `string`.
138
+ //
139
+ // The JSON representation for `StringValue` is JSON string.
140
+ //
141
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
142
+ // has no plan to be removed.
143
+ message StringValue {
144
+ // The string value.
145
+ string value = 1;
146
+ }
147
+
148
+ // Wrapper message for `bytes`.
149
+ //
150
+ // The JSON representation for `BytesValue` is JSON string.
151
+ //
152
+ // Not recommended for use in new APIs, but still useful for legacy APIs and
153
+ // has no plan to be removed.
154
+ message BytesValue {
155
+ // The bytes value.
156
+ bytes value = 1;
157
+ }
@@ -0,0 +1,47 @@
1
+ // Copyright 2020 Google LLC
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ syntax = "proto3";
16
+
17
+ package google.rpc;
18
+
19
+ import "google/protobuf/any.proto";
20
+
21
+ option cc_enable_arenas = true;
22
+ option go_package = "google.golang.org/genproto/googleapis/rpc/status;status";
23
+ option java_multiple_files = true;
24
+ option java_outer_classname = "StatusProto";
25
+ option java_package = "com.google.rpc";
26
+ option objc_class_prefix = "RPC";
27
+
28
+ // The `Status` type defines a logical error model that is suitable for
29
+ // different programming environments, including REST APIs and RPC APIs. It is
30
+ // used by [gRPC](https://github.com/grpc). Each `Status` message contains
31
+ // three pieces of data: error code, error message, and error details.
32
+ //
33
+ // You can find out more about this error model and how to work with it in the
34
+ // [API Design Guide](https://cloud.google.com/apis/design/errors).
35
+ message Status {
36
+ // The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
37
+ int32 code = 1;
38
+
39
+ // A developer-facing error message, which should be in English. Any
40
+ // user-facing error message should be localized and sent in the
41
+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.
42
+ string message = 2;
43
+
44
+ // A list of messages that carry the error details. There is a common set of
45
+ // message types for APIs to use.
46
+ repeated google.protobuf.Any details = 3;
47
+ }
data/proto/readme.md ADDED
@@ -0,0 +1,70 @@
1
+ # Envoy Protobuf Definitions
2
+
3
+ This directory contains vendored Envoy protobuf definitions for xDS support.
4
+
5
+ ## Source
6
+
7
+ These files come from [envoyproxy/data-plane-api](https://github.com/envoyproxy/data-plane-api).
8
+
9
+ ## Contents
10
+
11
+ - `envoy/service/discovery/v3/` - Discovery service definitions (ADS, DiscoveryRequest/Response)
12
+ - `envoy/config/cluster/v3/` - Cluster definitions (CDS)
13
+ - `envoy/config/endpoint/v3/` - Endpoint definitions (EDS)
14
+ - `envoy/config/listener/v3/` - Listener definitions (LDS)
15
+ - `envoy/config/route/v3/` - Route definitions (RDS)
16
+ - `envoy/config/core/v3/` - Core types (Node, Address, etc.)
17
+ - `envoy/extensions/transport_sockets/tls/v3/` - TLS/Secret definitions (SDS)
18
+ - `google/protobuf/` - Google protobuf well-known types
19
+
20
+ ## Updating
21
+
22
+ To update these files, run:
23
+
24
+ ```bash
25
+ ./xds/update_protos.sh
26
+ ```
27
+
28
+ Or manually:
29
+
30
+ ```bash
31
+ # Clone envoy data-plane-api
32
+ git clone --depth 1 https://github.com/envoyproxy/data-plane-api.git /tmp/envoy-api
33
+
34
+ # Copy needed files
35
+ cp -r /tmp/envoy-api/envoy proto/
36
+ cp -r /tmp/envoy-api/google proto/
37
+
38
+ # Cleanup
39
+ rm -rf /tmp/envoy-api
40
+ ```
41
+
42
+ ## Generating Ruby Code
43
+
44
+ After updating proto files, generate Ruby classes:
45
+
46
+ ```bash
47
+ bundle exec bake async:grpc:xds:generate_protos
48
+ ```
49
+
50
+ ## Version
51
+
52
+ These files are from the latest `main` branch of:
53
+ - `envoyproxy/data-plane-api` - Envoy API definitions
54
+ - `protocolbuffers/protobuf` - Google protobuf well-known types
55
+ - `googleapis/api-common-protos` - Google RPC status
56
+
57
+ To lock to a specific version, modify `xds/update_protos.sh` to check out specific tags:
58
+
59
+ ```bash
60
+ cd /tmp/envoy-api
61
+ git checkout v1.30.0 # Use specific Envoy version
62
+ # Then copy files
63
+ ```
64
+
65
+ ## Note on Dependencies
66
+
67
+ Some proto files import `udpa/annotations/*` and `validate/validate.proto`. These are optional annotations used for validation and versioning. They won't break compilation if missing, but you may want to include them for full compatibility:
68
+
69
+ - `udpa` annotations: https://github.com/cncf/udpa
70
+ - `validate` annotations: https://github.com/envoyproxy/protoc-gen-validate
@@ -0,0 +1,49 @@
1
+ syntax = "proto3";
2
+
3
+ package udpa.annotations;
4
+
5
+ import "google/protobuf/descriptor.proto";
6
+
7
+ // Magic number in this file derived from top 28bit of SHA256 digest of
8
+ // "udpa.annotation.migrate".
9
+
10
+ extend google.protobuf.MessageOptions {
11
+ MigrateAnnotation message_migrate = 171962766;
12
+ }
13
+
14
+ extend google.protobuf.FieldOptions {
15
+ FieldMigrateAnnotation field_migrate = 171962766;
16
+ }
17
+
18
+ extend google.protobuf.EnumOptions {
19
+ MigrateAnnotation enum_migrate = 171962766;
20
+ }
21
+
22
+ extend google.protobuf.EnumValueOptions {
23
+ MigrateAnnotation enum_value_migrate = 171962766;
24
+ }
25
+
26
+ extend google.protobuf.FileOptions {
27
+ FileMigrateAnnotation file_migrate = 171962766;
28
+ }
29
+
30
+ message MigrateAnnotation {
31
+ // Rename the message/enum/enum value in next version.
32
+ string rename = 1;
33
+ }
34
+
35
+ message FieldMigrateAnnotation {
36
+ // Rename the field in next version.
37
+ string rename = 1;
38
+
39
+ // Add the field to a named oneof in next version. If this already exists, the
40
+ // field will join its siblings under the oneof, otherwise a new oneof will be
41
+ // created with the given name.
42
+ string oneof_promotion = 2;
43
+ }
44
+
45
+ message FileMigrateAnnotation {
46
+ // Move all types in the file to another package, this implies changing proto
47
+ // file path.
48
+ string move_to_package = 2;
49
+ }
@@ -0,0 +1,31 @@
1
+ syntax = "proto3";
2
+
3
+ package udpa.annotations;
4
+
5
+ import "udpa/annotations/status.proto";
6
+
7
+ import "google/protobuf/any.proto";
8
+ import "google/protobuf/descriptor.proto";
9
+
10
+ import "validate/validate.proto";
11
+
12
+ // All annotations in this file are experimental and subject to change. Their
13
+ // only consumer today is the Envoy APIs and SecuritAnnotationValidator protoc
14
+ // plugin in this repository.
15
+ option (udpa.annotations.file_status).work_in_progress = true;
16
+
17
+ extend google.protobuf.FieldOptions {
18
+ // Magic number is the 28 most significant bits in the sha256sum of
19
+ // "udpa.annotations.security".
20
+ FieldSecurityAnnotation security = 11122993;
21
+ }
22
+
23
+ // These annotations indicate metadata for the purpose of understanding the
24
+ // security significance of fields.
25
+ message FieldSecurityAnnotation {
26
+ // Field should be set in the presence of untrusted downstreams.
27
+ bool configure_for_untrusted_downstream = 1;
28
+
29
+ // Field should be set in the presence of untrusted upstreams.
30
+ bool configure_for_untrusted_upstream = 2;
31
+ }
@@ -0,0 +1,14 @@
1
+ syntax = "proto3";
2
+
3
+ package udpa.annotations;
4
+
5
+ import "google/protobuf/descriptor.proto";
6
+
7
+ extend google.protobuf.FieldOptions {
8
+ // Magic number is the 28 most significant bits in the sha256sum of "udpa.annotations.sensitive".
9
+ // When set to true, `sensitive` indicates that this field contains sensitive data, such as
10
+ // personally identifiable information, passwords, or private keys, and should be redacted for
11
+ // display by tools aware of this annotation. Note that that this has no effect on standard
12
+ // Protobuf functions such as `TextFormat::PrintToString`.
13
+ bool sensitive = 76569463;
14
+ }
@@ -0,0 +1,34 @@
1
+ syntax = "proto3";
2
+
3
+ package udpa.annotations;
4
+
5
+ import "google/protobuf/descriptor.proto";
6
+
7
+ // Magic number in this file derived from top 28bit of SHA256 digest of
8
+ // "udpa.annotation.status".
9
+ extend google.protobuf.FileOptions {
10
+ StatusAnnotation file_status = 222707719;
11
+ }
12
+
13
+ enum PackageVersionStatus {
14
+ // Unknown package version status.
15
+ UNKNOWN = 0;
16
+
17
+ // This version of the package is frozen.
18
+ FROZEN = 1;
19
+
20
+ // This version of the package is the active development version.
21
+ ACTIVE = 2;
22
+
23
+ // This version of the package is the candidate for the next major version. It
24
+ // is typically machine generated from the active development version.
25
+ NEXT_MAJOR_VERSION_CANDIDATE = 3;
26
+ }
27
+
28
+ message StatusAnnotation {
29
+ // The entity is work-in-progress and subject to breaking changes.
30
+ bool work_in_progress = 1;
31
+
32
+ // The entity belongs to a package with the given version status.
33
+ PackageVersionStatus package_version_status = 2;
34
+ }
@@ -0,0 +1,17 @@
1
+ syntax = "proto3";
2
+
3
+ package udpa.annotations;
4
+
5
+ import "google/protobuf/descriptor.proto";
6
+
7
+ extend google.protobuf.MessageOptions {
8
+ // Magic number derived from 0x78 ('x') 0x44 ('D') 0x53 ('S')
9
+ VersioningAnnotation versioning = 7881811;
10
+ }
11
+
12
+ message VersioningAnnotation {
13
+ // Track the previous message type. E.g. this message might be
14
+ // udpa.foo.v3alpha.Foo and it was previously udpa.bar.v2.Bar. This
15
+ // information is consumed by UDPA via proto descriptors.
16
+ string previous_message_type = 1;
17
+ }