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.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/fixtures/async/grpc/test_interface.rb +79 -0
- data/fixtures/async/grpc/test_message.rb +56 -0
- data/lib/async/grpc/xds/ads_stream.rb +70 -0
- data/lib/async/grpc/xds/client.rb +255 -0
- data/lib/async/grpc/xds/context.rb +201 -0
- data/lib/async/grpc/xds/control_plane.rb +143 -0
- data/lib/async/grpc/xds/discovery_client.rb +356 -0
- data/lib/async/grpc/xds/health_checker.rb +88 -0
- data/lib/async/grpc/xds/load_balancer.rb +196 -0
- data/lib/async/grpc/xds/resource_builder.rb +138 -0
- data/lib/async/grpc/xds/resource_cache.rb +55 -0
- data/lib/async/grpc/xds/resources.rb +270 -0
- data/lib/async/grpc/xds/server.rb +34 -0
- data/lib/async/grpc/xds/service.rb +117 -0
- data/lib/async/grpc/xds/version.rb +12 -0
- data/lib/async/grpc/xds.rb +42 -0
- data/lib/envoy/annotations/deprecation_pb.rb +19 -0
- data/lib/envoy/config/cluster/v3/circuit_breaker_pb.rb +31 -0
- data/lib/envoy/config/cluster/v3/cluster_pb.rb +80 -0
- data/lib/envoy/config/cluster/v3/filter_pb.rb +28 -0
- data/lib/envoy/config/cluster/v3/outlier_detection_pb.rb +29 -0
- data/lib/envoy/config/core/v3/address_pb.rb +38 -0
- data/lib/envoy/config/core/v3/backoff_pb.rb +27 -0
- data/lib/envoy/config/core/v3/base_pb.rb +68 -0
- data/lib/envoy/config/core/v3/cel_pb.rb +24 -0
- data/lib/envoy/config/core/v3/config_source_pb.rb +42 -0
- data/lib/envoy/config/core/v3/event_service_config_pb.rb +27 -0
- data/lib/envoy/config/core/v3/extension_pb.rb +26 -0
- data/lib/envoy/config/core/v3/grpc_method_list_pb.rb +27 -0
- data/lib/envoy/config/core/v3/grpc_service_pb.rb +45 -0
- data/lib/envoy/config/core/v3/health_check_pb.rb +47 -0
- data/lib/envoy/config/core/v3/http_service_pb.rb +27 -0
- data/lib/envoy/config/core/v3/http_uri_pb.rb +27 -0
- data/lib/envoy/config/core/v3/protocol_pb.rb +51 -0
- data/lib/envoy/config/core/v3/proxy_protocol_pb.rb +31 -0
- data/lib/envoy/config/core/v3/resolver_pb.rb +27 -0
- data/lib/envoy/config/core/v3/socket_cmsg_headers_pb.rb +25 -0
- data/lib/envoy/config/core/v3/socket_option_pb.rb +31 -0
- data/lib/envoy/config/core/v3/substitution_format_string_pb.rb +30 -0
- data/lib/envoy/config/core/v3/udp_socket_config_pb.rb +26 -0
- data/lib/envoy/config/endpoint/v3/endpoint_components_pb.rb +40 -0
- data/lib/envoy/config/endpoint/v3/endpoint_pb.rb +32 -0
- data/lib/envoy/config/endpoint/v3/load_report_pb.rb +36 -0
- data/lib/envoy/service/discovery/v3/ads_pb.rb +26 -0
- data/lib/envoy/service/discovery/v3/aggregated_discovery_service.rb +64 -0
- data/lib/envoy/service/discovery/v3/discovery_pb.rb +42 -0
- data/lib/envoy/type/matcher/v3/address_pb.rb +25 -0
- data/lib/envoy/type/matcher/v3/filter_state_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/http_inputs_pb.rb +29 -0
- data/lib/envoy/type/matcher/v3/metadata_pb.rb +28 -0
- data/lib/envoy/type/matcher/v3/node_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/number_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/path_pb.rb +27 -0
- data/lib/envoy/type/matcher/v3/regex_pb.rb +30 -0
- data/lib/envoy/type/matcher/v3/status_code_input_pb.rb +25 -0
- data/lib/envoy/type/matcher/v3/string_pb.rb +29 -0
- data/lib/envoy/type/matcher/v3/struct_pb.rb +28 -0
- data/lib/envoy/type/matcher/v3/value_pb.rb +31 -0
- data/lib/envoy/type/metadata/v3/metadata_pb.rb +32 -0
- data/lib/envoy/type/v3/hash_policy_pb.rb +26 -0
- data/lib/envoy/type/v3/http_pb.rb +22 -0
- data/lib/envoy/type/v3/http_status_pb.rb +25 -0
- data/lib/envoy/type/v3/percent_pb.rb +26 -0
- data/lib/envoy/type/v3/range_pb.rb +25 -0
- data/lib/envoy/type/v3/ratelimit_strategy_pb.rb +28 -0
- data/lib/envoy/type/v3/ratelimit_unit_pb.rb +22 -0
- data/lib/envoy/type/v3/semantic_version_pb.rb +23 -0
- data/lib/envoy/type/v3/token_bucket_pb.rb +26 -0
- data/lib/envoy.rb +83 -0
- data/lib/google/protobuf/any_pb.rb +18 -0
- data/lib/google/protobuf/duration_pb.rb +18 -0
- data/lib/google/protobuf/empty_pb.rb +18 -0
- data/lib/google/protobuf/struct_pb.rb +21 -0
- data/lib/google/protobuf/timestamp_pb.rb +18 -0
- data/lib/google/protobuf/wrappers_pb.rb +26 -0
- data/lib/google/rpc/status_pb.rb +20 -0
- data/lib/udpa/annotations/migrate_pb.rb +22 -0
- data/lib/udpa/annotations/security_pb.rb +23 -0
- data/lib/udpa/annotations/sensitive_pb.rb +19 -0
- data/lib/udpa/annotations/status_pb.rb +21 -0
- data/lib/udpa/annotations/versioning_pb.rb +20 -0
- data/lib/validate/validate_pb.rb +43 -0
- data/lib/xds/annotations/v3/status_pb.rb +26 -0
- data/lib/xds/core/v3/authority_pb.rb +23 -0
- data/lib/xds/core/v3/cidr_pb.rb +24 -0
- data/lib/xds/core/v3/collection_entry_pb.rb +26 -0
- data/lib/xds/core/v3/context_params_pb.rb +22 -0
- data/lib/xds/core/v3/extension_pb.rb +23 -0
- data/lib/xds/core/v3/resource_locator_pb.rb +26 -0
- data/lib/xds/core/v3/resource_name_pb.rb +24 -0
- data/lib/xds/core/v3/resource_pb.rb +24 -0
- data/lib/xds/type/matcher/v3/domain_pb.rb +27 -0
- data/lib/xds/type/matcher/v3/http_inputs_pb.rb +22 -0
- data/lib/xds/type/matcher/v3/ip_pb.rb +28 -0
- data/lib/xds/type/matcher/v3/matcher_pb.rb +34 -0
- data/lib/xds/type/matcher/v3/range_pb.rb +31 -0
- data/lib/xds/type/matcher/v3/regex_pb.rb +25 -0
- data/lib/xds/type/matcher/v3/string_pb.rb +27 -0
- data/license.md +21 -0
- data/plan.md +156 -0
- data/proto/envoy/annotations/deprecation.proto +34 -0
- data/proto/envoy/annotations/resource.proto +19 -0
- data/proto/envoy/config/README.md +3 -0
- data/proto/envoy/config/cluster/v3/BUILD +18 -0
- data/proto/envoy/config/cluster/v3/circuit_breaker.proto +121 -0
- data/proto/envoy/config/cluster/v3/cluster.proto +1407 -0
- data/proto/envoy/config/cluster/v3/filter.proto +40 -0
- data/proto/envoy/config/cluster/v3/outlier_detection.proto +180 -0
- data/proto/envoy/config/core/v3/BUILD +16 -0
- data/proto/envoy/config/core/v3/address.proto +214 -0
- data/proto/envoy/config/core/v3/backoff.proto +37 -0
- data/proto/envoy/config/core/v3/base.proto +662 -0
- data/proto/envoy/config/core/v3/cel.proto +63 -0
- data/proto/envoy/config/core/v3/config_source.proto +283 -0
- data/proto/envoy/config/core/v3/event_service_config.proto +29 -0
- data/proto/envoy/config/core/v3/extension.proto +32 -0
- data/proto/envoy/config/core/v3/grpc_method_list.proto +33 -0
- data/proto/envoy/config/core/v3/grpc_service.proto +355 -0
- data/proto/envoy/config/core/v3/health_check.proto +443 -0
- data/proto/envoy/config/core/v3/http_service.proto +35 -0
- data/proto/envoy/config/core/v3/http_uri.proto +58 -0
- data/proto/envoy/config/core/v3/protocol.proto +807 -0
- data/proto/envoy/config/core/v3/proxy_protocol.proto +114 -0
- data/proto/envoy/config/core/v3/resolver.proto +36 -0
- data/proto/envoy/config/core/v3/socket_cmsg_headers.proto +28 -0
- data/proto/envoy/config/core/v3/socket_option.proto +108 -0
- data/proto/envoy/config/core/v3/substitution_format_string.proto +136 -0
- data/proto/envoy/config/core/v3/udp_socket_config.proto +32 -0
- data/proto/envoy/config/endpoint/v3/BUILD +16 -0
- data/proto/envoy/config/endpoint/v3/endpoint.proto +137 -0
- data/proto/envoy/config/endpoint/v3/endpoint_components.proto +229 -0
- data/proto/envoy/config/endpoint/v3/load_report.proto +220 -0
- data/proto/envoy/config/listener/v3/BUILD +18 -0
- data/proto/envoy/config/listener/v3/api_listener.proto +34 -0
- data/proto/envoy/config/listener/v3/listener.proto +455 -0
- data/proto/envoy/config/listener/v3/listener_components.proto +353 -0
- data/proto/envoy/config/listener/v3/quic_config.proto +108 -0
- data/proto/envoy/config/listener/v3/udp_listener_config.proto +52 -0
- data/proto/envoy/config/route/v3/BUILD +19 -0
- data/proto/envoy/config/route/v3/route.proto +172 -0
- data/proto/envoy/config/route/v3/route_components.proto +2918 -0
- data/proto/envoy/config/route/v3/scoped_route.proto +133 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/BUILD +14 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/cert.proto +12 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/common.proto +597 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/secret.proto +61 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/tls.proto +366 -0
- data/proto/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.proto +67 -0
- data/proto/envoy/service/README.md +3 -0
- data/proto/envoy/service/discovery/v3/BUILD +13 -0
- data/proto/envoy/service/discovery/v3/ads.proto +44 -0
- data/proto/envoy/service/discovery/v3/discovery.proto +443 -0
- data/proto/envoy/type/BUILD +9 -0
- data/proto/envoy/type/hash_policy.proto +28 -0
- data/proto/envoy/type/http.proto +24 -0
- data/proto/envoy/type/http_status.proto +140 -0
- data/proto/envoy/type/matcher/v3/address.proto +22 -0
- data/proto/envoy/type/matcher/v3/filter_state.proto +33 -0
- data/proto/envoy/type/matcher/v3/http_inputs.proto +71 -0
- data/proto/envoy/type/matcher/v3/metadata.proto +110 -0
- data/proto/envoy/type/matcher/v3/node.proto +29 -0
- data/proto/envoy/type/matcher/v3/number.proto +33 -0
- data/proto/envoy/type/matcher/v3/path.proto +31 -0
- data/proto/envoy/type/matcher/v3/regex.proto +97 -0
- data/proto/envoy/type/matcher/v3/status_code_input.proto +23 -0
- data/proto/envoy/type/matcher/v3/string.proto +94 -0
- data/proto/envoy/type/matcher/v3/struct.proto +91 -0
- data/proto/envoy/type/matcher/v3/value.proto +80 -0
- data/proto/envoy/type/metadata/v3/metadata.proto +117 -0
- data/proto/envoy/type/percent.proto +52 -0
- data/proto/envoy/type/range.proto +43 -0
- data/proto/envoy/type/semantic_version.proto +24 -0
- data/proto/envoy/type/token_bucket.proto +36 -0
- data/proto/envoy/type/v3/BUILD +12 -0
- data/proto/envoy/type/v3/hash_policy.proto +43 -0
- data/proto/envoy/type/v3/http.proto +24 -0
- data/proto/envoy/type/v3/http_status.proto +199 -0
- data/proto/envoy/type/v3/percent.proto +57 -0
- data/proto/envoy/type/v3/range.proto +50 -0
- data/proto/envoy/type/v3/ratelimit_strategy.proto +79 -0
- data/proto/envoy/type/v3/ratelimit_unit.proto +37 -0
- data/proto/envoy/type/v3/semantic_version.proto +27 -0
- data/proto/envoy/type/v3/token_bucket.proto +39 -0
- data/proto/google/protobuf/any.proto +162 -0
- data/proto/google/protobuf/duration.proto +115 -0
- data/proto/google/protobuf/empty.proto +51 -0
- data/proto/google/protobuf/struct.proto +95 -0
- data/proto/google/protobuf/timestamp.proto +145 -0
- data/proto/google/protobuf/wrappers.proto +157 -0
- data/proto/google/rpc/status.proto +47 -0
- data/proto/readme.md +70 -0
- data/proto/udpa/annotations/migrate.proto +49 -0
- data/proto/udpa/annotations/security.proto +31 -0
- data/proto/udpa/annotations/sensitive.proto +14 -0
- data/proto/udpa/annotations/status.proto +34 -0
- data/proto/udpa/annotations/versioning.proto +17 -0
- data/proto/validate/validate.proto +862 -0
- data/proto/xds/annotations/v3/migrate.proto +46 -0
- data/proto/xds/annotations/v3/security.proto +30 -0
- data/proto/xds/annotations/v3/sensitive.proto +16 -0
- data/proto/xds/annotations/v3/status.proto +59 -0
- data/proto/xds/annotations/v3/versioning.proto +20 -0
- data/proto/xds/core/v3/authority.proto +22 -0
- data/proto/xds/core/v3/cidr.proto +25 -0
- data/proto/xds/core/v3/collection_entry.proto +55 -0
- data/proto/xds/core/v3/context_params.proto +23 -0
- data/proto/xds/core/v3/extension.proto +26 -0
- data/proto/xds/core/v3/resource.proto +29 -0
- data/proto/xds/core/v3/resource_locator.proto +118 -0
- data/proto/xds/core/v3/resource_name.proto +42 -0
- data/proto/xds/type/matcher/v3/cel.proto +37 -0
- data/proto/xds/type/matcher/v3/domain.proto +46 -0
- data/proto/xds/type/matcher/v3/http_inputs.proto +23 -0
- data/proto/xds/type/matcher/v3/ip.proto +53 -0
- data/proto/xds/type/matcher/v3/matcher.proto +144 -0
- data/proto/xds/type/matcher/v3/range.proto +69 -0
- data/proto/xds/type/matcher/v3/regex.proto +46 -0
- data/proto/xds/type/matcher/v3/string.proto +71 -0
- data/proto/xds/type/v3/cel.proto +77 -0
- data/proto/xds/type/v3/range.proto +40 -0
- data/proto/xds/type/v3/typed_struct.proto +44 -0
- data/readme.md +37 -0
- data/releases.md +5 -0
- data/xds/Dockerfile.backend +24 -0
- data/xds/Dockerfile.control-plane +22 -0
- data/xds/backend_server.rb +68 -0
- data/xds/docker-compose.yaml +89 -0
- data/xds/go.mod +22 -0
- data/xds/go.sum +82 -0
- data/xds/readme.md +122 -0
- data/xds/test/async/grpc/xds/client.rb +294 -0
- data/xds/test/async/grpc/xds/control_plane.rb +94 -0
- data/xds/test_server.go +355 -0
- data/xds/update_protos.sh +123 -0
- data.tar.gz.sig +0 -0
- metadata +386 -0
- 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
|
+
}
|