encoding/protobuf: remove extra space in comment
Change-Id: Ia325389e474003fc20917aea45cfef4a268b4b96
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2940
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/protobuf/testdata/attributes.proto.out.cue b/encoding/protobuf/testdata/attributes.proto.out.cue
index 4911be4..e75dd01 100644
--- a/encoding/protobuf/testdata/attributes.proto.out.cue
+++ b/encoding/protobuf/testdata/attributes.proto.out.cue
@@ -1,17 +1,17 @@
-// Copyright 2016 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2016 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
package v1
import (
@@ -29,57 +29,57 @@
numberVal?: number @protobuf(6,type=google.protobuf.NumberValue)
}
-// Attributes represents a set of typed name/value pairs. Many of Mixer's
-// API either consume and/or return attributes.
-//
-// Istio uses attributes to control the runtime behavior of services running in the service mesh.
-// Attributes are named and typed pieces of metadata describing ingress and egress traffic and the
-// environment this traffic occurs in. An Istio attribute carries a specific piece
-// of information such as the error code of an API request, the latency of an API request, or the
-// original IP address of a TCP connection. For example:
-//
-// ```yaml
-// request.path: xyz/abc
-// request.size: 234
-// request.time: 12:34:56.789 04/17/2017
-// source.ip: 192.168.0.1
-// target.service: example
-// ```
-//
+// Attributes represents a set of typed name/value pairs. Many of Mixer's
+// API either consume and/or return attributes.
+//
+// Istio uses attributes to control the runtime behavior of services running in the service mesh.
+// Attributes are named and typed pieces of metadata describing ingress and egress traffic and the
+// environment this traffic occurs in. An Istio attribute carries a specific piece
+// of information such as the error code of an API request, the latency of an API request, or the
+// original IP address of a TCP connection. For example:
+//
+// ```yaml
+// request.path: xyz/abc
+// request.size: 234
+// request.time: 12:34:56.789 04/17/2017
+// source.ip: 192.168.0.1
+// target.service: example
+// ```
+//
Attributes: {
- // A map of attribute name to its value.
+ // A map of attribute name to its value.
attributes: {
<_>: Attributes_AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
}
-// Specifies one attribute value with different type.
+// Specifies one attribute value with different type.
Attributes_AttributeValue: {
}
-// The attribute value.
+// The attribute value.
Attributes_AttributeValue: {
- // Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
+ // Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
stringValue: string @protobuf(2,name=string_value)
} | {
- // Used for values of type INT64
+ // Used for values of type INT64
int64Value: int64 @protobuf(3,name=int64_value)
} | {
- // Used for values of type DOUBLE
+ // Used for values of type DOUBLE
doubleValue: float64 @protobuf(4,type=double,name=double_value)
} | {
- // Used for values of type BOOL
+ // Used for values of type BOOL
boolValue: bool @protobuf(5,name=bool_value)
} | {
- // Used for values of type BYTES
+ // Used for values of type BYTES
bytesValue: bytes @protobuf(6,name=bytes_value)
} | {
- // Used for values of type TIMESTAMP
+ // Used for values of type TIMESTAMP
timestampValue: time.Time @protobuf(7,type=google.protobuf.Timestamp,name=timestamp_value)
} | {
- // Used for values of type DURATION
+ // Used for values of type DURATION
durationValue: time.Duration @protobuf(8,type=google.protobuf.Duration,name=duration_value)
} | {
- // Used for values of type STRING_MAP
+ // Used for values of type STRING_MAP
stringMapValue: Attributes_StringMap @protobuf(9,type=StringMap,name=string_map_value)
} | {
testValue: test.Test @protobuf(10,type=acme.test.Test,name=test_value)
@@ -87,61 +87,61 @@
testValue: test_test.AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
}
-// Defines a string map.
+// Defines a string map.
Attributes_StringMap: {
- // Holds a set of name/value pairs.
+ // Holds a set of name/value pairs.
entries: {
<_>: string
} @protobuf(1,type=map<string,string>)
}
-// Defines a list of attributes in compressed format optimized for transport.
-// Within this message, strings are referenced using integer indices into
-// one of two string dictionaries. Positive integers index into the global
-// deployment-wide dictionary, whereas negative integers index into the message-level
-// dictionary instead. The message-level dictionary is carried by the
-// `words` field of this message, the deployment-wide dictionary is determined via
-// configuration.
+// Defines a list of attributes in compressed format optimized for transport.
+// Within this message, strings are referenced using integer indices into
+// one of two string dictionaries. Positive integers index into the global
+// deployment-wide dictionary, whereas negative integers index into the message-level
+// dictionary instead. The message-level dictionary is carried by the
+// `words` field of this message, the deployment-wide dictionary is determined via
+// configuration.
CompressedAttributes: {
- // The message-level dictionary.
+ // The message-level dictionary.
words?: [...string] @protobuf(1)
- // Holds attributes of type STRING, DNS_NAME, EMAIL_ADDRESS, URI
+ // Holds attributes of type STRING, DNS_NAME, EMAIL_ADDRESS, URI
strings: {
<_>: int32
} @protobuf(2,type=map<sint32,sint32>)
- // Holds attributes of type INT64
+ // Holds attributes of type INT64
int64s: {
<_>: int64
} @protobuf(3,type=map<sint32,int64>)
- // Holds attributes of type DOUBLE
+ // Holds attributes of type DOUBLE
doubles: {
<_>: float64
} @protobuf(4,type=map<sint32,double>)
- // Holds attributes of type BOOL
+ // Holds attributes of type BOOL
bools: {
<_>: bool
} @protobuf(5,type=map<sint32,bool>)
- // Holds attributes of type TIMESTAMP
+ // Holds attributes of type TIMESTAMP
time: {
<_>: __time.Time
} @protobuf(6,type=map<sint32,google.protobuf.Timestamp>,"(gogoproto.nullable)=false","(gogoproto.stdtime)")
- // Holds attributes of type DURATION
+ // Holds attributes of type DURATION
durations: {
<_>: __time.Duration
} @protobuf(7,type=map<sint32,google.protobuf.Duration>,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
- // Holds attributes of type BYTES
+ // Holds attributes of type BYTES
bytes: {
<_>: __bytes
} @protobuf(8,type=map<sint32,bytes>)
- // Holds attributes of type STRING_MAP
+ // Holds attributes of type STRING_MAP
stringMaps: {
<_>: StringMap
} @protobuf(9,type=map<sint32,StringMap>,string_maps,"(gogoproto.nullable)=false")
@@ -149,10 +149,10 @@
__time = time
__bytes = bytes
-// A map of string to string. The keys and values in this map are dictionary
-// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
+// A map of string to string. The keys and values in this map are dictionary
+// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
StringMap: {
- // Holds a set of name/value pairs.
+ // Holds a set of name/value pairs.
entries: {
<_>: int32
} @protobuf(1,type=map<sint32,sint32>)
diff --git a/encoding/protobuf/testdata/client_config.proto.out.cue b/encoding/protobuf/testdata/client_config.proto.out.cue
index f8535a7..527eead 100644
--- a/encoding/protobuf/testdata/client_config.proto.out.cue
+++ b/encoding/protobuf/testdata/client_config.proto.out.cue
@@ -1,23 +1,23 @@
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// $title: Mixer Client
-// $description: Configuration state for the Mixer client library.
-// $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client
+// $title: Mixer Client
+// $description: Configuration state for the Mixer client library.
+// $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client
-// Describes the configuration state for the Mixer client library that's built into Envoy.
+// Describes the configuration state for the Mixer client library that's built into Envoy.
package client
import (
@@ -25,165 +25,165 @@
"time"
)
-// Specifies the behavior when the client is unable to connect to Mixer.
+// Specifies the behavior when the client is unable to connect to Mixer.
NetworkFailPolicy: {
- // Specifies the behavior when the client is unable to connect to Mixer.
+ // Specifies the behavior when the client is unable to connect to Mixer.
policy?: NetworkFailPolicy_FailPolicy @protobuf(1,type=FailPolicy)
- // Max retries on transport error.
+ // Max retries on transport error.
maxRetry?: uint32 @protobuf(2,name=max_retry)
- // Base time to wait between retries. Will be adjusted by exponential
- // backoff and jitter.
+ // Base time to wait between retries. Will be adjusted by exponential
+ // backoff and jitter.
baseRetryWait?: time.Duration @protobuf(3,type=google.protobuf.Duration,name=base_retry_wait)
- // Max time to wait between retries.
+ // Max time to wait between retries.
maxRetryWait?: time.Duration @protobuf(4,type=google.protobuf.Duration,name=max_retry_wait)
}
-// Example of single-value enum.
+// Example of single-value enum.
NetworkFailPolicy_FailPolicy:
- // If network connection fails, request is allowed and delivered to the
- // service.
+ // If network connection fails, request is allowed and delivered to the
+ // service.
"FAIL_OPEN"
NetworkFailPolicy_FailPolicy_value FAIL_OPEN: 0
-// Defines the per-service client configuration.
+// Defines the per-service client configuration.
ServiceConfig: {
- // If true, do not call Mixer Check.
+ // If true, do not call Mixer Check.
disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
- // If true, do not call Mixer Report.
+ // If true, do not call Mixer Report.
disableReportCalls?: bool @protobuf(2,name=disable_report_calls)
- // Send these attributes to Mixer in both Check and Report. This
- // typically includes the "destination.service" attribute.
- // In case of a per-route override, per-route attributes take precedence
- // over the attributes supplied in the client configuration.
+ // Send these attributes to Mixer in both Check and Report. This
+ // typically includes the "destination.service" attribute.
+ // In case of a per-route override, per-route attributes take precedence
+ // over the attributes supplied in the client configuration.
mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
- // HTTP API specifications to generate API attributes.
+ // HTTP API specifications to generate API attributes.
httpApiSpec?: [...HTTPAPISpec] @protobuf(4,name=http_api_spec)
- // Quota specifications to generate quota requirements.
+ // Quota specifications to generate quota requirements.
quotaSpec?: [...QuotaSpec] @protobuf(5,name=quota_spec)
- // Specifies the behavior when the client is unable to connect to Mixer.
- // This is the service-level policy. It overrides
- // [mesh-level
- // policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
+ // Specifies the behavior when the client is unable to connect to Mixer.
+ // This is the service-level policy. It overrides
+ // [mesh-level
+ // policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
networkFailPolicy?: NetworkFailPolicy @protobuf(7,name=network_fail_policy)
- // Default attributes to forward to upstream. This typically
- // includes the "source.ip" and "source.uid" attributes.
- // In case of a per-route override, per-route attributes take precedence
- // over the attributes supplied in the client configuration.
- //
- // Forwarded attributes take precedence over the static Mixer attributes.
- // The full order of application is as follows:
- // 1. static Mixer attributes from the filter config;
- // 2. static Mixer attributes from the route config;
- // 3. forwarded attributes from the source filter config (if any);
- // 4. forwarded attributes from the source route config (if any);
- // 5. derived attributes from the request metadata.
+ // Default attributes to forward to upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes.
+ // In case of a per-route override, per-route attributes take precedence
+ // over the attributes supplied in the client configuration.
+ //
+ // Forwarded attributes take precedence over the static Mixer attributes.
+ // The full order of application is as follows:
+ // 1. static Mixer attributes from the filter config;
+ // 2. static Mixer attributes from the route config;
+ // 3. forwarded attributes from the source filter config (if any);
+ // 4. forwarded attributes from the source route config (if any);
+ // 5. derived attributes from the request metadata.
forwardAttributes?: v1.Attributes @protobuf(8,type=Attributes,name=forward_attributes)
}
-// Defines the transport config on how to call Mixer.
+// Defines the transport config on how to call Mixer.
TransportConfig: {
- // The flag to disable check cache.
+ // The flag to disable check cache.
disableCheckCache?: bool @protobuf(1,name=disable_check_cache)
- // The flag to disable quota cache.
+ // The flag to disable quota cache.
disableQuotaCache?: bool @protobuf(2,name=disable_quota_cache)
- // The flag to disable report batch.
+ // The flag to disable report batch.
disableReportBatch?: bool @protobuf(3,name=disable_report_batch)
- // Specifies the behavior when the client is unable to connect to Mixer.
- // This is the mesh level policy. The default value for policy is FAIL_OPEN.
+ // Specifies the behavior when the client is unable to connect to Mixer.
+ // This is the mesh level policy. The default value for policy is FAIL_OPEN.
networkFailPolicy?: NetworkFailPolicy @protobuf(4,name=network_fail_policy)
- // Specify refresh interval to write Mixer client statistics to Envoy share
- // memory. If not specified, the interval is 10 seconds.
+ // Specify refresh interval to write Mixer client statistics to Envoy share
+ // memory. If not specified, the interval is 10 seconds.
statsUpdateInterval?: time.Duration @protobuf(5,type=google.protobuf.Duration,name=stats_update_interval)
- // Name of the cluster that will forward check calls to a pool of mixer
- // servers. Defaults to "mixer_server". By using different names for
- // checkCluster and reportCluster, it is possible to have one set of
- // Mixer servers handle check calls, while another set of Mixer servers
- // handle report calls.
- //
- // NOTE: Any value other than the default "mixer_server" will require the
- // Istio Grafana dashboards to be reconfigured to use the new name.
+ // Name of the cluster that will forward check calls to a pool of mixer
+ // servers. Defaults to "mixer_server". By using different names for
+ // checkCluster and reportCluster, it is possible to have one set of
+ // Mixer servers handle check calls, while another set of Mixer servers
+ // handle report calls.
+ //
+ // NOTE: Any value other than the default "mixer_server" will require the
+ // Istio Grafana dashboards to be reconfigured to use the new name.
checkCluster?: string @protobuf(6,name=check_cluster)
- // Name of the cluster that will forward report calls to a pool of mixer
- // servers. Defaults to "mixer_server". By using different names for
- // checkCluster and reportCluster, it is possible to have one set of
- // Mixer servers handle check calls, while another set of Mixer servers
- // handle report calls.
- //
- // NOTE: Any value other than the default "mixer_server" will require the
- // Istio Grafana dashboards to be reconfigured to use the new name.
+ // Name of the cluster that will forward report calls to a pool of mixer
+ // servers. Defaults to "mixer_server". By using different names for
+ // checkCluster and reportCluster, it is possible to have one set of
+ // Mixer servers handle check calls, while another set of Mixer servers
+ // handle report calls.
+ //
+ // NOTE: Any value other than the default "mixer_server" will require the
+ // Istio Grafana dashboards to be reconfigured to use the new name.
reportCluster?: string @protobuf(7,name=report_cluster)
- // Default attributes to forward to Mixer upstream. This typically
- // includes the "source.ip" and "source.uid" attributes. These
- // attributes are consumed by the proxy in front of mixer.
+ // Default attributes to forward to Mixer upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes. These
+ // attributes are consumed by the proxy in front of mixer.
attributesForMixerProxy?: v1.Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
}
-// Defines the client config for HTTP.
+// Defines the client config for HTTP.
HttpClientConfig: {
- // The transport config.
+ // The transport config.
transport?: TransportConfig @protobuf(1)
- // Map of control configuration indexed by destination.service. This
- // is used to support per-service configuration for cases where a
- // mixerclient serves multiple services.
+ // Map of control configuration indexed by destination.service. This
+ // is used to support per-service configuration for cases where a
+ // mixerclient serves multiple services.
serviceConfigs: {
<_>: ServiceConfig
} @protobuf(2,type=map<string,ServiceConfig>,service_configs)
- // Default destination service name if none was specified in the
- // client request.
+ // Default destination service name if none was specified in the
+ // client request.
defaultDestinationService?: string @protobuf(3,name=default_destination_service)
- // Default attributes to send to Mixer in both Check and
- // Report. This typically includes "destination.ip" and
- // "destination.uid" attributes.
+ // Default attributes to send to Mixer in both Check and
+ // Report. This typically includes "destination.ip" and
+ // "destination.uid" attributes.
mixerAttributes?: v1.Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
- // Default attributes to forward to upstream. This typically
- // includes the "source.ip" and "source.uid" attributes.
+ // Default attributes to forward to upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes.
forwardAttributes?: v1.Attributes @protobuf(5,type=Attributes,name=forward_attributes)
}
-// Defines the client config for TCP.
+// Defines the client config for TCP.
TcpClientConfig: {
- // The transport config.
+ // The transport config.
transport?: TransportConfig @protobuf(1)
- // Default attributes to send to Mixer in both Check and
- // Report. This typically includes "destination.ip" and
- // "destination.uid" attributes.
+ // Default attributes to send to Mixer in both Check and
+ // Report. This typically includes "destination.ip" and
+ // "destination.uid" attributes.
mixerAttributes?: v1.Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
- // If set to true, disables Mixer check calls.
+ // If set to true, disables Mixer check calls.
disableCheckCalls?: bool @protobuf(3,name=disable_check_calls)
- // If set to true, disables Mixer check calls.
+ // If set to true, disables Mixer check calls.
disableReportCalls?: bool @protobuf(4,name=disable_report_calls)
- // Quota specifications to generate quota requirements.
- // It applies on the new TCP connections.
+ // Quota specifications to generate quota requirements.
+ // It applies on the new TCP connections.
connectionQuotaSpec?: QuotaSpec @protobuf(5,name=connection_quota_spec)
- // Specify report interval to send periodical reports for long TCP
- // connections. If not specified, the interval is 10 seconds. This interval
- // should not be less than 1 second, otherwise it will be reset to 1 second.
+ // Specify report interval to send periodical reports for long TCP
+ // connections. If not specified, the interval is 10 seconds. This interval
+ // should not be less than 1 second, otherwise it will be reset to 1 second.
reportInterval?: time.Duration @protobuf(6,type=google.protobuf.Duration,name=report_interval)
}
diff --git a/encoding/protobuf/testdata/gateway.proto.out.cue b/encoding/protobuf/testdata/gateway.proto.out.cue
index ac72914..b8061e5 100644
--- a/encoding/protobuf/testdata/gateway.proto.out.cue
+++ b/encoding/protobuf/testdata/gateway.proto.out.cue
@@ -1,417 +1,417 @@
-// Copyright 2019 CUE Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2019 CUE Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// $title: Gateway
-// $description: Configuration affecting edge load balancer.
-// $location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html
+// $title: Gateway
+// $description: Configuration affecting edge load balancer.
+// $location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html
-// `Gateway` describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections. The specification
-// describes a set of ports that should be exposed, the type of protocol to
-// use, SNI configuration for the load balancer, etc.
-//
-// For example, the following Gateway configuration sets up a proxy to act
-// as a load balancer exposing port 80 and 9080 (http), 443 (https),
-// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
-// applied to the proxy running on a pod with labels `app:
-// my-gateway-controller`. While Istio will configure the proxy to listen
-// on these ports, it is the responsibility of the user to ensure that
-// external traffic to these ports are allowed into the mesh.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-//
-// The Gateway specification above describes the L4-L6 properties of a load
-// balancer. A `VirtualService` can then be bound to a gateway to control
-// the forwarding of traffic arriving at a particular host or gateway port.
-//
-// For example, the following VirtualService splits traffic for
-// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
-// `http://uk.bookinfo.com:9080/reviews`,
-// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
-// an internal reviews service on port 9080. In addition, requests
-// containing the cookie "user: dev-123" will be sent to special port 7777
-// in the qa version. The same rule is also applicable inside the mesh for
-// requests to the "reviews.prod.svc.cluster.local" service. This rule is
-// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
-// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-//
-// The following VirtualService forwards traffic arriving at (external)
-// port 27017 to internal Mongo server on port 5555. This rule is not
-// applicable internally in the mesh as the gateway list omits the
-// reserved name `mesh`.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-Mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same
-// namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-//
-// It is possible to restrict the set of virtual services that can bind to
-// a gateway server using the namespace/hostname syntax in the hosts field.
-// For example, the following Gateway allows any virtual service in the ns1
-// namespace to bind to it, while restricting only the virtual service with
-// foo.bar.com host in the ns2 namespace to bind to it.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-//
+// `Gateway` describes a load balancer operating at the edge of the mesh
+// receiving incoming or outgoing HTTP/TCP connections. The specification
+// describes a set of ports that should be exposed, the type of protocol to
+// use, SNI configuration for the load balancer, etc.
+//
+// For example, the following Gateway configuration sets up a proxy to act
+// as a load balancer exposing port 80 and 9080 (http), 443 (https),
+// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
+// applied to the proxy running on a pod with labels `app:
+// my-gateway-controller`. While Istio will configure the proxy to listen
+// on these ports, it is the responsibility of the user to ensure that
+// external traffic to these ports are allowed into the mesh.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-gateway
+// namespace: some-config-namespace
+// spec:
+// selector:
+// app: my-gateway-controller
+// servers:
+// - port:
+// number: 80
+// name: http
+// protocol: HTTP
+// hosts:
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// tls:
+// httpsRedirect: true # sends 301 redirect for http requests
+// - port:
+// number: 443
+// name: https-443
+// protocol: HTTPS
+// hosts:
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// tls:
+// mode: SIMPLE # enables HTTPS on this port
+// serverCertificate: /etc/certs/servercert.pem
+// privateKey: /etc/certs/privatekey.pem
+// - port:
+// number: 9443
+// name: https-9443
+// protocol: HTTPS
+// hosts:
+// - "bookinfo-namespace/*.bookinfo.com"
+// tls:
+// mode: SIMPLE # enables HTTPS on this port
+// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
+// - port:
+// number: 9080
+// name: http-wildcard
+// protocol: HTTP
+// hosts:
+// - "*"
+// - port:
+// number: 2379 # to expose internal service via external port 2379
+// name: mongo
+// protocol: MONGO
+// hosts:
+// - "*"
+// ```
+//
+// The Gateway specification above describes the L4-L6 properties of a load
+// balancer. A `VirtualService` can then be bound to a gateway to control
+// the forwarding of traffic arriving at a particular host or gateway port.
+//
+// For example, the following VirtualService splits traffic for
+// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
+// `http://uk.bookinfo.com:9080/reviews`,
+// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
+// an internal reviews service on port 9080. In addition, requests
+// containing the cookie "user: dev-123" will be sent to special port 7777
+// in the qa version. The same rule is also applicable inside the mesh for
+// requests to the "reviews.prod.svc.cluster.local" service. This rule is
+// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
+// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: bookinfo-rule
+// namespace: bookinfo-namespace
+// spec:
+// hosts:
+// - reviews.prod.svc.cluster.local
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// gateways:
+// - some-config-namespace/my-gateway
+// - mesh # applies to all the sidecars in the mesh
+// http:
+// - match:
+// - headers:
+// cookie:
+// exact: "user=dev-123"
+// route:
+// - destination:
+// port:
+// number: 7777
+// host: reviews.qa.svc.cluster.local
+// - match:
+// - uri:
+// prefix: /reviews/
+// route:
+// - destination:
+// port:
+// number: 9080 # can be omitted if it's the only port for reviews
+// host: reviews.prod.svc.cluster.local
+// weight: 80
+// - destination:
+// host: reviews.qa.svc.cluster.local
+// weight: 20
+// ```
+//
+// The following VirtualService forwards traffic arriving at (external)
+// port 27017 to internal Mongo server on port 5555. This rule is not
+// applicable internally in the mesh as the gateway list omits the
+// reserved name `mesh`.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: bookinfo-Mongo
+// namespace: bookinfo-namespace
+// spec:
+// hosts:
+// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
+// gateways:
+// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same
+// namespace as virtual service.
+// tcp:
+// - match:
+// - port: 27017
+// route:
+// - destination:
+// host: mongo.prod.svc.cluster.local
+// port:
+// number: 5555
+// ```
+//
+// It is possible to restrict the set of virtual services that can bind to
+// a gateway server using the namespace/hostname syntax in the hosts field.
+// For example, the following Gateway allows any virtual service in the ns1
+// namespace to bind to it, while restricting only the virtual service with
+// foo.bar.com host in the ns2 namespace to bind to it.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-gateway
+// namespace: some-config-namespace
+// spec:
+// selector:
+// app: my-gateway-controller
+// servers:
+// - port:
+// number: 80
+// name: http
+// protocol: HTTP
+// hosts:
+// - "ns1/*"
+// - "ns2/foo.bar.com"
+// ```
+//
package v1alpha3
Gateway: {
- // REQUIRED: A list of server specifications.
+ // REQUIRED: A list of server specifications.
servers?: [...Server] @protobuf(1)
- // REQUIRED: One or more labels that indicate a specific set of pods/VMs
- // on which this gateway configuration should be applied. The scope of
- // label search is restricted to the configuration namespace in which the
- // the resource is present. In other words, the Gateway resource must
- // reside in the same namespace as the gateway workload instance.
+ // REQUIRED: One or more labels that indicate a specific set of pods/VMs
+ // on which this gateway configuration should be applied. The scope of
+ // label search is restricted to the configuration namespace in which the
+ // the resource is present. In other words, the Gateway resource must
+ // reside in the same namespace as the gateway workload instance.
selector: {
<_>: string
} @protobuf(2,type=map<string,string>)
selector? <name>: name
}
-// `Server` describes the properties of the proxy on a given load balancer
-// port. For example,
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingress-gateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-//
-// Another example
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingress-gateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-//
-// The following is an example of TLS configuration for port 443
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingress-gateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// serverCertificate: /etc/certs/server.pem
-// privateKey: /etc/certs/privatekey.pem
-// ```
+// `Server` describes the properties of the proxy on a given load balancer
+// port. For example,
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-ingress
+// spec:
+// selector:
+// app: my-ingress-gateway
+// servers:
+// - port:
+// number: 80
+// name: http2
+// protocol: HTTP2
+// hosts:
+// - "*"
+// ```
+//
+// Another example
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-tcp-ingress
+// spec:
+// selector:
+// app: my-tcp-ingress-gateway
+// servers:
+// - port:
+// number: 27018
+// name: mongo
+// protocol: MONGO
+// hosts:
+// - "*"
+// ```
+//
+// The following is an example of TLS configuration for port 443
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-tls-ingress
+// spec:
+// selector:
+// app: my-tls-ingress-gateway
+// servers:
+// - port:
+// number: 443
+// name: https
+// protocol: HTTPS
+// hosts:
+// - "*"
+// tls:
+// mode: SIMPLE
+// serverCertificate: /etc/certs/server.pem
+// privateKey: /etc/certs/privatekey.pem
+// ```
Server: {
- // REQUIRED: The Port on which the proxy should listen for incoming
- // connections.
+ // REQUIRED: The Port on which the proxy should listen for incoming
+ // connections.
port?: Port @protobuf(1)
port?: >10 & <100
- // $hide_from_docs
- // The ip or the Unix domain socket to which the listener should be bound
- // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
- // (Linux abstract namespace). When using Unix domain sockets, the port
- // number should be 0.
+ // $hide_from_docs
+ // The ip or the Unix domain socket to which the listener should be bound
+ // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
+ // (Linux abstract namespace). When using Unix domain sockets, the port
+ // number should be 0.
bind?: string @protobuf(4)
- // REQUIRED. One or more hosts exposed by this gateway.
- // While typically applicable to
- // HTTP services, it can also be used for TCP services using TLS with SNI.
- // A host is specified as a `dnsName` with an optional `namespace/` prefix.
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
- // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified,
- // the `VirtualService` hosts will be selected from any available namespace.
- // Any associated `DestinationRule` in the same namespace will also be used.
- //
- // A `VirtualService` must be bound to the gateway and must have one or
- // more hosts that match the hosts specified in a server. The match
- // could be an exact match or a suffix match with the server's hosts. For
- // example, if the server's hosts specifies `*.example.com`, a
- // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
- // match. However, a `VirtualService` with host `example.com` or
- // `newexample.com` will not match.
- //
- // NOTE: Only virtual services exported to the gateway's namespace
- // (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will not be
- // available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
+ // REQUIRED. One or more hosts exposed by this gateway.
+ // While typically applicable to
+ // HTTP services, it can also be used for TCP services using TLS with SNI.
+ // A host is specified as a `dnsName` with an optional `namespace/` prefix.
+ // The `dnsName` should be specified using FQDN format, optionally including
+ // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
+ // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
+ // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified,
+ // the `VirtualService` hosts will be selected from any available namespace.
+ // Any associated `DestinationRule` in the same namespace will also be used.
+ //
+ // A `VirtualService` must be bound to the gateway and must have one or
+ // more hosts that match the hosts specified in a server. The match
+ // could be an exact match or a suffix match with the server's hosts. For
+ // example, if the server's hosts specifies `*.example.com`, a
+ // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
+ // match. However, a `VirtualService` with host `example.com` or
+ // `newexample.com` will not match.
+ //
+ // NOTE: Only virtual services exported to the gateway's namespace
+ // (e.g., `exportTo` value of `*`) can be referenced.
+ // Private configurations (e.g., `exportTo` set to `.`) will not be
+ // available. Refer to the `exportTo` setting in `VirtualService`,
+ // `DestinationRule`, and `ServiceEntry` configurations for details.
hosts?: [...string] @protobuf(2)
- // Set of TLS related options that govern the server's behavior. Use
- // these options to control if all http requests should be redirected to
- // https, and the TLS modes to use.
+ // Set of TLS related options that govern the server's behavior. Use
+ // these options to control if all http requests should be redirected to
+ // https, and the TLS modes to use.
tls?: Server_TLSOptions @protobuf(3,type=TLSOptions)
- // The loopback IP endpoint or Unix domain socket to which traffic should
- // be forwarded to by default. Format should be `127.0.0.1:PORT` or
- // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
+ // The loopback IP endpoint or Unix domain socket to which traffic should
+ // be forwarded to by default. Format should be `127.0.0.1:PORT` or
+ // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
defaultEndpoint?: string @protobuf(5,name=default_endpoint)
}
Server_TLSOptions: {
- // If set to true, the load balancer will send a 301 redirect for all
- // http connections, asking the clients to use HTTPS.
+ // If set to true, the load balancer will send a 301 redirect for all
+ // http connections, asking the clients to use HTTPS.
httpsRedirect?: bool @protobuf(1,name=https_redirect)
- // Optional: Indicates whether connections to this port should be
- // secured using TLS. The value of this field determines how TLS is
- // enforced.
+ // Optional: Indicates whether connections to this port should be
+ // secured using TLS. The value of this field determines how TLS is
+ // enforced.
mode?: Server_TLSOptions_TLSmode @protobuf(2,type=TLSmode)
- // Extra comment.
+ // Extra comment.
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server-side TLS certificate to use.
+ // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
+ // holding the server-side TLS certificate to use.
serverCertificate?: string @protobuf(3,name=server_certificate)
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server's private key.
+ // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
+ // holding the server's private key.
privateKey?: string @protobuf(4,name=private_key)
- // REQUIRED if mode is `MUTUAL`. The path to a file containing
- // certificate authority certificates to use in verifying a presented
- // client side certificate.
+ // REQUIRED if mode is `MUTUAL`. The path to a file containing
+ // certificate authority certificates to use in verifying a presented
+ // client side certificate.
caCertificates?: string @protobuf(5,name=ca_certificates)
- // The credentialName stands for a unique identifier that can be used
- // to identify the serverCertificate and the privateKey. The
- // credentialName appended with suffix "-cacert" is used to identify
- // the CaCertificates associated with this server. Gateway workloads
- // capable of fetching credentials from a remote credential store such
- // as Kubernetes secrets, will be configured to retrieve the
- // serverCertificate and the privateKey using credentialName, instead
- // of using the file system paths specified above. If using mutual TLS,
- // gateway workload instances will retrieve the CaCertificates using
- // credentialName-cacert. The semantics of the name are platform
- // dependent. In Kubernetes, the default Istio supplied credential
- // server expects the credentialName to match the name of the
- // Kubernetes secret that holds the server certificate, the private
- // key, and the CA certificate (if using mutual TLS). Set the
- // `ISTIO_META_USER_SDS` metadata variable in the gateway's proxy to
- // enable the dynamic credential fetching feature.
+ // The credentialName stands for a unique identifier that can be used
+ // to identify the serverCertificate and the privateKey. The
+ // credentialName appended with suffix "-cacert" is used to identify
+ // the CaCertificates associated with this server. Gateway workloads
+ // capable of fetching credentials from a remote credential store such
+ // as Kubernetes secrets, will be configured to retrieve the
+ // serverCertificate and the privateKey using credentialName, instead
+ // of using the file system paths specified above. If using mutual TLS,
+ // gateway workload instances will retrieve the CaCertificates using
+ // credentialName-cacert. The semantics of the name are platform
+ // dependent. In Kubernetes, the default Istio supplied credential
+ // server expects the credentialName to match the name of the
+ // Kubernetes secret that holds the server certificate, the private
+ // key, and the CA certificate (if using mutual TLS). Set the
+ // `ISTIO_META_USER_SDS` metadata variable in the gateway's proxy to
+ // enable the dynamic credential fetching feature.
credentialName?: string @protobuf(10,name=credential_name)
- // A list of alternate names to verify the subject identity in the
- // certificate presented by the client.
+ // A list of alternate names to verify the subject identity in the
+ // certificate presented by the client.
subjectAltNames?: [...string] @protobuf(6,name=subject_alt_names)
- // Optional: Minimum TLS protocol version.
+ // Optional: Minimum TLS protocol version.
minProtocolVersion?: Server_TLSOptions_TLSProtocol @protobuf(7,type=TLSProtocol,name=min_protocol_version)
- // Optional: Maximum TLS protocol version.
+ // Optional: Maximum TLS protocol version.
maxProtocolVersion?: Server_TLSOptions_TLSProtocol @protobuf(8,type=TLSProtocol,name=max_protocol_version)
- // Optional: If specified, only support the specified cipher list.
- // Otherwise default to the default cipher list supported by Envoy.
+ // Optional: If specified, only support the specified cipher list.
+ // Otherwise default to the default cipher list supported by Envoy.
cipherSuites?: [...string] @protobuf(9,name=cipher_suites)
}
-// TLS modes enforced by the proxy
+// TLS modes enforced by the proxy
Server_TLSOptions_TLSmode:
- // The SNI string presented by the client will be used as the match
- // criterion in a VirtualService TLS route to determine the
- // destination service from the service registry.
+ // The SNI string presented by the client will be used as the match
+ // criterion in a VirtualService TLS route to determine the
+ // destination service from the service registry.
*"PASSTHROUGH" |
- // Secure connections with standard TLS semantics.
+ // Secure connections with standard TLS semantics.
"SIMPLE" |
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
+ // Secure connections to the upstream using mutual TLS by presenting
+ // client certificates for authentication.
"MUTUAL" |
- // Similar to the passthrough mode, except servers with this TLS mode
- // do not require an associated VirtualService to map from the SNI
- // value to service in the registry. The destination details such as
- // the service/subset/port are encoded in the SNI value. The proxy
- // will forward to the upstream (Envoy) cluster (a group of
- // endpoints) specified by the SNI value. This server is typically
- // used to provide connectivity between services in disparate L3
- // networks that otherwise do not have direct connectivity between
- // their respective endpoints. Use of this mode assumes that both the
- // source and the destination are using Istio mTLS to secure traffic.
+ // Similar to the passthrough mode, except servers with this TLS mode
+ // do not require an associated VirtualService to map from the SNI
+ // value to service in the registry. The destination details such as
+ // the service/subset/port are encoded in the SNI value. The proxy
+ // will forward to the upstream (Envoy) cluster (a group of
+ // endpoints) specified by the SNI value. This server is typically
+ // used to provide connectivity between services in disparate L3
+ // networks that otherwise do not have direct connectivity between
+ // their respective endpoints. Use of this mode assumes that both the
+ // source and the destination are using Istio mTLS to secure traffic.
"AUTO_PASSTHROUGH"
Server_TLSOptions_TLSmode_value: {
@@ -421,13 +421,13 @@
AUTO_PASSTHROUGH: 3
}
-// TLS protocol versions.
+// TLS protocol versions.
Server_TLSOptions_TLSProtocol:
- *"TLS_AUTO" | // Automatically choose the optimal TLS version.
- "TLSV1_0" | // TLS version 1.0
- "TLSV1_1" | // TLS version 1.1
- "TLSV1_2" | // TLS version 1.2
- "TLSV1_3" // TLS version 1.3
+ *"TLS_AUTO" | // Automatically choose the optimal TLS version.
+ "TLSV1_0" | // TLS version 1.0
+ "TLSV1_1" | // TLS version 1.1
+ "TLSV1_2" | // TLS version 1.2
+ "TLSV1_3" // TLS version 1.3
Server_TLSOptions_TLSProtocol_value: {
TLS_AUTO: 0
@@ -437,17 +437,17 @@
TLSV1_3: 4
}
-// Port describes the properties of a specific port of a service.
+// Port describes the properties of a specific port of a service.
Port: {
- // REQUIRED: A valid non-negative integer port number.
+ // REQUIRED: A valid non-negative integer port number.
number?: uint32 @protobuf(1)
- // REQUIRED: The protocol exposed on the port.
- // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
- // TLS implies the connection will be routed based on the SNI header to
- // the destination without terminating the TLS connection.
+ // REQUIRED: The protocol exposed on the port.
+ // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
+ // TLS implies the connection will be routed based on the SNI header to
+ // the destination without terminating the TLS connection.
protocol?: string @protobuf(2)
- // Label assigned to the port.
+ // Label assigned to the port.
name?: string @protobuf(3)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
index cf13972..3211820 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/attributes_proto_gen.cue
@@ -1,17 +1,17 @@
-// Copyright 2016 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2016 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
package v1
import (
@@ -29,57 +29,57 @@
numberVal?: number @protobuf(6,type=google.protobuf.NumberValue)
}
-// Attributes represents a set of typed name/value pairs. Many of Mixer's
-// API either consume and/or return attributes.
-//
-// Istio uses attributes to control the runtime behavior of services running in the service mesh.
-// Attributes are named and typed pieces of metadata describing ingress and egress traffic and the
-// environment this traffic occurs in. An Istio attribute carries a specific piece
-// of information such as the error code of an API request, the latency of an API request, or the
-// original IP address of a TCP connection. For example:
-//
-// ```yaml
-// request.path: xyz/abc
-// request.size: 234
-// request.time: 12:34:56.789 04/17/2017
-// source.ip: 192.168.0.1
-// target.service: example
-// ```
-//
+// Attributes represents a set of typed name/value pairs. Many of Mixer's
+// API either consume and/or return attributes.
+//
+// Istio uses attributes to control the runtime behavior of services running in the service mesh.
+// Attributes are named and typed pieces of metadata describing ingress and egress traffic and the
+// environment this traffic occurs in. An Istio attribute carries a specific piece
+// of information such as the error code of an API request, the latency of an API request, or the
+// original IP address of a TCP connection. For example:
+//
+// ```yaml
+// request.path: xyz/abc
+// request.size: 234
+// request.time: 12:34:56.789 04/17/2017
+// source.ip: 192.168.0.1
+// target.service: example
+// ```
+//
Attributes: {
- // A map of attribute name to its value.
+ // A map of attribute name to its value.
attributes: {
<_>: Attributes_AttributeValue
} @protobuf(1,type=map<string,AttributeValue>)
}
-// Specifies one attribute value with different type.
+// Specifies one attribute value with different type.
Attributes_AttributeValue: {
}
-// The attribute value.
+// The attribute value.
Attributes_AttributeValue: {
- // Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
+ // Used for values of type STRING, DNS_NAME, EMAIL_ADDRESS, and URI
stringValue: string @protobuf(2,name=string_value)
} | {
- // Used for values of type INT64
+ // Used for values of type INT64
int64Value: int64 @protobuf(3,name=int64_value)
} | {
- // Used for values of type DOUBLE
+ // Used for values of type DOUBLE
doubleValue: float64 @protobuf(4,type=double,name=double_value)
} | {
- // Used for values of type BOOL
+ // Used for values of type BOOL
boolValue: bool @protobuf(5,name=bool_value)
} | {
- // Used for values of type BYTES
+ // Used for values of type BYTES
bytesValue: bytes @protobuf(6,name=bytes_value)
} | {
- // Used for values of type TIMESTAMP
+ // Used for values of type TIMESTAMP
timestampValue: time.Time @protobuf(7,type=google.protobuf.Timestamp,name=timestamp_value)
} | {
- // Used for values of type DURATION
+ // Used for values of type DURATION
durationValue: time.Duration @protobuf(8,type=google.protobuf.Duration,name=duration_value)
} | {
- // Used for values of type STRING_MAP
+ // Used for values of type STRING_MAP
stringMapValue: Attributes_StringMap @protobuf(9,type=StringMap,name=string_map_value)
} | {
testValue: test.Test @protobuf(10,type=acme.test.Test,name=test_value)
@@ -87,61 +87,61 @@
testValue: test_test.AnotherTest @protobuf(11,type=acme.test.test.AnotherTest,name=test_value)
}
-// Defines a string map.
+// Defines a string map.
Attributes_StringMap: {
- // Holds a set of name/value pairs.
+ // Holds a set of name/value pairs.
entries: {
<_>: string
} @protobuf(1,type=map<string,string>)
}
-// Defines a list of attributes in compressed format optimized for transport.
-// Within this message, strings are referenced using integer indices into
-// one of two string dictionaries. Positive integers index into the global
-// deployment-wide dictionary, whereas negative integers index into the message-level
-// dictionary instead. The message-level dictionary is carried by the
-// `words` field of this message, the deployment-wide dictionary is determined via
-// configuration.
+// Defines a list of attributes in compressed format optimized for transport.
+// Within this message, strings are referenced using integer indices into
+// one of two string dictionaries. Positive integers index into the global
+// deployment-wide dictionary, whereas negative integers index into the message-level
+// dictionary instead. The message-level dictionary is carried by the
+// `words` field of this message, the deployment-wide dictionary is determined via
+// configuration.
CompressedAttributes: {
- // The message-level dictionary.
+ // The message-level dictionary.
words?: [...string] @protobuf(1)
- // Holds attributes of type STRING, DNS_NAME, EMAIL_ADDRESS, URI
+ // Holds attributes of type STRING, DNS_NAME, EMAIL_ADDRESS, URI
strings: {
<_>: int32
} @protobuf(2,type=map<sint32,sint32>)
- // Holds attributes of type INT64
+ // Holds attributes of type INT64
int64s: {
<_>: int64
} @protobuf(3,type=map<sint32,int64>)
- // Holds attributes of type DOUBLE
+ // Holds attributes of type DOUBLE
doubles: {
<_>: float64
} @protobuf(4,type=map<sint32,double>)
- // Holds attributes of type BOOL
+ // Holds attributes of type BOOL
bools: {
<_>: bool
} @protobuf(5,type=map<sint32,bool>)
- // Holds attributes of type TIMESTAMP
+ // Holds attributes of type TIMESTAMP
time: {
<_>: __time.Time
} @protobuf(6,type=map<sint32,google.protobuf.Timestamp>,"(gogoproto.nullable)=false","(gogoproto.stdtime)")
- // Holds attributes of type DURATION
+ // Holds attributes of type DURATION
durations: {
<_>: __time.Duration
} @protobuf(7,type=map<sint32,google.protobuf.Duration>,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
- // Holds attributes of type BYTES
+ // Holds attributes of type BYTES
bytes: {
<_>: __bytes
} @protobuf(8,type=map<sint32,bytes>)
- // Holds attributes of type STRING_MAP
+ // Holds attributes of type STRING_MAP
stringMaps: {
<_>: StringMap
} @protobuf(9,type=map<sint32,StringMap>,string_maps,"(gogoproto.nullable)=false")
@@ -149,10 +149,10 @@
__time = time
__bytes = bytes
-// A map of string to string. The keys and values in this map are dictionary
-// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
+// A map of string to string. The keys and values in this map are dictionary
+// indices (see the [Attributes][istio.mixer.v1.CompressedAttributes] message for an explanation)
StringMap: {
- // Holds a set of name/value pairs.
+ // Holds a set of name/value pairs.
entries: {
<_>: int32
} @protobuf(1,type=map<sint32,sint32>)
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
index 3650de8..6594c92 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/api_spec_proto_gen.cue
@@ -1,228 +1,228 @@
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
package client
import "istio.io/api/mixer/v1"
-// HTTPAPISpec defines the canonical configuration for generating
-// API-related attributes from HTTP requests based on the method and
-// uri templated path matches. It is sufficient for defining the API
-// surface of a service for the purposes of API attribute
-// generation. It is not intended to represent auth, quota,
-// documentation, or other information commonly found in other API
-// specifications, e.g. OpenAPI.
-//
-// Existing standards that define operations (or methods) in terms of
-// HTTP methods and paths can be normalized to this format for use in
-// Istio. For example, a simple petstore API described by OpenAPIv2
-// [here](https://github.com/googleapis/gnostic/blob/master/examples/v2.0/yaml/petstore-simple.yaml)
-// can be represented with the following HTTPAPISpec.
-//
-// ```yaml
-// apiVersion: config.istio.io/v1alpha2
-// kind: HTTPAPISpec
-// metadata:
-// name: petstore
-// namespace: default
-// spec:
-// attributes:
-// attributes:
-// api.service:
-// stringValue: petstore.swagger.io
-// api.version:
-// stringValue: 1.0.0
-// patterns:
-// - attributes:
-// attributes:
-// api.operation:
-// stringValue: findPets
-// httpMethod: GET
-// uriTemplate: /api/pets
-// - attributes:
-// attributes:
-// api.operation:
-// stringValue: addPet
-// httpMethod: POST
-// uriTemplate: /api/pets
-// - attributes:
-// attributes:
-// api.operation:
-// stringValue: findPetById
-// httpMethod: GET
-// uriTemplate: /api/pets/{id}
-// - attributes:
-// attributes:
-// api.operation:
-// stringValue: deletePet
-// httpMethod: DELETE
-// uriTemplate: /api/pets/{id}
-// api_keys:
-// - query: api-key
-// ```
+// HTTPAPISpec defines the canonical configuration for generating
+// API-related attributes from HTTP requests based on the method and
+// uri templated path matches. It is sufficient for defining the API
+// surface of a service for the purposes of API attribute
+// generation. It is not intended to represent auth, quota,
+// documentation, or other information commonly found in other API
+// specifications, e.g. OpenAPI.
+//
+// Existing standards that define operations (or methods) in terms of
+// HTTP methods and paths can be normalized to this format for use in
+// Istio. For example, a simple petstore API described by OpenAPIv2
+// [here](https://github.com/googleapis/gnostic/blob/master/examples/v2.0/yaml/petstore-simple.yaml)
+// can be represented with the following HTTPAPISpec.
+//
+// ```yaml
+// apiVersion: config.istio.io/v1alpha2
+// kind: HTTPAPISpec
+// metadata:
+// name: petstore
+// namespace: default
+// spec:
+// attributes:
+// attributes:
+// api.service:
+// stringValue: petstore.swagger.io
+// api.version:
+// stringValue: 1.0.0
+// patterns:
+// - attributes:
+// attributes:
+// api.operation:
+// stringValue: findPets
+// httpMethod: GET
+// uriTemplate: /api/pets
+// - attributes:
+// attributes:
+// api.operation:
+// stringValue: addPet
+// httpMethod: POST
+// uriTemplate: /api/pets
+// - attributes:
+// attributes:
+// api.operation:
+// stringValue: findPetById
+// httpMethod: GET
+// uriTemplate: /api/pets/{id}
+// - attributes:
+// attributes:
+// api.operation:
+// stringValue: deletePet
+// httpMethod: DELETE
+// uriTemplate: /api/pets/{id}
+// api_keys:
+// - query: api-key
+// ```
HTTPAPISpec: {
- // List of attributes that are generated when *any* of the HTTP
- // patterns match. This list typically includes the "api.service"
- // and "api.version" attributes.
+ // List of attributes that are generated when *any* of the HTTP
+ // patterns match. This list typically includes the "api.service"
+ // and "api.version" attributes.
attributes?: v1.Attributes @protobuf(1,type=Attributes)
- // List of HTTP patterns to match.
+ // List of HTTP patterns to match.
patterns?: [...HTTPAPISpecPattern] @protobuf(2)
- // List of APIKey that describes how to extract an API-KEY from an
- // HTTP request. The first API-Key match found in the list is used,
- // i.e. 'OR' semantics.
- //
- // The following default policies are used to generate the
- // `request.api_key` attribute if no explicit APIKey is defined.
- //
- // `query: key, `query: api_key`, and then `header: x-api-key`
- //
+ // List of APIKey that describes how to extract an API-KEY from an
+ // HTTP request. The first API-Key match found in the list is used,
+ // i.e. 'OR' semantics.
+ //
+ // The following default policies are used to generate the
+ // `request.api_key` attribute if no explicit APIKey is defined.
+ //
+ // `query: key, `query: api_key`, and then `header: x-api-key`
+ //
apiKeys?: [...APIKey] @protobuf(3,name=api_keys)
}
-// HTTPAPISpecPattern defines a single pattern to match against
-// incoming HTTP requests. The per-pattern list of attributes is
-// generated if both the http_method and uri_template match. In
-// addition, the top-level list of attributes in the HTTPAPISpec is also
-// generated.
-//
-// ```yaml
-// pattern:
-// - attributes
-// api.operation: doFooBar
-// httpMethod: GET
-// uriTemplate: /foo/bar
-// ```
+// HTTPAPISpecPattern defines a single pattern to match against
+// incoming HTTP requests. The per-pattern list of attributes is
+// generated if both the http_method and uri_template match. In
+// addition, the top-level list of attributes in the HTTPAPISpec is also
+// generated.
+//
+// ```yaml
+// pattern:
+// - attributes
+// api.operation: doFooBar
+// httpMethod: GET
+// uriTemplate: /foo/bar
+// ```
HTTPAPISpecPattern: {
- // List of attributes that are generated if the HTTP request matches
- // the specified http_method and uri_template. This typically
- // includes the "api.operation" attribute.
+ // List of attributes that are generated if the HTTP request matches
+ // the specified http_method and uri_template. This typically
+ // includes the "api.operation" attribute.
attributes?: v1.Attributes @protobuf(1,type=Attributes)
- // HTTP request method to match against as defined by
- // [rfc7231](https://tools.ietf.org/html/rfc7231#page-21). For
- // example: GET, HEAD, POST, PUT, DELETE.
+ // HTTP request method to match against as defined by
+ // [rfc7231](https://tools.ietf.org/html/rfc7231#page-21). For
+ // example: GET, HEAD, POST, PUT, DELETE.
httpMethod?: string @protobuf(2,name=http_method)
}
HTTPAPISpecPattern: {
- // URI template to match against as defined by
- // [rfc6570](https://tools.ietf.org/html/rfc6570). For example, the
- // following are valid URI templates:
- //
- // /pets
- // /pets/{id}
- // /dictionary/{term:1}/{term}
- // /search{?q*,lang}
- //
+ // URI template to match against as defined by
+ // [rfc6570](https://tools.ietf.org/html/rfc6570). For example, the
+ // following are valid URI templates:
+ //
+ // /pets
+ // /pets/{id}
+ // /dictionary/{term:1}/{term}
+ // /search{?q*,lang}
+ //
uriTemplate: string @protobuf(3,name=uri_template)
} | {
- // EXPERIMENTAL:
- //
- // ecmascript style regex-based match as defined by
- // [EDCA-262](http://en.cppreference.com/w/cpp/regex/ecmascript). For
- // example,
- //
- // "^/pets/(.*?)?"
- //
+ // EXPERIMENTAL:
+ //
+ // ecmascript style regex-based match as defined by
+ // [EDCA-262](http://en.cppreference.com/w/cpp/regex/ecmascript). For
+ // example,
+ //
+ // "^/pets/(.*?)?"
+ //
regex: string @protobuf(4)
}
-// APIKey defines the explicit configuration for generating the
-// `request.api_key` attribute from HTTP requests.
-//
-// See [API Keys](https://swagger.io/docs/specification/authentication/api-keys)
-// for a general overview of API keys as defined by OpenAPI.
+// APIKey defines the explicit configuration for generating the
+// `request.api_key` attribute from HTTP requests.
+//
+// See [API Keys](https://swagger.io/docs/specification/authentication/api-keys)
+// for a general overview of API keys as defined by OpenAPI.
APIKey: {
}
APIKey: {
- // API Key is sent as a query parameter. `query` represents the
- // query string parameter name.
- //
- // For example, `query=api_key` should be used with the
- // following request:
- //
- // GET /something?api_key=abcdef12345
- //
+ // API Key is sent as a query parameter. `query` represents the
+ // query string parameter name.
+ //
+ // For example, `query=api_key` should be used with the
+ // following request:
+ //
+ // GET /something?api_key=abcdef12345
+ //
query: string @protobuf(1)
} | {
- // API key is sent in a request header. `header` represents the
- // header name.
- //
- // For example, `header=X-API-KEY` should be used with the
- // following request:
- //
- // GET /something HTTP/1.1
- // X-API-Key: abcdef12345
- //
+ // API key is sent in a request header. `header` represents the
+ // header name.
+ //
+ // For example, `header=X-API-KEY` should be used with the
+ // following request:
+ //
+ // GET /something HTTP/1.1
+ // X-API-Key: abcdef12345
+ //
header: string @protobuf(2)
} | {
- // API key is sent in a
- // [cookie](https://swagger.io/docs/specification/authentication/cookie-authentication),
- //
- // For example, `cookie=X-API-KEY` should be used for the
- // following request:
- //
- // GET /something HTTP/1.1
- // Cookie: X-API-KEY=abcdef12345
- //
+ // API key is sent in a
+ // [cookie](https://swagger.io/docs/specification/authentication/cookie-authentication),
+ //
+ // For example, `cookie=X-API-KEY` should be used for the
+ // following request:
+ //
+ // GET /something HTTP/1.1
+ // Cookie: X-API-KEY=abcdef12345
+ //
cookie: string @protobuf(3)
}
-// HTTPAPISpecReference defines a reference to an HTTPAPISpec. This is
-// typically used for establishing bindings between an HTTPAPISpec and an
-// IstioService. For example, the following defines an
-// HTTPAPISpecReference for service `foo` in namespace `bar`.
-//
-// ```yaml
-// - name: foo
-// namespace: bar
-// ```
+// HTTPAPISpecReference defines a reference to an HTTPAPISpec. This is
+// typically used for establishing bindings between an HTTPAPISpec and an
+// IstioService. For example, the following defines an
+// HTTPAPISpecReference for service `foo` in namespace `bar`.
+//
+// ```yaml
+// - name: foo
+// namespace: bar
+// ```
HTTPAPISpecReference: {
- // REQUIRED. The short name of the HTTPAPISpec. This is the resource
- // name defined by the metadata name field.
+ // REQUIRED. The short name of the HTTPAPISpec. This is the resource
+ // name defined by the metadata name field.
name?: string @protobuf(1)
- // Optional namespace of the HTTPAPISpec. Defaults to the encompassing
- // HTTPAPISpecBinding's metadata namespace field.
+ // Optional namespace of the HTTPAPISpec. Defaults to the encompassing
+ // HTTPAPISpecBinding's metadata namespace field.
namespace?: string @protobuf(2)
}
-// HTTPAPISpecBinding defines the binding between HTTPAPISpecs and one or more
-// IstioService. For example, the following establishes a binding
-// between the HTTPAPISpec `petstore` and service `foo` in namespace `bar`.
-//
-// ```yaml
-// apiVersion: config.istio.io/v1alpha2
-// kind: HTTPAPISpecBinding
-// metadata:
-// name: my-binding
-// namespace: default
-// spec:
-// services:
-// - name: foo
-// namespace: bar
-// api_specs:
-// - name: petstore
-// namespace: default
-// ```
+// HTTPAPISpecBinding defines the binding between HTTPAPISpecs and one or more
+// IstioService. For example, the following establishes a binding
+// between the HTTPAPISpec `petstore` and service `foo` in namespace `bar`.
+//
+// ```yaml
+// apiVersion: config.istio.io/v1alpha2
+// kind: HTTPAPISpecBinding
+// metadata:
+// name: my-binding
+// namespace: default
+// spec:
+// services:
+// - name: foo
+// namespace: bar
+// api_specs:
+// - name: petstore
+// namespace: default
+// ```
HTTPAPISpecBinding: {
- // REQUIRED. One or more services to map the listed HTTPAPISpec onto.
+ // REQUIRED. One or more services to map the listed HTTPAPISpec onto.
services?: [...IstioService] @protobuf(1)
- // REQUIRED. One or more HTTPAPISpec references that should be mapped to
- // the specified service(s). The aggregate collection of match
- // conditions defined in the HTTPAPISpecs should not overlap.
+ // REQUIRED. One or more HTTPAPISpec references that should be mapped to
+ // the specified service(s). The aggregate collection of match
+ // conditions defined in the HTTPAPISpecs should not overlap.
apiSpecs?: [...HTTPAPISpecReference] @protobuf(2,name=api_specs)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
index dd44e5c..03a0025 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/client_config_proto_gen.cue
@@ -1,22 +1,22 @@
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// $title: Mixer Client
-// $description: Configuration state for the Mixer client library.
-// $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client
+// $title: Mixer Client
+// $description: Configuration state for the Mixer client library.
+// $location: https://istio.io/docs/reference/config/policy-and-telemetry/istio.mixer.v1.config.client
-// Describes the configuration state for the Mixer client library that's built into Envoy.
+// Describes the configuration state for the Mixer client library that's built into Envoy.
package client
import (
@@ -24,165 +24,165 @@
"time"
)
-// Specifies the behavior when the client is unable to connect to Mixer.
+// Specifies the behavior when the client is unable to connect to Mixer.
NetworkFailPolicy: {
- // Specifies the behavior when the client is unable to connect to Mixer.
+ // Specifies the behavior when the client is unable to connect to Mixer.
policy?: NetworkFailPolicy_FailPolicy @protobuf(1,type=FailPolicy)
- // Max retries on transport error.
+ // Max retries on transport error.
maxRetry?: uint32 @protobuf(2,name=max_retry)
- // Base time to wait between retries. Will be adjusted by exponential
- // backoff and jitter.
+ // Base time to wait between retries. Will be adjusted by exponential
+ // backoff and jitter.
baseRetryWait?: time.Duration @protobuf(3,type=google.protobuf.Duration,name=base_retry_wait)
- // Max time to wait between retries.
+ // Max time to wait between retries.
maxRetryWait?: time.Duration @protobuf(4,type=google.protobuf.Duration,name=max_retry_wait)
}
-// Example of single-value enum.
+// Example of single-value enum.
NetworkFailPolicy_FailPolicy:
- // If network connection fails, request is allowed and delivered to the
- // service.
+ // If network connection fails, request is allowed and delivered to the
+ // service.
"FAIL_OPEN"
NetworkFailPolicy_FailPolicy_value "FAIL_OPEN": 0
-// Defines the per-service client configuration.
+// Defines the per-service client configuration.
ServiceConfig: {
- // If true, do not call Mixer Check.
+ // If true, do not call Mixer Check.
disableCheckCalls?: bool @protobuf(1,name=disable_check_calls)
- // If true, do not call Mixer Report.
+ // If true, do not call Mixer Report.
disableReportCalls?: bool @protobuf(2,name=disable_report_calls)
- // Send these attributes to Mixer in both Check and Report. This
- // typically includes the "destination.service" attribute.
- // In case of a per-route override, per-route attributes take precedence
- // over the attributes supplied in the client configuration.
+ // Send these attributes to Mixer in both Check and Report. This
+ // typically includes the "destination.service" attribute.
+ // In case of a per-route override, per-route attributes take precedence
+ // over the attributes supplied in the client configuration.
mixerAttributes?: v1.Attributes @protobuf(3,type=Attributes,name=mixer_attributes)
- // HTTP API specifications to generate API attributes.
+ // HTTP API specifications to generate API attributes.
httpApiSpec?: [...HTTPAPISpec] @protobuf(4,name=http_api_spec)
- // Quota specifications to generate quota requirements.
+ // Quota specifications to generate quota requirements.
quotaSpec?: [...QuotaSpec] @protobuf(5,name=quota_spec)
- // Specifies the behavior when the client is unable to connect to Mixer.
- // This is the service-level policy. It overrides
- // [mesh-level
- // policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
+ // Specifies the behavior when the client is unable to connect to Mixer.
+ // This is the service-level policy. It overrides
+ // [mesh-level
+ // policy][istio.mixer.v1.config.client.TransportConfig.network_fail_policy].
networkFailPolicy?: NetworkFailPolicy @protobuf(7,name=network_fail_policy)
- // Default attributes to forward to upstream. This typically
- // includes the "source.ip" and "source.uid" attributes.
- // In case of a per-route override, per-route attributes take precedence
- // over the attributes supplied in the client configuration.
- //
- // Forwarded attributes take precedence over the static Mixer attributes.
- // The full order of application is as follows:
- // 1. static Mixer attributes from the filter config;
- // 2. static Mixer attributes from the route config;
- // 3. forwarded attributes from the source filter config (if any);
- // 4. forwarded attributes from the source route config (if any);
- // 5. derived attributes from the request metadata.
+ // Default attributes to forward to upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes.
+ // In case of a per-route override, per-route attributes take precedence
+ // over the attributes supplied in the client configuration.
+ //
+ // Forwarded attributes take precedence over the static Mixer attributes.
+ // The full order of application is as follows:
+ // 1. static Mixer attributes from the filter config;
+ // 2. static Mixer attributes from the route config;
+ // 3. forwarded attributes from the source filter config (if any);
+ // 4. forwarded attributes from the source route config (if any);
+ // 5. derived attributes from the request metadata.
forwardAttributes?: v1.Attributes @protobuf(8,type=Attributes,name=forward_attributes)
}
-// Defines the transport config on how to call Mixer.
+// Defines the transport config on how to call Mixer.
TransportConfig: {
- // The flag to disable check cache.
+ // The flag to disable check cache.
disableCheckCache?: bool @protobuf(1,name=disable_check_cache)
- // The flag to disable quota cache.
+ // The flag to disable quota cache.
disableQuotaCache?: bool @protobuf(2,name=disable_quota_cache)
- // The flag to disable report batch.
+ // The flag to disable report batch.
disableReportBatch?: bool @protobuf(3,name=disable_report_batch)
- // Specifies the behavior when the client is unable to connect to Mixer.
- // This is the mesh level policy. The default value for policy is FAIL_OPEN.
+ // Specifies the behavior when the client is unable to connect to Mixer.
+ // This is the mesh level policy. The default value for policy is FAIL_OPEN.
networkFailPolicy?: NetworkFailPolicy @protobuf(4,name=network_fail_policy)
- // Specify refresh interval to write Mixer client statistics to Envoy share
- // memory. If not specified, the interval is 10 seconds.
+ // Specify refresh interval to write Mixer client statistics to Envoy share
+ // memory. If not specified, the interval is 10 seconds.
statsUpdateInterval?: time.Duration @protobuf(5,type=google.protobuf.Duration,name=stats_update_interval)
- // Name of the cluster that will forward check calls to a pool of mixer
- // servers. Defaults to "mixer_server". By using different names for
- // checkCluster and reportCluster, it is possible to have one set of
- // Mixer servers handle check calls, while another set of Mixer servers
- // handle report calls.
- //
- // NOTE: Any value other than the default "mixer_server" will require the
- // Istio Grafana dashboards to be reconfigured to use the new name.
+ // Name of the cluster that will forward check calls to a pool of mixer
+ // servers. Defaults to "mixer_server". By using different names for
+ // checkCluster and reportCluster, it is possible to have one set of
+ // Mixer servers handle check calls, while another set of Mixer servers
+ // handle report calls.
+ //
+ // NOTE: Any value other than the default "mixer_server" will require the
+ // Istio Grafana dashboards to be reconfigured to use the new name.
checkCluster?: string @protobuf(6,name=check_cluster)
- // Name of the cluster that will forward report calls to a pool of mixer
- // servers. Defaults to "mixer_server". By using different names for
- // checkCluster and reportCluster, it is possible to have one set of
- // Mixer servers handle check calls, while another set of Mixer servers
- // handle report calls.
- //
- // NOTE: Any value other than the default "mixer_server" will require the
- // Istio Grafana dashboards to be reconfigured to use the new name.
+ // Name of the cluster that will forward report calls to a pool of mixer
+ // servers. Defaults to "mixer_server". By using different names for
+ // checkCluster and reportCluster, it is possible to have one set of
+ // Mixer servers handle check calls, while another set of Mixer servers
+ // handle report calls.
+ //
+ // NOTE: Any value other than the default "mixer_server" will require the
+ // Istio Grafana dashboards to be reconfigured to use the new name.
reportCluster?: string @protobuf(7,name=report_cluster)
- // Default attributes to forward to Mixer upstream. This typically
- // includes the "source.ip" and "source.uid" attributes. These
- // attributes are consumed by the proxy in front of mixer.
+ // Default attributes to forward to Mixer upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes. These
+ // attributes are consumed by the proxy in front of mixer.
attributesForMixerProxy?: v1.Attributes @protobuf(8,type=Attributes,name=attributes_for_mixer_proxy)
}
-// Defines the client config for HTTP.
+// Defines the client config for HTTP.
HttpClientConfig: {
- // The transport config.
+ // The transport config.
transport?: TransportConfig @protobuf(1)
- // Map of control configuration indexed by destination.service. This
- // is used to support per-service configuration for cases where a
- // mixerclient serves multiple services.
+ // Map of control configuration indexed by destination.service. This
+ // is used to support per-service configuration for cases where a
+ // mixerclient serves multiple services.
serviceConfigs: {
<_>: ServiceConfig
} @protobuf(2,type=map<string,ServiceConfig>,service_configs)
- // Default destination service name if none was specified in the
- // client request.
+ // Default destination service name if none was specified in the
+ // client request.
defaultDestinationService?: string @protobuf(3,name=default_destination_service)
- // Default attributes to send to Mixer in both Check and
- // Report. This typically includes "destination.ip" and
- // "destination.uid" attributes.
+ // Default attributes to send to Mixer in both Check and
+ // Report. This typically includes "destination.ip" and
+ // "destination.uid" attributes.
mixerAttributes?: v1.Attributes @protobuf(4,type=Attributes,name=mixer_attributes)
- // Default attributes to forward to upstream. This typically
- // includes the "source.ip" and "source.uid" attributes.
+ // Default attributes to forward to upstream. This typically
+ // includes the "source.ip" and "source.uid" attributes.
forwardAttributes?: v1.Attributes @protobuf(5,type=Attributes,name=forward_attributes)
}
-// Defines the client config for TCP.
+// Defines the client config for TCP.
TcpClientConfig: {
- // The transport config.
+ // The transport config.
transport?: TransportConfig @protobuf(1)
- // Default attributes to send to Mixer in both Check and
- // Report. This typically includes "destination.ip" and
- // "destination.uid" attributes.
+ // Default attributes to send to Mixer in both Check and
+ // Report. This typically includes "destination.ip" and
+ // "destination.uid" attributes.
mixerAttributes?: v1.Attributes @protobuf(2,type=Attributes,name=mixer_attributes)
- // If set to true, disables Mixer check calls.
+ // If set to true, disables Mixer check calls.
disableCheckCalls?: bool @protobuf(3,name=disable_check_calls)
- // If set to true, disables Mixer check calls.
+ // If set to true, disables Mixer check calls.
disableReportCalls?: bool @protobuf(4,name=disable_report_calls)
- // Quota specifications to generate quota requirements.
- // It applies on the new TCP connections.
+ // Quota specifications to generate quota requirements.
+ // It applies on the new TCP connections.
connectionQuotaSpec?: QuotaSpec @protobuf(5,name=connection_quota_spec)
- // Specify report interval to send periodical reports for long TCP
- // connections. If not specified, the interval is 10 seconds. This interval
- // should not be less than 1 second, otherwise it will be reset to 1 second.
+ // Specify report interval to send periodical reports for long TCP
+ // connections. If not specified, the interval is 10 seconds. This interval
+ // should not be less than 1 second, otherwise it will be reset to 1 second.
reportInterval?: time.Duration @protobuf(6,type=google.protobuf.Duration,name=report_interval)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
index e729d01..394d5e3 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/quota_proto_gen.cue
@@ -1,136 +1,136 @@
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// Specifies runtime quota rules.
-// * Uses Istio attributes to match individual requests
-// * Specifies list of quotas to use for matched requests.
-//
-// Example1:
-// Charge "request_count" quota with 1 amount for all requests.
-//
-// QuotaSpec:
-// - rules
-// - quotas:
-// quota: request_count
-// charge: 1
-//
-// Example2:
-// For HTTP POST requests with path are prefixed with /books or
-// api.operation is create_books, charge two quotas:
-// * write_count of 1 amount
-// * request_count of 5 amount.
-//
-// ```yaml
-// QuotaSpec:
-// - rules:
-// - match:
-// clause:
-// request.path:
-// string_prefix: /books
-// request.http_method:
-// string_exact: POST
-// - match:
-// clause:
-// api.operation:
-// string_exact: create_books
-// - quotas:
-// quota: write_count
-// charge: 1
-// - quotas:
-// quota: request_count
-// charge: 5
-// ```
+// Specifies runtime quota rules.
+// * Uses Istio attributes to match individual requests
+// * Specifies list of quotas to use for matched requests.
+//
+// Example1:
+// Charge "request_count" quota with 1 amount for all requests.
+//
+// QuotaSpec:
+// - rules
+// - quotas:
+// quota: request_count
+// charge: 1
+//
+// Example2:
+// For HTTP POST requests with path are prefixed with /books or
+// api.operation is create_books, charge two quotas:
+// * write_count of 1 amount
+// * request_count of 5 amount.
+//
+// ```yaml
+// QuotaSpec:
+// - rules:
+// - match:
+// clause:
+// request.path:
+// string_prefix: /books
+// request.http_method:
+// string_exact: POST
+// - match:
+// clause:
+// api.operation:
+// string_exact: create_books
+// - quotas:
+// quota: write_count
+// charge: 1
+// - quotas:
+// quota: request_count
+// charge: 5
+// ```
package client
-// Determines the quotas used for individual requests.
+// Determines the quotas used for individual requests.
QuotaSpec: {
- // A list of Quota rules.
+ // A list of Quota rules.
rules?: [...QuotaRule] @protobuf(1)
}
-// Specifies a rule with list of matches and list of quotas.
-// If any clause matched, the list of quotas will be used.
+// Specifies a rule with list of matches and list of quotas.
+// If any clause matched, the list of quotas will be used.
QuotaRule: {
- // If empty, match all request.
- // If any of match is true, it is matched.
+ // If empty, match all request.
+ // If any of match is true, it is matched.
match?: [...AttributeMatch] @protobuf(1)
- // The list of quotas to charge.
+ // The list of quotas to charge.
quotas?: [...Quota] @protobuf(2)
}
-// Describes how to match a given string in HTTP headers. Match is
-// case-sensitive.
+// Describes how to match a given string in HTTP headers. Match is
+// case-sensitive.
StringMatch: {
}
StringMatch: {
- // exact string match
+ // exact string match
exact: string @protobuf(1)
} | {
- // prefix-based match
+ // prefix-based match
prefix: string @protobuf(2)
} | {
- // ECMAscript style regex-based match
+ // ECMAscript style regex-based match
regex: string @protobuf(3)
}
-// Specifies a match clause to match Istio attributes
+// Specifies a match clause to match Istio attributes
AttributeMatch: {
- // Map of attribute names to StringMatch type.
- // Each map element specifies one condition to match.
- //
- // Example:
- //
- // clause:
- // source.uid:
- // exact: SOURCE_UID
- // request.http_method:
- // exact: POST
+ // Map of attribute names to StringMatch type.
+ // Each map element specifies one condition to match.
+ //
+ // Example:
+ //
+ // clause:
+ // source.uid:
+ // exact: SOURCE_UID
+ // request.http_method:
+ // exact: POST
clause: {
<_>: StringMatch
} @protobuf(1,type=map<string,StringMatch>)
}
-// Specifies a quota to use with quota name and amount.
+// Specifies a quota to use with quota name and amount.
Quota: {
- // The quota name to charge
+ // The quota name to charge
quota?: string @protobuf(1)
- // The quota amount to charge
+ // The quota amount to charge
charge?: int64 @protobuf(2)
}
-// QuotaSpecBinding defines the binding between QuotaSpecs and one or more
-// IstioService.
+// QuotaSpecBinding defines the binding between QuotaSpecs and one or more
+// IstioService.
QuotaSpecBinding: {
- // REQUIRED. One or more services to map the listed QuotaSpec onto.
+ // REQUIRED. One or more services to map the listed QuotaSpec onto.
services?: [...IstioService] @protobuf(1)
- // REQUIRED. One or more QuotaSpec references that should be mapped to
- // the specified service(s). The aggregate collection of match
- // conditions defined in the QuotaSpecs should not overlap.
+ // REQUIRED. One or more QuotaSpec references that should be mapped to
+ // the specified service(s). The aggregate collection of match
+ // conditions defined in the QuotaSpecs should not overlap.
quotaSpecs?: [...QuotaSpecBinding_QuotaSpecReference] @protobuf(2,type=QuotaSpecReference,name=quota_specs)
}
-// QuotaSpecReference uniquely identifies the QuotaSpec used in the
-// Binding.
+// QuotaSpecReference uniquely identifies the QuotaSpec used in the
+// Binding.
QuotaSpecBinding_QuotaSpecReference: {
- // REQUIRED. The short name of the QuotaSpec. This is the resource
- // name defined by the metadata name field.
+ // REQUIRED. The short name of the QuotaSpec. This is the resource
+ // name defined by the metadata name field.
name?: string @protobuf(1)
- // Optional namespace of the QuotaSpec. Defaults to the value of the
- // metadata namespace field.
+ // Optional namespace of the QuotaSpec. Defaults to the value of the
+ // metadata namespace field.
namespace?: string @protobuf(2)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
index 46b03df..03e034e 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/config/client/service_proto_gen.cue
@@ -1,47 +1,47 @@
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// NOTE: this is a duplicate of proxy.v1.config.IstioService from
-// proxy/v1alpha1/config/route_rules.proto.
-//
-// Mixer protobufs have gogoproto specific options which are not
-// compatiable with the proxy's vanilla protobufs. Ideally, these
-// protobuf options be reconciled so fundamental Istio concepts and
-// types can be shared by components. Until then, make a copy of
-// IstioService for mixerclient to use.
+// NOTE: this is a duplicate of proxy.v1.config.IstioService from
+// proxy/v1alpha1/config/route_rules.proto.
+//
+// Mixer protobufs have gogoproto specific options which are not
+// compatiable with the proxy's vanilla protobufs. Ideally, these
+// protobuf options be reconciled so fundamental Istio concepts and
+// types can be shared by components. Until then, make a copy of
+// IstioService for mixerclient to use.
package client
-// IstioService identifies a service and optionally service version.
-// The FQDN of the service is composed from the name, namespace, and implementation-specific domain suffix
-// (e.g. on Kubernetes, "reviews" + "default" + "svc.cluster.local" -> "reviews.default.svc.cluster.local").
+// IstioService identifies a service and optionally service version.
+// The FQDN of the service is composed from the name, namespace, and implementation-specific domain suffix
+// (e.g. on Kubernetes, "reviews" + "default" + "svc.cluster.local" -> "reviews.default.svc.cluster.local").
IstioService: {
- // The short name of the service such as "foo".
+ // The short name of the service such as "foo".
name?: string @protobuf(1)
- // Optional namespace of the service. Defaults to value of metadata namespace field.
+ // Optional namespace of the service. Defaults to value of metadata namespace field.
namespace?: string @protobuf(2)
- // Domain suffix used to construct the service FQDN in implementations that support such specification.
+ // Domain suffix used to construct the service FQDN in implementations that support such specification.
domain?: string @protobuf(3)
- // The service FQDN.
+ // The service FQDN.
service?: string @protobuf(4)
- // Optional one or more labels that uniquely identify the service version.
- //
- // *Note:* When used for a VirtualService destination, labels MUST be empty.
- //
+ // Optional one or more labels that uniquely identify the service version.
+ //
+ // *Note:* When used for a VirtualService destination, labels MUST be empty.
+ //
labels: {
<_>: string
} @protobuf(5,type=map<string,string>)
diff --git a/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
index c369365..ded5e39 100644
--- a/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/mixer/v1/mixer_proto_gen.cue
@@ -1,19 +1,19 @@
-// Copyright 2016 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2016 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// This package defines the Mixer API that the sidecar proxy uses to perform
-// precondition checks, manage quotas, and report telemetry.
+// This package defines the Mixer API that the sidecar proxy uses to perform
+// precondition checks, manage quotas, and report telemetry.
package v1
import (
@@ -21,106 +21,106 @@
"time"
)
-// Used to get a thumbs-up/thumbs-down before performing an action.
+// Used to get a thumbs-up/thumbs-down before performing an action.
CheckRequest: {
- // The attributes to use for this request.
- //
- // Mixer's configuration determines how these attributes are used to
- // establish the result returned in the response.
+ // The attributes to use for this request.
+ //
+ // Mixer's configuration determines how these attributes are used to
+ // establish the result returned in the response.
attributes?: CompressedAttributes @protobuf(1,"(gogoproto.nullable)=false")
- // The number of words in the global dictionary, used with to populate the attributes.
- // This value is used as a quick way to determine whether the client is using a dictionary that
- // the server understands.
+ // The number of words in the global dictionary, used with to populate the attributes.
+ // This value is used as a quick way to determine whether the client is using a dictionary that
+ // the server understands.
globalWordCount?: uint32 @protobuf(2,name=global_word_count)
- // Used for deduplicating `Check` calls in the case of failed RPCs and retries. This should be a UUID
- // per call, where the same UUID is used for retries of the same call.
+ // Used for deduplicating `Check` calls in the case of failed RPCs and retries. This should be a UUID
+ // per call, where the same UUID is used for retries of the same call.
deduplicationId?: string @protobuf(3,name=deduplication_id)
- // The individual quotas to allocate
+ // The individual quotas to allocate
quotas: {
<_>: CheckRequest_QuotaParams
} @protobuf(4,type=map<string,QuotaParams>,"(gogoproto.nullable)=false")
}
-// parameters for a quota allocation
+// parameters for a quota allocation
CheckRequest_QuotaParams: {
- // Amount of quota to allocate
+ // Amount of quota to allocate
amount?: int64 @protobuf(1)
- // When true, supports returning less quota than what was requested.
+ // When true, supports returning less quota than what was requested.
bestEffort?: bool @protobuf(2,name=best_effort)
}
-// The response generated by the Check method.
+// The response generated by the Check method.
CheckResponse: {
- // The precondition check results.
+ // The precondition check results.
precondition?: CheckResponse_PreconditionResult @protobuf(2,type=PreconditionResult,"(gogoproto.nullable)=false")
- // The resulting quota, one entry per requested quota.
+ // The resulting quota, one entry per requested quota.
quotas: {
<_>: CheckResponse_QuotaResult
} @protobuf(3,type=map<string,QuotaResult>,"(gogoproto.nullable)=false")
}
-// Expresses the result of a precondition check.
+// Expresses the result of a precondition check.
CheckResponse_PreconditionResult: {
- // A status code of OK indicates all preconditions were satisfied. Any other code indicates not
- // all preconditions were satisfied and details describe why.
+ // A status code of OK indicates all preconditions were satisfied. Any other code indicates not
+ // all preconditions were satisfied and details describe why.
status?: __status.Status @protobuf(1,type=google.rpc.Status,"(gogoproto.nullable)=false")
- // The amount of time for which this result can be considered valid.
+ // The amount of time for which this result can be considered valid.
validDuration?: time.Duration @protobuf(2,type=google.protobuf.Duration,name=valid_duration,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
- // The number of uses for which this result can be considered valid.
+ // The number of uses for which this result can be considered valid.
validUseCount?: int32 @protobuf(3,name=valid_use_count)
- // The total set of attributes that were used in producing the result
- // along with matching conditions.
+ // The total set of attributes that were used in producing the result
+ // along with matching conditions.
referencedAttributes?: ReferencedAttributes @protobuf(5,name=referenced_attributes)
- // An optional routing directive, used to manipulate the traffic metadata
- // whenever all preconditions are satisfied.
+ // An optional routing directive, used to manipulate the traffic metadata
+ // whenever all preconditions are satisfied.
routeDirective?: RouteDirective @protobuf(6,name=route_directive)
}
__status = status
-// Expresses the result of a quota allocation.
+// Expresses the result of a quota allocation.
CheckResponse_QuotaResult: {
- // The amount of time for which this result can be considered valid.
+ // The amount of time for which this result can be considered valid.
validDuration?: time.Duration @protobuf(1,type=google.protobuf.Duration,name=valid_duration,"(gogoproto.nullable)=false","(gogoproto.stdduration)")
- // The amount of granted quota. When `QuotaParams.best_effort` is true, this will be >= 0.
- // If `QuotaParams.best_effort` is false, this will be either 0 or >= `QuotaParams.amount`.
+ // The amount of granted quota. When `QuotaParams.best_effort` is true, this will be >= 0.
+ // If `QuotaParams.best_effort` is false, this will be either 0 or >= `QuotaParams.amount`.
grantedAmount?: int64 @protobuf(2,name=granted_amount)
- // The total set of attributes that were used in producing the result
- // along with matching conditions.
+ // The total set of attributes that were used in producing the result
+ // along with matching conditions.
referencedAttributes?: ReferencedAttributes @protobuf(5,name=referenced_attributes,"(gogoproto.nullable)=false")
}
-// Describes the attributes that were used to determine the response.
-// This can be used to construct a response cache.
+// Describes the attributes that were used to determine the response.
+// This can be used to construct a response cache.
ReferencedAttributes: {
- // The message-level dictionary. Refer to [CompressedAttributes][istio.mixer.v1.CompressedAttributes] for information
- // on using dictionaries.
+ // The message-level dictionary. Refer to [CompressedAttributes][istio.mixer.v1.CompressedAttributes] for information
+ // on using dictionaries.
words?: [...string] @protobuf(1)
- // Describes a set of attributes.
+ // Describes a set of attributes.
attributeMatches?: [...ReferencedAttributes_AttributeMatch] @protobuf(2,type=AttributeMatch,name=attribute_matches,"(gogoproto.nullable)=false")
}
-// How an attribute's value was matched
+// How an attribute's value was matched
ReferencedAttributes_Condition:
- *"CONDITION_UNSPECIFIED" | // should not occur
- "ABSENCE" | // match when attribute doesn't exist
- "EXACT" | // match when attribute value is an exact byte-for-byte match
- "REGEX" // match when attribute value matches the included regex
+ *"CONDITION_UNSPECIFIED" | // should not occur
+ "ABSENCE" | // match when attribute doesn't exist
+ "EXACT" | // match when attribute value is an exact byte-for-byte match
+ "REGEX" // match when attribute value matches the included regex
ReferencedAttributes_Condition_value: {
"CONDITION_UNSPECIFIED": 0
@@ -129,53 +129,53 @@
"REGEX": 3
}
-// Describes a single attribute match.
+// Describes a single attribute match.
ReferencedAttributes_AttributeMatch: {
- // The name of the attribute. This is a dictionary index encoded in a manner identical
- // to all strings in the [CompressedAttributes][istio.mixer.v1.CompressedAttributes] message.
+ // The name of the attribute. This is a dictionary index encoded in a manner identical
+ // to all strings in the [CompressedAttributes][istio.mixer.v1.CompressedAttributes] message.
name?: int32 @protobuf(1,type=sint32)
- // The kind of match against the attribute value.
+ // The kind of match against the attribute value.
condition?: ReferencedAttributes_Condition @protobuf(2,type=Condition)
- // If a REGEX condition is provided for a STRING_MAP attribute,
- // clients should use the regex value to match against map keys.
+ // If a REGEX condition is provided for a STRING_MAP attribute,
+ // clients should use the regex value to match against map keys.
regex?: string @protobuf(3)
- // A key in a STRING_MAP. When multiple keys from a STRING_MAP
- // attribute were referenced, there will be multiple AttributeMatch
- // messages with different map_key values. Values for map_key SHOULD
- // be ignored for attributes that are not STRING_MAP.
- //
- // Indices for the keys are used (taken either from the
- // message dictionary from the `words` field or the global dictionary).
- //
- // If no map_key value is provided for a STRING_MAP attribute, the
- // entire STRING_MAP will be used.
+ // A key in a STRING_MAP. When multiple keys from a STRING_MAP
+ // attribute were referenced, there will be multiple AttributeMatch
+ // messages with different map_key values. Values for map_key SHOULD
+ // be ignored for attributes that are not STRING_MAP.
+ //
+ // Indices for the keys are used (taken either from the
+ // message dictionary from the `words` field or the global dictionary).
+ //
+ // If no map_key value is provided for a STRING_MAP attribute, the
+ // entire STRING_MAP will be used.
mapKey?: int32 @protobuf(4,type=sint32,name=map_key)
}
-// Operation on HTTP headers to replace, append, or remove a header. Header
-// names are normalized to lower-case with dashes, e.g. "x-request-id".
-// Pseudo-headers ":path", ":authority", and ":method" are supported to modify
-// the request headers.
+// Operation on HTTP headers to replace, append, or remove a header. Header
+// names are normalized to lower-case with dashes, e.g. "x-request-id".
+// Pseudo-headers ":path", ":authority", and ":method" are supported to modify
+// the request headers.
HeaderOperation: {
- // Header name.
+ // Header name.
name?: string @protobuf(1)
- // Header value.
+ // Header value.
value?: string @protobuf(2)
- // Header operation.
+ // Header operation.
operation?: HeaderOperation_Operation @protobuf(3,type=Operation)
}
-// Operation type.
+// Operation type.
HeaderOperation_Operation:
- *"REPLACE" | // replaces the header with the given name
- "REMOVE" | // removes the header with the given name (the value is ignored)
- "APPEND" // appends the value to the header value, or sets it if not present
+ *"REPLACE" | // replaces the header with the given name
+ "REMOVE" | // removes the header with the given name (the value is ignored)
+ "APPEND" // appends the value to the header value, or sets it if not present
HeaderOperation_Operation_value: {
"REPLACE": 0
@@ -183,63 +183,63 @@
"APPEND": 2
}
-// Expresses the routing manipulation actions to be performed on behalf of
-// Mixer in response to a precondition check.
+// Expresses the routing manipulation actions to be performed on behalf of
+// Mixer in response to a precondition check.
RouteDirective: {
- // Operations on the request headers.
+ // Operations on the request headers.
requestHeaderOperations?: [...HeaderOperation] @protobuf(1,name=request_header_operations,"(gogoproto.nullable)=false")
- // Operations on the response headers.
+ // Operations on the response headers.
responseHeaderOperations?: [...HeaderOperation] @protobuf(2,name=response_header_operations,"(gogoproto.nullable)=false")
- // If set, enables a direct response without proxying the request to the routing
- // destination. Required to be a value in the 2xx or 3xx range.
+ // If set, enables a direct response without proxying the request to the routing
+ // destination. Required to be a value in the 2xx or 3xx range.
directResponseCode?: uint32 @protobuf(3,name=direct_response_code)
- // Supplies the response body for the direct response.
- // If this setting is omitted, no body is included in the generated response.
+ // Supplies the response body for the direct response.
+ // If this setting is omitted, no body is included in the generated response.
directResponseBody?: string @protobuf(4,name=direct_response_body)
}
-// Used to report telemetry after performing one or more actions.
+// Used to report telemetry after performing one or more actions.
ReportRequest: {
- // next value: 5
+ // next value: 5
- // The attributes to use for this request.
- //
- // Each `Attributes` element represents the state of a single action. Multiple actions
- // can be provided in a single message in order to improve communication efficiency. The
- // client can accumulate a set of actions and send them all in one single message.
+ // The attributes to use for this request.
+ //
+ // Each `Attributes` element represents the state of a single action. Multiple actions
+ // can be provided in a single message in order to improve communication efficiency. The
+ // client can accumulate a set of actions and send them all in one single message.
attributes?: [...CompressedAttributes] @protobuf(1,"(gogoproto.nullable)=false")
- // Indicates how to decode the attributes sets in this request.
+ // Indicates how to decode the attributes sets in this request.
repeatedAttributesSemantics?: ReportRequest_RepeatedAttributesSemantics @protobuf(4,type=RepeatedAttributesSemantics,name=repeated_attributes_semantics)
- // The default message-level dictionary for all the attributes.
- // Individual attribute messages can have their own dictionaries, but if they don't
- // then this set of words, if it is provided, is used instead.
- //
- // This makes it possible to share the same dictionary for all attributes in this
- // request, which can substantially reduce the overall request size.
+ // The default message-level dictionary for all the attributes.
+ // Individual attribute messages can have their own dictionaries, but if they don't
+ // then this set of words, if it is provided, is used instead.
+ //
+ // This makes it possible to share the same dictionary for all attributes in this
+ // request, which can substantially reduce the overall request size.
defaultWords?: [...string] @protobuf(2,name=default_words)
- // The number of words in the global dictionary.
- // To detect global dictionary out of sync between client and server.
+ // The number of words in the global dictionary.
+ // To detect global dictionary out of sync between client and server.
globalWordCount?: uint32 @protobuf(3,name=global_word_count)
}
-// Used to signal how the sets of compressed attributes should be reconstitued server-side.
+// Used to signal how the sets of compressed attributes should be reconstitued server-side.
ReportRequest_RepeatedAttributesSemantics:
- // Use delta encoding between sets of compressed attributes to reduce the overall on-wire
- // request size. Each individual set of attributes is used to modify the previous set.
- // NOTE: There is no way with this encoding to specify attribute value deletion. This
- // option should be used with extreme caution.
+ // Use delta encoding between sets of compressed attributes to reduce the overall on-wire
+ // request size. Each individual set of attributes is used to modify the previous set.
+ // NOTE: There is no way with this encoding to specify attribute value deletion. This
+ // option should be used with extreme caution.
*"DELTA_ENCODING" |
- // Treat each set of compressed attributes as complete - independent from other sets
- // in this request. This will result in on-wire duplication of attributes and values, but
- // will allow for proper accounting of absent values in overall encoding.
+ // Treat each set of compressed attributes as complete - independent from other sets
+ // in this request. This will result in on-wire duplication of attributes and values, but
+ // will allow for proper accounting of absent values in overall encoding.
"INDEPENDENT_ENCODING"
ReportRequest_RepeatedAttributesSemantics_value: {
@@ -247,6 +247,6 @@
"INDEPENDENT_ENCODING": 1
}
-// Used to carry responses to telemetry reports
+// Used to carry responses to telemetry reports
ReportResponse: {
}
diff --git a/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
index 26f4a97..024937e 100644
--- a/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/networking/v1alpha3/gateway_proto_gen.cue
@@ -1,416 +1,416 @@
-// Copyright 2019 CUE Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2019 CUE Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// Copyright 2017 Istio Authors
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Istio Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
-// $title: Gateway
-// $description: Configuration affecting edge load balancer.
-// $location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html
+// $title: Gateway
+// $description: Configuration affecting edge load balancer.
+// $location: https://istio.io/docs/reference/config/networking/v1alpha3/gateway.html
-// `Gateway` describes a load balancer operating at the edge of the mesh
-// receiving incoming or outgoing HTTP/TCP connections. The specification
-// describes a set of ports that should be exposed, the type of protocol to
-// use, SNI configuration for the load balancer, etc.
-//
-// For example, the following Gateway configuration sets up a proxy to act
-// as a load balancer exposing port 80 and 9080 (http), 443 (https),
-// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
-// applied to the proxy running on a pod with labels `app:
-// my-gateway-controller`. While Istio will configure the proxy to listen
-// on these ports, it is the responsibility of the user to ensure that
-// external traffic to these ports are allowed into the mesh.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// httpsRedirect: true # sends 301 redirect for http requests
-// - port:
-// number: 443
-// name: https-443
-// protocol: HTTPS
-// hosts:
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// serverCertificate: /etc/certs/servercert.pem
-// privateKey: /etc/certs/privatekey.pem
-// - port:
-// number: 9443
-// name: https-9443
-// protocol: HTTPS
-// hosts:
-// - "bookinfo-namespace/*.bookinfo.com"
-// tls:
-// mode: SIMPLE # enables HTTPS on this port
-// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
-// - port:
-// number: 9080
-// name: http-wildcard
-// protocol: HTTP
-// hosts:
-// - "*"
-// - port:
-// number: 2379 # to expose internal service via external port 2379
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-//
-// The Gateway specification above describes the L4-L6 properties of a load
-// balancer. A `VirtualService` can then be bound to a gateway to control
-// the forwarding of traffic arriving at a particular host or gateway port.
-//
-// For example, the following VirtualService splits traffic for
-// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
-// `http://uk.bookinfo.com:9080/reviews`,
-// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
-// an internal reviews service on port 9080. In addition, requests
-// containing the cookie "user: dev-123" will be sent to special port 7777
-// in the qa version. The same rule is also applicable inside the mesh for
-// requests to the "reviews.prod.svc.cluster.local" service. This rule is
-// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
-// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-rule
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - reviews.prod.svc.cluster.local
-// - uk.bookinfo.com
-// - eu.bookinfo.com
-// gateways:
-// - some-config-namespace/my-gateway
-// - mesh # applies to all the sidecars in the mesh
-// http:
-// - match:
-// - headers:
-// cookie:
-// exact: "user=dev-123"
-// route:
-// - destination:
-// port:
-// number: 7777
-// host: reviews.qa.svc.cluster.local
-// - match:
-// - uri:
-// prefix: /reviews/
-// route:
-// - destination:
-// port:
-// number: 9080 # can be omitted if it's the only port for reviews
-// host: reviews.prod.svc.cluster.local
-// weight: 80
-// - destination:
-// host: reviews.qa.svc.cluster.local
-// weight: 20
-// ```
-//
-// The following VirtualService forwards traffic arriving at (external)
-// port 27017 to internal Mongo server on port 5555. This rule is not
-// applicable internally in the mesh as the gateway list omits the
-// reserved name `mesh`.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: VirtualService
-// metadata:
-// name: bookinfo-Mongo
-// namespace: bookinfo-namespace
-// spec:
-// hosts:
-// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
-// gateways:
-// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same
-// namespace as virtual service.
-// tcp:
-// - match:
-// - port: 27017
-// route:
-// - destination:
-// host: mongo.prod.svc.cluster.local
-// port:
-// number: 5555
-// ```
-//
-// It is possible to restrict the set of virtual services that can bind to
-// a gateway server using the namespace/hostname syntax in the hosts field.
-// For example, the following Gateway allows any virtual service in the ns1
-// namespace to bind to it, while restricting only the virtual service with
-// foo.bar.com host in the ns2 namespace to bind to it.
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-gateway
-// namespace: some-config-namespace
-// spec:
-// selector:
-// app: my-gateway-controller
-// servers:
-// - port:
-// number: 80
-// name: http
-// protocol: HTTP
-// hosts:
-// - "ns1/*"
-// - "ns2/foo.bar.com"
-// ```
-//
+// `Gateway` describes a load balancer operating at the edge of the mesh
+// receiving incoming or outgoing HTTP/TCP connections. The specification
+// describes a set of ports that should be exposed, the type of protocol to
+// use, SNI configuration for the load balancer, etc.
+//
+// For example, the following Gateway configuration sets up a proxy to act
+// as a load balancer exposing port 80 and 9080 (http), 443 (https),
+// 9443(https) and port 2379 (TCP) for ingress. The gateway will be
+// applied to the proxy running on a pod with labels `app:
+// my-gateway-controller`. While Istio will configure the proxy to listen
+// on these ports, it is the responsibility of the user to ensure that
+// external traffic to these ports are allowed into the mesh.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-gateway
+// namespace: some-config-namespace
+// spec:
+// selector:
+// app: my-gateway-controller
+// servers:
+// - port:
+// number: 80
+// name: http
+// protocol: HTTP
+// hosts:
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// tls:
+// httpsRedirect: true # sends 301 redirect for http requests
+// - port:
+// number: 443
+// name: https-443
+// protocol: HTTPS
+// hosts:
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// tls:
+// mode: SIMPLE # enables HTTPS on this port
+// serverCertificate: /etc/certs/servercert.pem
+// privateKey: /etc/certs/privatekey.pem
+// - port:
+// number: 9443
+// name: https-9443
+// protocol: HTTPS
+// hosts:
+// - "bookinfo-namespace/*.bookinfo.com"
+// tls:
+// mode: SIMPLE # enables HTTPS on this port
+// credentialName: bookinfo-secret # fetches certs from Kubernetes secret
+// - port:
+// number: 9080
+// name: http-wildcard
+// protocol: HTTP
+// hosts:
+// - "*"
+// - port:
+// number: 2379 # to expose internal service via external port 2379
+// name: mongo
+// protocol: MONGO
+// hosts:
+// - "*"
+// ```
+//
+// The Gateway specification above describes the L4-L6 properties of a load
+// balancer. A `VirtualService` can then be bound to a gateway to control
+// the forwarding of traffic arriving at a particular host or gateway port.
+//
+// For example, the following VirtualService splits traffic for
+// `https://uk.bookinfo.com/reviews`, `https://eu.bookinfo.com/reviews`,
+// `http://uk.bookinfo.com:9080/reviews`,
+// `http://eu.bookinfo.com:9080/reviews` into two versions (prod and qa) of
+// an internal reviews service on port 9080. In addition, requests
+// containing the cookie "user: dev-123" will be sent to special port 7777
+// in the qa version. The same rule is also applicable inside the mesh for
+// requests to the "reviews.prod.svc.cluster.local" service. This rule is
+// applicable across ports 443, 9080. Note that `http://uk.bookinfo.com`
+// gets redirected to `https://uk.bookinfo.com` (i.e. 80 redirects to 443).
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: bookinfo-rule
+// namespace: bookinfo-namespace
+// spec:
+// hosts:
+// - reviews.prod.svc.cluster.local
+// - uk.bookinfo.com
+// - eu.bookinfo.com
+// gateways:
+// - some-config-namespace/my-gateway
+// - mesh # applies to all the sidecars in the mesh
+// http:
+// - match:
+// - headers:
+// cookie:
+// exact: "user=dev-123"
+// route:
+// - destination:
+// port:
+// number: 7777
+// host: reviews.qa.svc.cluster.local
+// - match:
+// - uri:
+// prefix: /reviews/
+// route:
+// - destination:
+// port:
+// number: 9080 # can be omitted if it's the only port for reviews
+// host: reviews.prod.svc.cluster.local
+// weight: 80
+// - destination:
+// host: reviews.qa.svc.cluster.local
+// weight: 20
+// ```
+//
+// The following VirtualService forwards traffic arriving at (external)
+// port 27017 to internal Mongo server on port 5555. This rule is not
+// applicable internally in the mesh as the gateway list omits the
+// reserved name `mesh`.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: VirtualService
+// metadata:
+// name: bookinfo-Mongo
+// namespace: bookinfo-namespace
+// spec:
+// hosts:
+// - mongosvr.prod.svc.cluster.local # name of internal Mongo service
+// gateways:
+// - some-config-namespace/my-gateway # can omit the namespace if gateway is in same
+// namespace as virtual service.
+// tcp:
+// - match:
+// - port: 27017
+// route:
+// - destination:
+// host: mongo.prod.svc.cluster.local
+// port:
+// number: 5555
+// ```
+//
+// It is possible to restrict the set of virtual services that can bind to
+// a gateway server using the namespace/hostname syntax in the hosts field.
+// For example, the following Gateway allows any virtual service in the ns1
+// namespace to bind to it, while restricting only the virtual service with
+// foo.bar.com host in the ns2 namespace to bind to it.
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-gateway
+// namespace: some-config-namespace
+// spec:
+// selector:
+// app: my-gateway-controller
+// servers:
+// - port:
+// number: 80
+// name: http
+// protocol: HTTP
+// hosts:
+// - "ns1/*"
+// - "ns2/foo.bar.com"
+// ```
+//
package v1alpha3
Gateway: {
- // REQUIRED: A list of server specifications.
+ // REQUIRED: A list of server specifications.
servers?: [...Server] @protobuf(1)
- // REQUIRED: One or more labels that indicate a specific set of pods/VMs
- // on which this gateway configuration should be applied. The scope of
- // label search is restricted to the configuration namespace in which the
- // the resource is present. In other words, the Gateway resource must
- // reside in the same namespace as the gateway workload instance.
+ // REQUIRED: One or more labels that indicate a specific set of pods/VMs
+ // on which this gateway configuration should be applied. The scope of
+ // label search is restricted to the configuration namespace in which the
+ // the resource is present. In other words, the Gateway resource must
+ // reside in the same namespace as the gateway workload instance.
selector: {
<_>: string
} @protobuf(2,type=map<string,string>)
selector?: {<name>: name}
}
-// `Server` describes the properties of the proxy on a given load balancer
-// port. For example,
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-ingress
-// spec:
-// selector:
-// app: my-ingress-gateway
-// servers:
-// - port:
-// number: 80
-// name: http2
-// protocol: HTTP2
-// hosts:
-// - "*"
-// ```
-//
-// Another example
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tcp-ingress
-// spec:
-// selector:
-// app: my-tcp-ingress-gateway
-// servers:
-// - port:
-// number: 27018
-// name: mongo
-// protocol: MONGO
-// hosts:
-// - "*"
-// ```
-//
-// The following is an example of TLS configuration for port 443
-//
-// ```yaml
-// apiVersion: networking.istio.io/v1alpha3
-// kind: Gateway
-// metadata:
-// name: my-tls-ingress
-// spec:
-// selector:
-// app: my-tls-ingress-gateway
-// servers:
-// - port:
-// number: 443
-// name: https
-// protocol: HTTPS
-// hosts:
-// - "*"
-// tls:
-// mode: SIMPLE
-// serverCertificate: /etc/certs/server.pem
-// privateKey: /etc/certs/privatekey.pem
-// ```
+// `Server` describes the properties of the proxy on a given load balancer
+// port. For example,
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-ingress
+// spec:
+// selector:
+// app: my-ingress-gateway
+// servers:
+// - port:
+// number: 80
+// name: http2
+// protocol: HTTP2
+// hosts:
+// - "*"
+// ```
+//
+// Another example
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-tcp-ingress
+// spec:
+// selector:
+// app: my-tcp-ingress-gateway
+// servers:
+// - port:
+// number: 27018
+// name: mongo
+// protocol: MONGO
+// hosts:
+// - "*"
+// ```
+//
+// The following is an example of TLS configuration for port 443
+//
+// ```yaml
+// apiVersion: networking.istio.io/v1alpha3
+// kind: Gateway
+// metadata:
+// name: my-tls-ingress
+// spec:
+// selector:
+// app: my-tls-ingress-gateway
+// servers:
+// - port:
+// number: 443
+// name: https
+// protocol: HTTPS
+// hosts:
+// - "*"
+// tls:
+// mode: SIMPLE
+// serverCertificate: /etc/certs/server.pem
+// privateKey: /etc/certs/privatekey.pem
+// ```
Server: {
- // REQUIRED: The Port on which the proxy should listen for incoming
- // connections.
+ // REQUIRED: The Port on which the proxy should listen for incoming
+ // connections.
port?: Port @protobuf(1)
port?: >10 & <100
- // $hide_from_docs
- // The ip or the Unix domain socket to which the listener should be bound
- // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
- // (Linux abstract namespace). When using Unix domain sockets, the port
- // number should be 0.
+ // $hide_from_docs
+ // The ip or the Unix domain socket to which the listener should be bound
+ // to. Format: `x.x.x.x` or `unix:///path/to/uds` or `unix://@foobar`
+ // (Linux abstract namespace). When using Unix domain sockets, the port
+ // number should be 0.
bind?: string @protobuf(4)
- // REQUIRED. One or more hosts exposed by this gateway.
- // While typically applicable to
- // HTTP services, it can also be used for TCP services using TLS with SNI.
- // A host is specified as a `dnsName` with an optional `namespace/` prefix.
- // The `dnsName` should be specified using FQDN format, optionally including
- // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
- // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
- // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified,
- // the `VirtualService` hosts will be selected from any available namespace.
- // Any associated `DestinationRule` in the same namespace will also be used.
- //
- // A `VirtualService` must be bound to the gateway and must have one or
- // more hosts that match the hosts specified in a server. The match
- // could be an exact match or a suffix match with the server's hosts. For
- // example, if the server's hosts specifies `*.example.com`, a
- // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
- // match. However, a `VirtualService` with host `example.com` or
- // `newexample.com` will not match.
- //
- // NOTE: Only virtual services exported to the gateway's namespace
- // (e.g., `exportTo` value of `*`) can be referenced.
- // Private configurations (e.g., `exportTo` set to `.`) will not be
- // available. Refer to the `exportTo` setting in `VirtualService`,
- // `DestinationRule`, and `ServiceEntry` configurations for details.
+ // REQUIRED. One or more hosts exposed by this gateway.
+ // While typically applicable to
+ // HTTP services, it can also be used for TCP services using TLS with SNI.
+ // A host is specified as a `dnsName` with an optional `namespace/` prefix.
+ // The `dnsName` should be specified using FQDN format, optionally including
+ // a wildcard character in the left-most component (e.g., `prod/*.example.com`).
+ // Set the `dnsName` to `*` to select all `VirtualService` hosts from the
+ // specified namespace (e.g.,`prod/*`). If no `namespace/` is specified,
+ // the `VirtualService` hosts will be selected from any available namespace.
+ // Any associated `DestinationRule` in the same namespace will also be used.
+ //
+ // A `VirtualService` must be bound to the gateway and must have one or
+ // more hosts that match the hosts specified in a server. The match
+ // could be an exact match or a suffix match with the server's hosts. For
+ // example, if the server's hosts specifies `*.example.com`, a
+ // `VirtualService` with hosts `dev.example.com` or `prod.example.com` will
+ // match. However, a `VirtualService` with host `example.com` or
+ // `newexample.com` will not match.
+ //
+ // NOTE: Only virtual services exported to the gateway's namespace
+ // (e.g., `exportTo` value of `*`) can be referenced.
+ // Private configurations (e.g., `exportTo` set to `.`) will not be
+ // available. Refer to the `exportTo` setting in `VirtualService`,
+ // `DestinationRule`, and `ServiceEntry` configurations for details.
hosts?: [...string] @protobuf(2)
- // Set of TLS related options that govern the server's behavior. Use
- // these options to control if all http requests should be redirected to
- // https, and the TLS modes to use.
+ // Set of TLS related options that govern the server's behavior. Use
+ // these options to control if all http requests should be redirected to
+ // https, and the TLS modes to use.
tls?: Server_TLSOptions @protobuf(3,type=TLSOptions)
- // The loopback IP endpoint or Unix domain socket to which traffic should
- // be forwarded to by default. Format should be `127.0.0.1:PORT` or
- // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
+ // The loopback IP endpoint or Unix domain socket to which traffic should
+ // be forwarded to by default. Format should be `127.0.0.1:PORT` or
+ // `unix:///path/to/socket` or `unix://@foobar` (Linux abstract namespace).
defaultEndpoint?: string @protobuf(5,name=default_endpoint)
}
Server_TLSOptions: {
- // If set to true, the load balancer will send a 301 redirect for all
- // http connections, asking the clients to use HTTPS.
+ // If set to true, the load balancer will send a 301 redirect for all
+ // http connections, asking the clients to use HTTPS.
httpsRedirect?: bool @protobuf(1,name=https_redirect)
- // Optional: Indicates whether connections to this port should be
- // secured using TLS. The value of this field determines how TLS is
- // enforced.
+ // Optional: Indicates whether connections to this port should be
+ // secured using TLS. The value of this field determines how TLS is
+ // enforced.
mode?: Server_TLSOptions_TLSmode @protobuf(2,type=TLSmode)
- // Extra comment.
+ // Extra comment.
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server-side TLS certificate to use.
+ // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
+ // holding the server-side TLS certificate to use.
serverCertificate?: string @protobuf(3,name=server_certificate)
- // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
- // holding the server's private key.
+ // REQUIRED if mode is `SIMPLE` or `MUTUAL`. The path to the file
+ // holding the server's private key.
privateKey?: string @protobuf(4,name=private_key)
- // REQUIRED if mode is `MUTUAL`. The path to a file containing
- // certificate authority certificates to use in verifying a presented
- // client side certificate.
+ // REQUIRED if mode is `MUTUAL`. The path to a file containing
+ // certificate authority certificates to use in verifying a presented
+ // client side certificate.
caCertificates?: string @protobuf(5,name=ca_certificates)
- // The credentialName stands for a unique identifier that can be used
- // to identify the serverCertificate and the privateKey. The
- // credentialName appended with suffix "-cacert" is used to identify
- // the CaCertificates associated with this server. Gateway workloads
- // capable of fetching credentials from a remote credential store such
- // as Kubernetes secrets, will be configured to retrieve the
- // serverCertificate and the privateKey using credentialName, instead
- // of using the file system paths specified above. If using mutual TLS,
- // gateway workload instances will retrieve the CaCertificates using
- // credentialName-cacert. The semantics of the name are platform
- // dependent. In Kubernetes, the default Istio supplied credential
- // server expects the credentialName to match the name of the
- // Kubernetes secret that holds the server certificate, the private
- // key, and the CA certificate (if using mutual TLS). Set the
- // `ISTIO_META_USER_SDS` metadata variable in the gateway's proxy to
- // enable the dynamic credential fetching feature.
+ // The credentialName stands for a unique identifier that can be used
+ // to identify the serverCertificate and the privateKey. The
+ // credentialName appended with suffix "-cacert" is used to identify
+ // the CaCertificates associated with this server. Gateway workloads
+ // capable of fetching credentials from a remote credential store such
+ // as Kubernetes secrets, will be configured to retrieve the
+ // serverCertificate and the privateKey using credentialName, instead
+ // of using the file system paths specified above. If using mutual TLS,
+ // gateway workload instances will retrieve the CaCertificates using
+ // credentialName-cacert. The semantics of the name are platform
+ // dependent. In Kubernetes, the default Istio supplied credential
+ // server expects the credentialName to match the name of the
+ // Kubernetes secret that holds the server certificate, the private
+ // key, and the CA certificate (if using mutual TLS). Set the
+ // `ISTIO_META_USER_SDS` metadata variable in the gateway's proxy to
+ // enable the dynamic credential fetching feature.
credentialName?: string @protobuf(10,name=credential_name)
- // A list of alternate names to verify the subject identity in the
- // certificate presented by the client.
+ // A list of alternate names to verify the subject identity in the
+ // certificate presented by the client.
subjectAltNames?: [...string] @protobuf(6,name=subject_alt_names)
- // Optional: Minimum TLS protocol version.
+ // Optional: Minimum TLS protocol version.
minProtocolVersion?: Server_TLSOptions_TLSProtocol @protobuf(7,type=TLSProtocol,name=min_protocol_version)
- // Optional: Maximum TLS protocol version.
+ // Optional: Maximum TLS protocol version.
maxProtocolVersion?: Server_TLSOptions_TLSProtocol @protobuf(8,type=TLSProtocol,name=max_protocol_version)
- // Optional: If specified, only support the specified cipher list.
- // Otherwise default to the default cipher list supported by Envoy.
+ // Optional: If specified, only support the specified cipher list.
+ // Otherwise default to the default cipher list supported by Envoy.
cipherSuites?: [...string] @protobuf(9,name=cipher_suites)
}
-// TLS modes enforced by the proxy
+// TLS modes enforced by the proxy
Server_TLSOptions_TLSmode:
- // The SNI string presented by the client will be used as the match
- // criterion in a VirtualService TLS route to determine the
- // destination service from the service registry.
+ // The SNI string presented by the client will be used as the match
+ // criterion in a VirtualService TLS route to determine the
+ // destination service from the service registry.
*"PASSTHROUGH" |
- // Secure connections with standard TLS semantics.
+ // Secure connections with standard TLS semantics.
"SIMPLE" |
- // Secure connections to the upstream using mutual TLS by presenting
- // client certificates for authentication.
+ // Secure connections to the upstream using mutual TLS by presenting
+ // client certificates for authentication.
"MUTUAL" |
- // Similar to the passthrough mode, except servers with this TLS mode
- // do not require an associated VirtualService to map from the SNI
- // value to service in the registry. The destination details such as
- // the service/subset/port are encoded in the SNI value. The proxy
- // will forward to the upstream (Envoy) cluster (a group of
- // endpoints) specified by the SNI value. This server is typically
- // used to provide connectivity between services in disparate L3
- // networks that otherwise do not have direct connectivity between
- // their respective endpoints. Use of this mode assumes that both the
- // source and the destination are using Istio mTLS to secure traffic.
+ // Similar to the passthrough mode, except servers with this TLS mode
+ // do not require an associated VirtualService to map from the SNI
+ // value to service in the registry. The destination details such as
+ // the service/subset/port are encoded in the SNI value. The proxy
+ // will forward to the upstream (Envoy) cluster (a group of
+ // endpoints) specified by the SNI value. This server is typically
+ // used to provide connectivity between services in disparate L3
+ // networks that otherwise do not have direct connectivity between
+ // their respective endpoints. Use of this mode assumes that both the
+ // source and the destination are using Istio mTLS to secure traffic.
"AUTO_PASSTHROUGH"
Server_TLSOptions_TLSmode_value: {
@@ -420,13 +420,13 @@
"AUTO_PASSTHROUGH": 3
}
-// TLS protocol versions.
+// TLS protocol versions.
Server_TLSOptions_TLSProtocol:
- *"TLS_AUTO" | // Automatically choose the optimal TLS version.
- "TLSV1_0" | // TLS version 1.0
- "TLSV1_1" | // TLS version 1.1
- "TLSV1_2" | // TLS version 1.2
- "TLSV1_3" // TLS version 1.3
+ *"TLS_AUTO" | // Automatically choose the optimal TLS version.
+ "TLSV1_0" | // TLS version 1.0
+ "TLSV1_1" | // TLS version 1.1
+ "TLSV1_2" | // TLS version 1.2
+ "TLSV1_3" // TLS version 1.3
Server_TLSOptions_TLSProtocol_value: {
"TLS_AUTO": 0
@@ -436,17 +436,17 @@
"TLSV1_3": 4
}
-// Port describes the properties of a specific port of a service.
+// Port describes the properties of a specific port of a service.
Port: {
- // REQUIRED: A valid non-negative integer port number.
+ // REQUIRED: A valid non-negative integer port number.
number?: uint32 @protobuf(1)
- // REQUIRED: The protocol exposed on the port.
- // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
- // TLS implies the connection will be routed based on the SNI header to
- // the destination without terminating the TLS connection.
+ // REQUIRED: The protocol exposed on the port.
+ // MUST BE one of HTTP|HTTPS|GRPC|HTTP2|MONGO|TCP|TLS.
+ // TLS implies the connection will be routed based on the SNI header to
+ // the destination without terminating the TLS connection.
protocol?: string @protobuf(2)
- // Label assigned to the port.
+ // Label assigned to the port.
name?: string @protobuf(3)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/pkg/github.com/gogo/protobuf/gogoproto/gogo_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/pkg/github.com/gogo/protobuf/gogoproto/gogo_proto_gen.cue
index 044eabf..1896f90 100644
--- a/encoding/protobuf/testdata/istio.io/api/pkg/github.com/gogo/protobuf/gogoproto/gogo_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/pkg/github.com/gogo/protobuf/gogoproto/gogo_proto_gen.cue
@@ -1,29 +1,29 @@
-// Protocol Buffers for Go with Gadgets
-//
-// Copyright (c) 2013, The GoGo Authors. All rights reserved.
-// http://github.com/gogo/protobuf
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Protocol Buffers for Go with Gadgets
+//
+// Copyright (c) 2013, The GoGo Authors. All rights reserved.
+// http://github.com/gogo/protobuf
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package gogoproto
diff --git a/encoding/protobuf/testdata/istio.io/api/pkg/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/pkg/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
index 7ceb8fc..a897906 100644
--- a/encoding/protobuf/testdata/istio.io/api/pkg/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/pkg/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor_proto_gen.cue
@@ -1,117 +1,117 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// Author: kenton@google.com (Kenton Varda)
-// Based on original Protocol Buffers design by
-// Sanjay Ghemawat, Jeff Dean, and others.
-//
-// The messages in this file describe the definitions found in .proto files.
-// A valid .proto file can be translated directly to a FileDescriptorProto
-// without any other information (e.g. without reading its imports).
+// Author: kenton@google.com (Kenton Varda)
+// Based on original Protocol Buffers design by
+// Sanjay Ghemawat, Jeff Dean, and others.
+//
+// The messages in this file describe the definitions found in .proto files.
+// A valid .proto file can be translated directly to a FileDescriptorProto
+// without any other information (e.g. without reading its imports).
-// ===================================================================
-// Options
+// ===================================================================
+// Options
-// Each of the definitions above may have "options" attached. These are
-// just annotations which may cause code to be generated slightly differently
-// or may contain hints for code that manipulates protocol messages.
-//
-// Clients may define custom options as extensions of the *Options messages.
-// These extensions may not yet be known at parsing time, so the parser cannot
-// store the values in them. Instead it stores them in a field in the *Options
-// message called uninterpreted_option. This field must have the same name
-// across all *Options messages. We then use this field to populate the
-// extensions when we build a descriptor, at which point all protos have been
-// parsed and so all extensions are known.
-//
-// Extension numbers for custom options may be chosen as follows:
-// * For options which will only be used within a single application or
-// organization, or for experimental options, use field numbers 50000
-// through 99999. It is up to you to ensure that you do not use the
-// same number for multiple options.
-// * For options which will be published and used publicly by multiple
-// independent entities, e-mail protobuf-global-extension-registry@google.com
-// to reserve extension numbers. Simply provide your project name (e.g.
-// Objective-C plugin) and your project website (if available) -- there's no
-// need to explain how you intend to use them. Usually you only need one
-// extension number. You can declare multiple options with only one extension
-// number by putting them in a sub-message. See the Custom Options section of
-// the docs for examples:
-// https://developers.google.com/protocol-buffers/docs/proto#options
-// If this turns out to be popular, a web service will be set up
-// to automatically assign option numbers.
+// Each of the definitions above may have "options" attached. These are
+// just annotations which may cause code to be generated slightly differently
+// or may contain hints for code that manipulates protocol messages.
+//
+// Clients may define custom options as extensions of the *Options messages.
+// These extensions may not yet be known at parsing time, so the parser cannot
+// store the values in them. Instead it stores them in a field in the *Options
+// message called uninterpreted_option. This field must have the same name
+// across all *Options messages. We then use this field to populate the
+// extensions when we build a descriptor, at which point all protos have been
+// parsed and so all extensions are known.
+//
+// Extension numbers for custom options may be chosen as follows:
+// * For options which will only be used within a single application or
+// organization, or for experimental options, use field numbers 50000
+// through 99999. It is up to you to ensure that you do not use the
+// same number for multiple options.
+// * For options which will be published and used publicly by multiple
+// independent entities, e-mail protobuf-global-extension-registry@google.com
+// to reserve extension numbers. Simply provide your project name (e.g.
+// Objective-C plugin) and your project website (if available) -- there's no
+// need to explain how you intend to use them. Usually you only need one
+// extension number. You can declare multiple options with only one extension
+// number by putting them in a sub-message. See the Custom Options section of
+// the docs for examples:
+// https://developers.google.com/protocol-buffers/docs/proto#options
+// If this turns out to be popular, a web service will be set up
+// to automatically assign option numbers.
-// ===================================================================
-// Optional source code info
+// ===================================================================
+// Optional source code info
package descriptor
-// The protocol compiler can output a FileDescriptorSet containing the .proto
-// files it parses.
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
FileDescriptorSet: {
file?: [...FileDescriptorProto] @protobuf(1)
}
-// Describes a complete .proto file.
+// Describes a complete .proto file.
FileDescriptorProto: {
- name?: string @protobuf(1) // file name, relative to root of source tree
- package?: string @protobuf(2) // e.g. "foo", "foo.bar", etc.
+ name?: string @protobuf(1) // file name, relative to root of source tree
+ package?: string @protobuf(2) // e.g. "foo", "foo.bar", etc.
- // Names of files imported by this file.
+ // Names of files imported by this file.
dependency?: [...string] @protobuf(3)
- // Indexes of the public imported files in the dependency list above.
+ // Indexes of the public imported files in the dependency list above.
publicDependency?: [...int32] @protobuf(10,name=public_dependency)
- // Indexes of the weak imported files in the dependency list.
- // For Google-internal migration only. Do not use.
+ // Indexes of the weak imported files in the dependency list.
+ // For Google-internal migration only. Do not use.
weakDependency?: [...int32] @protobuf(11,name=weak_dependency)
- // All top-level definitions in this file.
+ // All top-level definitions in this file.
messageType?: [...DescriptorProto] @protobuf(4,name=message_type)
enumType?: [...EnumDescriptorProto] @protobuf(5,name=enum_type)
service?: [...ServiceDescriptorProto] @protobuf(6)
extension?: [...FieldDescriptorProto] @protobuf(7)
options?: FileOptions @protobuf(8)
- // This field contains optional information about the original source code.
- // You may safely remove this entire field without harming runtime
- // functionality of the descriptors -- the information is needed only by
- // development tools.
+ // This field contains optional information about the original source code.
+ // You may safely remove this entire field without harming runtime
+ // functionality of the descriptors -- the information is needed only by
+ // development tools.
sourceCodeInfo?: SourceCodeInfo @protobuf(9,name=source_code_info)
- // The syntax of the proto file.
- // The supported values are "proto2" and "proto3".
+ // The syntax of the proto file.
+ // The supported values are "proto2" and "proto3".
syntax?: string @protobuf(12)
}
-// Describes a message type.
+// Describes a message type.
DescriptorProto: {
name?: string @protobuf(1)
field?: [...FieldDescriptorProto] @protobuf(2)
@@ -123,103 +123,103 @@
options?: MessageOptions @protobuf(7)
reservedRange?: [...DescriptorProto_ReservedRange] @protobuf(9,type=ReservedRange,name=reserved_range)
- // Reserved field names, which may not be used by fields in the same message.
- // A given name may only be reserved once.
+ // Reserved field names, which may not be used by fields in the same message.
+ // A given name may only be reserved once.
reservedName?: [...string] @protobuf(10,name=reserved_name)
}
DescriptorProto_ExtensionRange: {
- start?: int32 @protobuf(1) // Inclusive.
- end?: int32 @protobuf(2) // Exclusive.
+ start?: int32 @protobuf(1) // Inclusive.
+ end?: int32 @protobuf(2) // Exclusive.
options?: ExtensionRangeOptions @protobuf(3)
}
-// Range of reserved tag numbers. Reserved tag numbers may not be used by
-// fields or extension ranges in the same message. Reserved ranges may
-// not overlap.
+// Range of reserved tag numbers. Reserved tag numbers may not be used by
+// fields or extension ranges in the same message. Reserved ranges may
+// not overlap.
DescriptorProto_ReservedRange: {
- start?: int32 @protobuf(1) // Inclusive.
- end?: int32 @protobuf(2) // Exclusive.
+ start?: int32 @protobuf(1) // Inclusive.
+ end?: int32 @protobuf(2) // Exclusive.
}
ExtensionRangeOptions: {
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-// Describes a field within a message.
+// Describes a field within a message.
FieldDescriptorProto: {
name?: string @protobuf(1)
number?: int32 @protobuf(3)
label?: FieldDescriptorProto_Label @protobuf(4,type=Label)
- // If type_name is set, this need not be set. If both this and type_name
- // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+ // If type_name is set, this need not be set. If both this and type_name
+ // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
type?: FieldDescriptorProto_Type @protobuf(5,type=Type)
- // For message and enum types, this is the name of the type. If the name
- // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
- // rules are used to find the type (i.e. first the nested types within this
- // message are searched, then within the parent, on up to the root
- // namespace).
+ // For message and enum types, this is the name of the type. If the name
+ // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
+ // rules are used to find the type (i.e. first the nested types within this
+ // message are searched, then within the parent, on up to the root
+ // namespace).
typeName?: string @protobuf(6,name=type_name)
- // For extensions, this is the name of the type being extended. It is
- // resolved in the same manner as type_name.
+ // For extensions, this is the name of the type being extended. It is
+ // resolved in the same manner as type_name.
extendee?: string @protobuf(2)
- // For numeric types, contains the original text representation of the value.
- // For booleans, "true" or "false".
- // For strings, contains the default text contents (not escaped in any way).
- // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
- // TODO(kenton): Base-64 encode?
+ // For numeric types, contains the original text representation of the value.
+ // For booleans, "true" or "false".
+ // For strings, contains the default text contents (not escaped in any way).
+ // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
+ // TODO(kenton): Base-64 encode?
defaultValue?: string @protobuf(7,name=default_value)
- // If set, gives the index of a oneof in the containing type's oneof_decl
- // list. This field is a member of that oneof.
+ // If set, gives the index of a oneof in the containing type's oneof_decl
+ // list. This field is a member of that oneof.
oneofIndex?: int32 @protobuf(9,name=oneof_index)
- // JSON name of this field. The value is set by protocol compiler. If the
- // user has set a "json_name" option on this field, that option's value
- // will be used. Otherwise, it's deduced from the field's name by converting
- // it to camelCase.
+ // JSON name of this field. The value is set by protocol compiler. If the
+ // user has set a "json_name" option on this field, that option's value
+ // will be used. Otherwise, it's deduced from the field's name by converting
+ // it to camelCase.
jsonName?: string @protobuf(10,name=json_name)
options?: FieldOptions @protobuf(8)
}
FieldDescriptorProto_Type:
- // 0 is reserved for errors.
- // Order is weird for historical reasons.
+ // 0 is reserved for errors.
+ // Order is weird for historical reasons.
*"TYPE_DOUBLE" |
"TYPE_FLOAT" |
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
- // negative values are likely.
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ // negative values are likely.
"TYPE_INT64" |
"TYPE_UINT64" |
- // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
- // negative values are likely.
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ // negative values are likely.
"TYPE_INT32" |
"TYPE_FIXED64" |
"TYPE_FIXED32" |
"TYPE_BOOL" |
"TYPE_STRING" |
- // Tag-delimited aggregate.
- // Group type is deprecated and not supported in proto3. However, Proto3
- // implementations should still be able to parse the group wire format and
- // treat group fields as unknown fields.
+ // Tag-delimited aggregate.
+ // Group type is deprecated and not supported in proto3. However, Proto3
+ // implementations should still be able to parse the group wire format and
+ // treat group fields as unknown fields.
"TYPE_GROUP" |
- "TYPE_MESSAGE" | // Length-delimited aggregate.
+ "TYPE_MESSAGE" | // Length-delimited aggregate.
- // New in version 2.
+ // New in version 2.
"TYPE_BYTES" |
"TYPE_UINT32" |
"TYPE_ENUM" |
"TYPE_SFIXED32" |
"TYPE_SFIXED64" |
- "TYPE_SINT32" | // Uses ZigZag encoding.
- "TYPE_SINT64" // Uses ZigZag encoding.
+ "TYPE_SINT32" | // Uses ZigZag encoding.
+ "TYPE_SINT64" // Uses ZigZag encoding.
FieldDescriptorProto_Type_value: {
"TYPE_DOUBLE": 1
@@ -242,7 +242,7 @@
"TYPE_SINT64": 18
}
FieldDescriptorProto_Label:
- // 0 is reserved for errors
+ // 0 is reserved for errors
*"LABEL_OPTIONAL" |
"LABEL_REQUIRED" |
"LABEL_REPEATED"
@@ -253,317 +253,317 @@
"LABEL_REPEATED": 3
}
-// Describes a oneof.
+// Describes a oneof.
OneofDescriptorProto: {
name?: string @protobuf(1)
options?: OneofOptions @protobuf(2)
}
-// Describes an enum type.
+// Describes an enum type.
EnumDescriptorProto: {
name?: string @protobuf(1)
value?: [...EnumValueDescriptorProto] @protobuf(2)
options?: EnumOptions @protobuf(3)
- // Range of reserved numeric values. Reserved numeric values may not be used
- // by enum values in the same enum declaration. Reserved ranges may not
- // overlap.
+ // Range of reserved numeric values. Reserved numeric values may not be used
+ // by enum values in the same enum declaration. Reserved ranges may not
+ // overlap.
reservedRange?: [...EnumDescriptorProto_EnumReservedRange] @protobuf(4,type=EnumReservedRange,name=reserved_range)
- // Reserved enum value names, which may not be reused. A given name may only
- // be reserved once.
+ // Reserved enum value names, which may not be reused. A given name may only
+ // be reserved once.
reservedName?: [...string] @protobuf(5,name=reserved_name)
}
-// Range of reserved numeric values. Reserved values may not be used by
-// entries in the same enum. Reserved ranges may not overlap.
-//
-// Note that this is distinct from DescriptorProto.ReservedRange in that it
-// is inclusive such that it can appropriately represent the entire int32
-// domain.
+// Range of reserved numeric values. Reserved values may not be used by
+// entries in the same enum. Reserved ranges may not overlap.
+//
+// Note that this is distinct from DescriptorProto.ReservedRange in that it
+// is inclusive such that it can appropriately represent the entire int32
+// domain.
EnumDescriptorProto_EnumReservedRange: {
- start?: int32 @protobuf(1) // Inclusive.
- end?: int32 @protobuf(2) // Inclusive.
+ start?: int32 @protobuf(1) // Inclusive.
+ end?: int32 @protobuf(2) // Inclusive.
}
-// Describes a value within an enum.
+// Describes a value within an enum.
EnumValueDescriptorProto: {
name?: string @protobuf(1)
number?: int32 @protobuf(2)
options?: EnumValueOptions @protobuf(3)
}
-// Describes a service.
+// Describes a service.
ServiceDescriptorProto: {
name?: string @protobuf(1)
method?: [...MethodDescriptorProto] @protobuf(2)
options?: ServiceOptions @protobuf(3)
}
-// Describes a method of a service.
+// Describes a method of a service.
MethodDescriptorProto: {
name?: string @protobuf(1)
- // Input and output type names. These are resolved in the same way as
- // FieldDescriptorProto.type_name, but must refer to a message type.
+ // Input and output type names. These are resolved in the same way as
+ // FieldDescriptorProto.type_name, but must refer to a message type.
inputType?: string @protobuf(2,name=input_type)
outputType?: string @protobuf(3,name=output_type)
options?: MethodOptions @protobuf(4)
- // Identifies if client streams multiple client messages
+ // Identifies if client streams multiple client messages
clientStreaming?: bool @protobuf(5,name=client_streaming,"default=false")
- // Identifies if server streams multiple server messages
+ // Identifies if server streams multiple server messages
serverStreaming?: bool @protobuf(6,name=server_streaming,"default=false")
}
FileOptions: {
- // Sets the Java package where classes generated from this .proto will be
- // placed. By default, the proto package is used, but this is often
- // inappropriate because proto packages do not normally start with backwards
- // domain names.
+ // Sets the Java package where classes generated from this .proto will be
+ // placed. By default, the proto package is used, but this is often
+ // inappropriate because proto packages do not normally start with backwards
+ // domain names.
javaPackage?: string @protobuf(1,name=java_package)
- // If set, all the classes from the .proto file are wrapped in a single
- // outer class with the given name. This applies to both Proto1
- // (equivalent to the old "--one_java_file" option) and Proto2 (where
- // a .proto always translates to a single class, but you may want to
- // explicitly choose the class name).
+ // If set, all the classes from the .proto file are wrapped in a single
+ // outer class with the given name. This applies to both Proto1
+ // (equivalent to the old "--one_java_file" option) and Proto2 (where
+ // a .proto always translates to a single class, but you may want to
+ // explicitly choose the class name).
javaOuterClassname?: string @protobuf(8,name=java_outer_classname)
- // If set true, then the Java code generator will generate a separate .java
- // file for each top-level message, enum, and service defined in the .proto
- // file. Thus, these types will *not* be nested inside the outer class
- // named by java_outer_classname. However, the outer class will still be
- // generated to contain the file's getDescriptor() method as well as any
- // top-level extensions defined in the file.
+ // If set true, then the Java code generator will generate a separate .java
+ // file for each top-level message, enum, and service defined in the .proto
+ // file. Thus, these types will *not* be nested inside the outer class
+ // named by java_outer_classname. However, the outer class will still be
+ // generated to contain the file's getDescriptor() method as well as any
+ // top-level extensions defined in the file.
javaMultipleFiles?: bool @protobuf(10,name=java_multiple_files,"default=false")
- // This option does nothing.
+ // This option does nothing.
javaGenerateEqualsAndHash?: bool @protobuf(20,name=java_generate_equals_and_hash,deprecated)
- // If set true, then the Java2 code generator will generate code that
- // throws an exception whenever an attempt is made to assign a non-UTF-8
- // byte sequence to a string field.
- // Message reflection will do the same.
- // However, an extension field still accepts non-UTF-8 byte sequences.
- // This option has no effect on when used with the lite runtime.
+ // If set true, then the Java2 code generator will generate code that
+ // throws an exception whenever an attempt is made to assign a non-UTF-8
+ // byte sequence to a string field.
+ // Message reflection will do the same.
+ // However, an extension field still accepts non-UTF-8 byte sequences.
+ // This option has no effect on when used with the lite runtime.
javaStringCheckUtf8?: bool @protobuf(27,name=java_string_check_utf8,"default=false")
optimizeFor?: FileOptions_OptimizeMode @protobuf(9,type=OptimizeMode,name=optimize_for,"default=SPEED")
- // Sets the Go package where structs generated from this .proto will be
- // placed. If omitted, the Go package will be derived from the following:
- // - The basename of the package import path, if provided.
- // - Otherwise, the package statement in the .proto file, if present.
- // - Otherwise, the basename of the .proto file, without extension.
+ // Sets the Go package where structs generated from this .proto will be
+ // placed. If omitted, the Go package will be derived from the following:
+ // - The basename of the package import path, if provided.
+ // - Otherwise, the package statement in the .proto file, if present.
+ // - Otherwise, the basename of the .proto file, without extension.
goPackage?: string @protobuf(11,name=go_package)
- // Should generic services be generated in each language? "Generic" services
- // are not specific to any particular RPC system. They are generated by the
- // main code generators in each language (without additional plugins).
- // Generic services were the only kind of service generation supported by
- // early versions of google.protobuf.
- //
- // Generic services are now considered deprecated in favor of using plugins
- // that generate code specific to your particular RPC system. Therefore,
- // these default to false. Old code which depends on generic services should
- // explicitly set them to true.
+ // Should generic services be generated in each language? "Generic" services
+ // are not specific to any particular RPC system. They are generated by the
+ // main code generators in each language (without additional plugins).
+ // Generic services were the only kind of service generation supported by
+ // early versions of google.protobuf.
+ //
+ // Generic services are now considered deprecated in favor of using plugins
+ // that generate code specific to your particular RPC system. Therefore,
+ // these default to false. Old code which depends on generic services should
+ // explicitly set them to true.
ccGenericServices?: bool @protobuf(16,name=cc_generic_services,"default=false")
javaGenericServices?: bool @protobuf(17,name=java_generic_services,"default=false")
pyGenericServices?: bool @protobuf(18,name=py_generic_services,"default=false")
phpGenericServices?: bool @protobuf(42,name=php_generic_services,"default=false")
- // Is this file deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for everything in the file, or it will be completely ignored; in the very
- // least, this is a formalization for deprecating files.
+ // Is this file deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for everything in the file, or it will be completely ignored; in the very
+ // least, this is a formalization for deprecating files.
deprecated?: bool @protobuf(23,"default=false")
- // Enables the use of arenas for the proto messages in this file. This applies
- // only to generated classes for C++.
+ // Enables the use of arenas for the proto messages in this file. This applies
+ // only to generated classes for C++.
ccEnableArenas?: bool @protobuf(31,name=cc_enable_arenas,"default=false")
- // Sets the objective c class prefix which is prepended to all objective c
- // generated classes from this .proto. There is no default.
+ // Sets the objective c class prefix which is prepended to all objective c
+ // generated classes from this .proto. There is no default.
objcClassPrefix?: string @protobuf(36,name=objc_class_prefix)
- // Namespace for generated classes; defaults to the package.
+ // Namespace for generated classes; defaults to the package.
csharpNamespace?: string @protobuf(37,name=csharp_namespace)
- // By default Swift generators will take the proto package and CamelCase it
- // replacing '.' with underscore and use that to prefix the types/symbols
- // defined. When this options is provided, they will use this value instead
- // to prefix the types/symbols defined.
+ // By default Swift generators will take the proto package and CamelCase it
+ // replacing '.' with underscore and use that to prefix the types/symbols
+ // defined. When this options is provided, they will use this value instead
+ // to prefix the types/symbols defined.
swiftPrefix?: string @protobuf(39,name=swift_prefix)
- // Sets the php class prefix which is prepended to all php generated classes
- // from this .proto. Default is empty.
+ // Sets the php class prefix which is prepended to all php generated classes
+ // from this .proto. Default is empty.
phpClassPrefix?: string @protobuf(40,name=php_class_prefix)
- // Use this option to change the namespace of php generated classes. Default
- // is empty. When this option is empty, the package name will be used for
- // determining the namespace.
+ // Use this option to change the namespace of php generated classes. Default
+ // is empty. When this option is empty, the package name will be used for
+ // determining the namespace.
phpNamespace?: string @protobuf(41,name=php_namespace)
- // Use this option to change the namespace of php generated metadata classes.
- // Default is empty. When this option is empty, the proto file name will be
- // used for determining the namespace.
+ // Use this option to change the namespace of php generated metadata classes.
+ // Default is empty. When this option is empty, the proto file name will be
+ // used for determining the namespace.
phpMetadataNamespace?: string @protobuf(44,name=php_metadata_namespace)
- // Use this option to change the package of ruby generated classes. Default
- // is empty. When this option is not set, the package name will be used for
- // determining the ruby package.
+ // Use this option to change the package of ruby generated classes. Default
+ // is empty. When this option is not set, the package name will be used for
+ // determining the ruby package.
rubyPackage?: string @protobuf(45,name=ruby_package)
- // The parser stores options it doesn't recognize here.
- // See the documentation for the "Options" section above.
+ // The parser stores options it doesn't recognize here.
+ // See the documentation for the "Options" section above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-// Generated classes can be optimized for speed or code size.
+// Generated classes can be optimized for speed or code size.
FileOptions_OptimizeMode:
- *"SPEED" | // Generate complete code for parsing, serialization,
+ *"SPEED" | // Generate complete code for parsing, serialization,
- // etc.
+ // etc.
"CODE_SIZE" |
- "LITE_RUNTIME" // Generate code using MessageLite and the lite runtime.
+ "LITE_RUNTIME" // Generate code using MessageLite and the lite runtime.
FileOptions_OptimizeMode_value: {
"SPEED": 1
- "CODE_SIZE": 2 // Use ReflectionOps to implement these methods.
+ "CODE_SIZE": 2 // Use ReflectionOps to implement these methods.
"LITE_RUNTIME": 3
}
MessageOptions: {
- // Set true to use the old proto1 MessageSet wire format for extensions.
- // This is provided for backwards-compatibility with the MessageSet wire
- // format. You should not use this for any other reason: It's less
- // efficient, has fewer features, and is more complicated.
- //
- // The message must be defined exactly as follows:
- // message Foo {
- // option message_set_wire_format = true;
- // extensions 4 to max;
- // }
- // Note that the message cannot have any defined fields; MessageSets only
- // have extensions.
- //
- // All extensions of your type must be singular messages; e.g. they cannot
- // be int32s, enums, or repeated messages.
- //
- // Because this is an option, the above two restrictions are not enforced by
- // the protocol compiler.
+ // Set true to use the old proto1 MessageSet wire format for extensions.
+ // This is provided for backwards-compatibility with the MessageSet wire
+ // format. You should not use this for any other reason: It's less
+ // efficient, has fewer features, and is more complicated.
+ //
+ // The message must be defined exactly as follows:
+ // message Foo {
+ // option message_set_wire_format = true;
+ // extensions 4 to max;
+ // }
+ // Note that the message cannot have any defined fields; MessageSets only
+ // have extensions.
+ //
+ // All extensions of your type must be singular messages; e.g. they cannot
+ // be int32s, enums, or repeated messages.
+ //
+ // Because this is an option, the above two restrictions are not enforced by
+ // the protocol compiler.
messageSetWireFormat?: bool @protobuf(1,name=message_set_wire_format,"default=false")
- // Disables the generation of the standard "descriptor()" accessor, which can
- // conflict with a field of the same name. This is meant to make migration
- // from proto1 easier; new code should avoid fields named "descriptor".
+ // Disables the generation of the standard "descriptor()" accessor, which can
+ // conflict with a field of the same name. This is meant to make migration
+ // from proto1 easier; new code should avoid fields named "descriptor".
noStandardDescriptorAccessor?: bool @protobuf(2,name=no_standard_descriptor_accessor,"default=false")
- // Is this message deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the message, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating messages.
+ // Is this message deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the message, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating messages.
deprecated?: bool @protobuf(3,"default=false")
- // Whether the message is an automatically generated map entry type for the
- // maps field.
- //
- // For maps fields:
- // map<KeyType, ValueType> map_field = 1;
- // The parsed descriptor looks like:
- // message MapFieldEntry {
- // option map_entry = true;
- // optional KeyType key = 1;
- // optional ValueType value = 2;
- // }
- // repeated MapFieldEntry map_field = 1;
- //
- // Implementations may choose not to generate the map_entry=true message, but
- // use a native map in the target language to hold the keys and values.
- // The reflection APIs in such implementations still need to work as
- // if the field is a repeated message field.
- //
- // NOTE: Do not set the option in .proto files. Always use the maps syntax
- // instead. The option should only be implicitly set by the proto compiler
- // parser.
+ // Whether the message is an automatically generated map entry type for the
+ // maps field.
+ //
+ // For maps fields:
+ // map<KeyType, ValueType> map_field = 1;
+ // The parsed descriptor looks like:
+ // message MapFieldEntry {
+ // option map_entry = true;
+ // optional KeyType key = 1;
+ // optional ValueType value = 2;
+ // }
+ // repeated MapFieldEntry map_field = 1;
+ //
+ // Implementations may choose not to generate the map_entry=true message, but
+ // use a native map in the target language to hold the keys and values.
+ // The reflection APIs in such implementations still need to work as
+ // if the field is a repeated message field.
+ //
+ // NOTE: Do not set the option in .proto files. Always use the maps syntax
+ // instead. The option should only be implicitly set by the proto compiler
+ // parser.
mapEntry?: bool @protobuf(7,name=map_entry)
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
FieldOptions: {
- // The ctype option instructs the C++ code generator to use a different
- // representation of the field than it normally would. See the specific
- // options below. This option is not yet implemented in the open source
- // release -- sorry, we'll try to include it in a future version!
+ // The ctype option instructs the C++ code generator to use a different
+ // representation of the field than it normally would. See the specific
+ // options below. This option is not yet implemented in the open source
+ // release -- sorry, we'll try to include it in a future version!
ctype?: FieldOptions_CType @protobuf(1,type=CType,"default=STRING")
- // The packed option can be enabled for repeated primitive fields to enable
- // a more efficient representation on the wire. Rather than repeatedly
- // writing the tag and type for each element, the entire array is encoded as
- // a single length-delimited blob. In proto3, only explicit setting it to
- // false will avoid using packed encoding.
+ // The packed option can be enabled for repeated primitive fields to enable
+ // a more efficient representation on the wire. Rather than repeatedly
+ // writing the tag and type for each element, the entire array is encoded as
+ // a single length-delimited blob. In proto3, only explicit setting it to
+ // false will avoid using packed encoding.
packed?: bool @protobuf(2)
- // The jstype option determines the JavaScript type used for values of the
- // field. The option is permitted only for 64 bit integral and fixed types
- // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
- // is represented as JavaScript string, which avoids loss of precision that
- // can happen when a large value is converted to a floating point JavaScript.
- // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
- // use the JavaScript "number" type. The behavior of the default option
- // JS_NORMAL is implementation dependent.
- //
- // This option is an enum to permit additional types to be added, e.g.
- // goog.math.Integer.
+ // The jstype option determines the JavaScript type used for values of the
+ // field. The option is permitted only for 64 bit integral and fixed types
+ // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
+ // is represented as JavaScript string, which avoids loss of precision that
+ // can happen when a large value is converted to a floating point JavaScript.
+ // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+ // use the JavaScript "number" type. The behavior of the default option
+ // JS_NORMAL is implementation dependent.
+ //
+ // This option is an enum to permit additional types to be added, e.g.
+ // goog.math.Integer.
jstype?: FieldOptions_JSType @protobuf(6,type=JSType,"default=JS_NORMAL")
- // Should this field be parsed lazily? Lazy applies only to message-type
- // fields. It means that when the outer message is initially parsed, the
- // inner message's contents will not be parsed but instead stored in encoded
- // form. The inner message will actually be parsed when it is first accessed.
- //
- // This is only a hint. Implementations are free to choose whether to use
- // eager or lazy parsing regardless of the value of this option. However,
- // setting this option true suggests that the protocol author believes that
- // using lazy parsing on this field is worth the additional bookkeeping
- // overhead typically needed to implement it.
- //
- // This option does not affect the public interface of any generated code;
- // all method signatures remain the same. Furthermore, thread-safety of the
- // interface is not affected by this option; const methods remain safe to
- // call from multiple threads concurrently, while non-const methods continue
- // to require exclusive access.
- //
- //
- // Note that implementations may choose not to check required fields within
- // a lazy sub-message. That is, calling IsInitialized() on the outer message
- // may return true even if the inner message has missing required fields.
- // This is necessary because otherwise the inner message would have to be
- // parsed in order to perform the check, defeating the purpose of lazy
- // parsing. An implementation which chooses not to check required fields
- // must be consistent about it. That is, for any particular sub-message, the
- // implementation must either *always* check its required fields, or *never*
- // check its required fields, regardless of whether or not the message has
- // been parsed.
+ // Should this field be parsed lazily? Lazy applies only to message-type
+ // fields. It means that when the outer message is initially parsed, the
+ // inner message's contents will not be parsed but instead stored in encoded
+ // form. The inner message will actually be parsed when it is first accessed.
+ //
+ // This is only a hint. Implementations are free to choose whether to use
+ // eager or lazy parsing regardless of the value of this option. However,
+ // setting this option true suggests that the protocol author believes that
+ // using lazy parsing on this field is worth the additional bookkeeping
+ // overhead typically needed to implement it.
+ //
+ // This option does not affect the public interface of any generated code;
+ // all method signatures remain the same. Furthermore, thread-safety of the
+ // interface is not affected by this option; const methods remain safe to
+ // call from multiple threads concurrently, while non-const methods continue
+ // to require exclusive access.
+ //
+ //
+ // Note that implementations may choose not to check required fields within
+ // a lazy sub-message. That is, calling IsInitialized() on the outer message
+ // may return true even if the inner message has missing required fields.
+ // This is necessary because otherwise the inner message would have to be
+ // parsed in order to perform the check, defeating the purpose of lazy
+ // parsing. An implementation which chooses not to check required fields
+ // must be consistent about it. That is, for any particular sub-message, the
+ // implementation must either *always* check its required fields, or *never*
+ // check its required fields, regardless of whether or not the message has
+ // been parsed.
lazy?: bool @protobuf(5,"default=false")
- // Is this field deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for accessors, or it will be completely ignored; in the very least, this
- // is a formalization for deprecating fields.
+ // Is this field deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for accessors, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating fields.
deprecated?: bool @protobuf(3,"default=false")
- // For Google-internal migration only. Do not use.
+ // For Google-internal migration only. Do not use.
weak?: bool @protobuf(10,"default=false")
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
FieldOptions_CType:
- // Default mode.
+ // Default mode.
*"STRING" |
"CORD" |
"STRING_PIECE"
@@ -574,13 +574,13 @@
"STRING_PIECE": 2
}
FieldOptions_JSType:
- // Use the default type.
+ // Use the default type.
*"JS_NORMAL" |
- // Use JavaScript strings.
+ // Use JavaScript strings.
"JS_STRING" |
- // Use JavaScript numbers.
+ // Use JavaScript numbers.
"JS_NUMBER"
FieldOptions_JSType_value: {
@@ -590,78 +590,78 @@
}
OneofOptions: {
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
EnumOptions: {
- // Set this option to true to allow mapping different tag names to the same
- // value.
+ // Set this option to true to allow mapping different tag names to the same
+ // value.
allowAlias?: bool @protobuf(2,name=allow_alias)
- // Is this enum deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the enum, or it will be completely ignored; in the very least, this
- // is a formalization for deprecating enums.
+ // Is this enum deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating enums.
deprecated?: bool @protobuf(3,"default=false")
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
EnumValueOptions: {
- // Is this enum value deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the enum value, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating enum values.
+ // Is this enum value deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum value, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating enum values.
deprecated?: bool @protobuf(1,"default=false")
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
ServiceOptions: {
- // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
- // framework. We apologize for hoarding these numbers to ourselves, but
- // we were already using them long before we decided to release Protocol
- // Buffers.
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
+ // framework. We apologize for hoarding these numbers to ourselves, but
+ // we were already using them long before we decided to release Protocol
+ // Buffers.
- // Is this service deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the service, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating services.
+ // Is this service deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the service, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating services.
deprecated?: bool @protobuf(33,"default=false")
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
MethodOptions: {
- // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
- // framework. We apologize for hoarding these numbers to ourselves, but
- // we were already using them long before we decided to release Protocol
- // Buffers.
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
+ // framework. We apologize for hoarding these numbers to ourselves, but
+ // we were already using them long before we decided to release Protocol
+ // Buffers.
- // Is this method deprecated?
- // Depending on the target platform, this can emit Deprecated annotations
- // for the method, or it will be completely ignored; in the very least,
- // this is a formalization for deprecating methods.
+ // Is this method deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the method, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating methods.
deprecated?: bool @protobuf(33,"default=false")
idempotencyLevel?: MethodOptions_IdempotencyLevel @protobuf(34,type=IdempotencyLevel,name=idempotency_level,"default=IDEMPOTENCY_UNKNOWN")
- // The parser stores options it doesn't recognize here. See above.
+ // The parser stores options it doesn't recognize here. See above.
uninterpretedOption?: [...UninterpretedOption] @protobuf(999,name=uninterpreted_option)
}
-// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
-// or neither? HTTP based RPC implementation may choose GET verb for safe
-// methods, and PUT verb for idempotent methods instead of the default POST.
+// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+// or neither? HTTP based RPC implementation may choose GET verb for safe
+// methods, and PUT verb for idempotent methods instead of the default POST.
MethodOptions_IdempotencyLevel:
*"IDEMPOTENCY_UNKNOWN" |
- "NO_SIDE_EFFECTS" | // implies idempotent
- "IDEMPOTENT" // idempotent, but may have side effects
+ "NO_SIDE_EFFECTS" | // implies idempotent
+ "IDEMPOTENT" // idempotent, but may have side effects
MethodOptions_IdempotencyLevel_value: {
"IDEMPOTENCY_UNKNOWN": 0
@@ -669,17 +669,17 @@
"IDEMPOTENT": 2
}
-// A message representing a option the parser does not recognize. This only
-// appears in options protos created by the compiler::Parser class.
-// DescriptorPool resolves these when building Descriptor objects. Therefore,
-// options protos in descriptor objects (e.g. returned by Descriptor::options(),
-// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
-// in them.
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
UninterpretedOption: {
name?: [...UninterpretedOption_NamePart] @protobuf(2,type=NamePart)
- // The value of the uninterpreted option, in whatever type the tokenizer
- // identified it as during parsing. Exactly one of these should be set.
+ // The value of the uninterpreted option, in whatever type the tokenizer
+ // identified it as during parsing. Exactly one of these should be set.
identifierValue?: string @protobuf(3,name=identifier_value)
positiveIntValue?: uint64 @protobuf(4,name=positive_int_value)
negativeIntValue?: int64 @protobuf(5,name=negative_int_value)
@@ -688,173 +688,173 @@
aggregateValue?: string @protobuf(8,name=aggregate_value)
}
-// The name of the uninterpreted option. Each string represents a segment in
-// a dot-separated name. is_extension is true iff a segment represents an
-// extension (denoted with parentheses in options specs in .proto files).
-// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
-// "foo.(bar.baz).qux".
+// The name of the uninterpreted option. Each string represents a segment in
+// a dot-separated name. is_extension is true iff a segment represents an
+// extension (denoted with parentheses in options specs in .proto files).
+// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+// "foo.(bar.baz).qux".
UninterpretedOption_NamePart: {
namePart?: string @protobuf(1,name=name_part)
isExtension?: bool @protobuf(2,name=is_extension)
}
-// Encapsulates information about the original source file from which a
-// FileDescriptorProto was generated.
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
SourceCodeInfo: {
- // A Location identifies a piece of source code in a .proto file which
- // corresponds to a particular definition. This information is intended
- // to be useful to IDEs, code indexers, documentation generators, and similar
- // tools.
- //
- // For example, say we have a file like:
- // message Foo {
- // optional string foo = 1;
- // }
- // Let's look at just the field definition:
- // optional string foo = 1;
- // ^ ^^ ^^ ^ ^^^
- // a bc de f ghi
- // We have the following locations:
- // span path represents
- // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
- // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
- // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
- // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
- // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
- //
- // Notes:
- // - A location may refer to a repeated field itself (i.e. not to any
- // particular index within it). This is used whenever a set of elements are
- // logically enclosed in a single code segment. For example, an entire
- // extend block (possibly containing multiple extension definitions) will
- // have an outer location whose path refers to the "extensions" repeated
- // field without an index.
- // - Multiple locations may have the same path. This happens when a single
- // logical declaration is spread out across multiple places. The most
- // obvious example is the "extend" block again -- there may be multiple
- // extend blocks in the same scope, each of which will have the same path.
- // - A location's span is not always a subset of its parent's span. For
- // example, the "extendee" of an extension declaration appears at the
- // beginning of the "extend" block and is shared by all extensions within
- // the block.
- // - Just because a location's span is a subset of some other location's span
- // does not mean that it is a descendant. For example, a "group" defines
- // both a type and a field in a single declaration. Thus, the locations
- // corresponding to the type and field and their components will overlap.
- // - Code which tries to interpret locations should probably be designed to
- // ignore those that it doesn't understand, as more types of locations could
- // be recorded in the future.
+ // A Location identifies a piece of source code in a .proto file which
+ // corresponds to a particular definition. This information is intended
+ // to be useful to IDEs, code indexers, documentation generators, and similar
+ // tools.
+ //
+ // For example, say we have a file like:
+ // message Foo {
+ // optional string foo = 1;
+ // }
+ // Let's look at just the field definition:
+ // optional string foo = 1;
+ // ^ ^^ ^^ ^ ^^^
+ // a bc de f ghi
+ // We have the following locations:
+ // span path represents
+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
+ //
+ // Notes:
+ // - A location may refer to a repeated field itself (i.e. not to any
+ // particular index within it). This is used whenever a set of elements are
+ // logically enclosed in a single code segment. For example, an entire
+ // extend block (possibly containing multiple extension definitions) will
+ // have an outer location whose path refers to the "extensions" repeated
+ // field without an index.
+ // - Multiple locations may have the same path. This happens when a single
+ // logical declaration is spread out across multiple places. The most
+ // obvious example is the "extend" block again -- there may be multiple
+ // extend blocks in the same scope, each of which will have the same path.
+ // - A location's span is not always a subset of its parent's span. For
+ // example, the "extendee" of an extension declaration appears at the
+ // beginning of the "extend" block and is shared by all extensions within
+ // the block.
+ // - Just because a location's span is a subset of some other location's span
+ // does not mean that it is a descendant. For example, a "group" defines
+ // both a type and a field in a single declaration. Thus, the locations
+ // corresponding to the type and field and their components will overlap.
+ // - Code which tries to interpret locations should probably be designed to
+ // ignore those that it doesn't understand, as more types of locations could
+ // be recorded in the future.
location?: [...SourceCodeInfo_Location] @protobuf(1,type=Location)
}
SourceCodeInfo_Location: {
- // Identifies which part of the FileDescriptorProto was defined at this
- // location.
- //
- // Each element is a field number or an index. They form a path from
- // the root FileDescriptorProto to the place where the definition. For
- // example, this path:
- // [ 4, 3, 2, 7, 1 ]
- // refers to:
- // file.message_type(3) // 4, 3
- // .field(7) // 2, 7
- // .name() // 1
- // This is because FileDescriptorProto.message_type has field number 4:
- // repeated DescriptorProto message_type = 4;
- // and DescriptorProto.field has field number 2:
- // repeated FieldDescriptorProto field = 2;
- // and FieldDescriptorProto.name has field number 1:
- // optional string name = 1;
- //
- // Thus, the above path gives the location of a field name. If we removed
- // the last element:
- // [ 4, 3, 2, 7 ]
- // this path refers to the whole field declaration (from the beginning
- // of the label to the terminating semicolon).
+ // Identifies which part of the FileDescriptorProto was defined at this
+ // location.
+ //
+ // Each element is a field number or an index. They form a path from
+ // the root FileDescriptorProto to the place where the definition. For
+ // example, this path:
+ // [ 4, 3, 2, 7, 1 ]
+ // refers to:
+ // file.message_type(3) // 4, 3
+ // .field(7) // 2, 7
+ // .name() // 1
+ // This is because FileDescriptorProto.message_type has field number 4:
+ // repeated DescriptorProto message_type = 4;
+ // and DescriptorProto.field has field number 2:
+ // repeated FieldDescriptorProto field = 2;
+ // and FieldDescriptorProto.name has field number 1:
+ // optional string name = 1;
+ //
+ // Thus, the above path gives the location of a field name. If we removed
+ // the last element:
+ // [ 4, 3, 2, 7 ]
+ // this path refers to the whole field declaration (from the beginning
+ // of the label to the terminating semicolon).
path?: [...int32] @protobuf(1,packed)
- // Always has exactly three or four elements: start line, start column,
- // end line (optional, otherwise assumed same as start line), end column.
- // These are packed into a single field for efficiency. Note that line
- // and column numbers are zero-based -- typically you will want to add
- // 1 to each before displaying to a user.
+ // Always has exactly three or four elements: start line, start column,
+ // end line (optional, otherwise assumed same as start line), end column.
+ // These are packed into a single field for efficiency. Note that line
+ // and column numbers are zero-based -- typically you will want to add
+ // 1 to each before displaying to a user.
span?: [...int32] @protobuf(2,packed)
- // If this SourceCodeInfo represents a complete declaration, these are any
- // comments appearing before and after the declaration which appear to be
- // attached to the declaration.
- //
- // A series of line comments appearing on consecutive lines, with no other
- // tokens appearing on those lines, will be treated as a single comment.
- //
- // leading_detached_comments will keep paragraphs of comments that appear
- // before (but not connected to) the current element. Each paragraph,
- // separated by empty lines, will be one comment element in the repeated
- // field.
- //
- // Only the comment content is provided; comment markers (e.g. //) are
- // stripped out. For block comments, leading whitespace and an asterisk
- // will be stripped from the beginning of each line other than the first.
- // Newlines are included in the output.
- //
- // Examples:
- //
- // optional int32 foo = 1; // Comment attached to foo.
- // // Comment attached to bar.
- // optional int32 bar = 2;
- //
- // optional string baz = 3;
- // // Comment attached to baz.
- // // Another line attached to baz.
- //
- // // Comment attached to qux.
- // //
- // // Another line attached to qux.
- // optional double qux = 4;
- //
- // // Detached comment for corge. This is not leading or trailing comments
- // // to qux or corge because there are blank lines separating it from
- // // both.
- //
- // // Detached comment for corge paragraph 2.
- //
- // optional string corge = 5;
- // /* Block comment attached
- // * to corge. Leading asterisks
- // * will be removed. */
- // /* Block comment attached to
- // * grault. */
- // optional int32 grault = 6;
- //
- // // ignored detached comments.
+ // If this SourceCodeInfo represents a complete declaration, these are any
+ // comments appearing before and after the declaration which appear to be
+ // attached to the declaration.
+ //
+ // A series of line comments appearing on consecutive lines, with no other
+ // tokens appearing on those lines, will be treated as a single comment.
+ //
+ // leading_detached_comments will keep paragraphs of comments that appear
+ // before (but not connected to) the current element. Each paragraph,
+ // separated by empty lines, will be one comment element in the repeated
+ // field.
+ //
+ // Only the comment content is provided; comment markers (e.g. //) are
+ // stripped out. For block comments, leading whitespace and an asterisk
+ // will be stripped from the beginning of each line other than the first.
+ // Newlines are included in the output.
+ //
+ // Examples:
+ //
+ // optional int32 foo = 1; // Comment attached to foo.
+ // // Comment attached to bar.
+ // optional int32 bar = 2;
+ //
+ // optional string baz = 3;
+ // // Comment attached to baz.
+ // // Another line attached to baz.
+ //
+ // // Comment attached to qux.
+ // //
+ // // Another line attached to qux.
+ // optional double qux = 4;
+ //
+ // // Detached comment for corge. This is not leading or trailing comments
+ // // to qux or corge because there are blank lines separating it from
+ // // both.
+ //
+ // // Detached comment for corge paragraph 2.
+ //
+ // optional string corge = 5;
+ // /* Block comment attached
+ // * to corge. Leading asterisks
+ // * will be removed. */
+ // /* Block comment attached to
+ // * grault. */
+ // optional int32 grault = 6;
+ //
+ // // ignored detached comments.
leadingComments?: string @protobuf(3,name=leading_comments)
trailingComments?: string @protobuf(4,name=trailing_comments)
leadingDetachedComments?: [...string] @protobuf(6,name=leading_detached_comments)
}
-// Describes the relationship between generated code and its original source
-// file. A GeneratedCodeInfo message is associated with only one generated
-// source file, but may contain references to different source .proto files.
+// Describes the relationship between generated code and its original source
+// file. A GeneratedCodeInfo message is associated with only one generated
+// source file, but may contain references to different source .proto files.
GeneratedCodeInfo: {
- // An Annotation connects some span of text in generated code to an element
- // of its generating .proto file.
+ // An Annotation connects some span of text in generated code to an element
+ // of its generating .proto file.
annotation?: [...GeneratedCodeInfo_Annotation] @protobuf(1,type=Annotation)
}
GeneratedCodeInfo_Annotation: {
- // Identifies the element in the original source .proto file. This field
- // is formatted the same as SourceCodeInfo.Location.path.
+ // Identifies the element in the original source .proto file. This field
+ // is formatted the same as SourceCodeInfo.Location.path.
path?: [...int32] @protobuf(1,packed)
- // Identifies the filesystem path to the original source .proto.
+ // Identifies the filesystem path to the original source .proto.
sourceFile?: string @protobuf(2,name=source_file)
- // Identifies the starting offset in bytes in the generated code
- // that relates to the identified object.
+ // Identifies the starting offset in bytes in the generated code
+ // that relates to the identified object.
begin?: int32 @protobuf(3)
- // Identifies the ending offset in bytes in the generated code that
- // relates to the identified offset. The end offset should be one past
- // the last relevant byte (so the length of the text = end - begin).
+ // Identifies the ending offset in bytes in the generated code that
+ // relates to the identified offset. The end offset should be one past
+ // the last relevant byte (so the length of the text = end - begin).
end?: int32 @protobuf(4)
}
diff --git a/encoding/protobuf/testdata/istio.io/api/pkg/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue b/encoding/protobuf/testdata/istio.io/api/pkg/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
index fe83de2..ab7356e 100644
--- a/encoding/protobuf/testdata/istio.io/api/pkg/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
+++ b/encoding/protobuf/testdata/istio.io/api/pkg/google.golang.org/genproto/googleapis/rpc/status/status_proto_gen.cue
@@ -1,85 +1,85 @@
-// Copyright 2017 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
+// Copyright 2017 Google Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
package status
-// The `Status` type defines a logical error model that is suitable for
-// different programming environments, including REST APIs and RPC APIs. It is
-// used by [gRPC](https://github.com/grpc). The error model is designed to be:
-//
-// - Simple to use and understand for most users
-// - Flexible enough to meet unexpected needs
-//
-// # Overview
-//
-// The `Status` message contains three pieces of data: error code, error
-// message, and error details. The error code should be an enum value of
-// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes
-// if needed. The error message should be a developer-facing English message
-// that helps developers *understand* and *resolve* the error. If a localized
-// user-facing error message is needed, put the localized message in the error
-// details or localize it in the client. The optional error details may contain
-// arbitrary information about the error. There is a predefined set of error
-// detail types in the package `google.rpc` that can be used for common error
-// conditions.
-//
-// # Language mapping
-//
-// The `Status` message is the logical representation of the error model, but it
-// is not necessarily the actual wire format. When the `Status` message is
-// exposed in different client libraries and different wire protocols, it can be
-// mapped differently. For example, it will likely be mapped to some exceptions
-// in Java, but more likely mapped to some error codes in C.
-//
-// # Other uses
-//
-// The error model and the `Status` message can be used in a variety of
-// environments, either with or without APIs, to provide a
-// consistent developer experience across different environments.
-//
-// Example uses of this error model include:
-//
-// - Partial errors. If a service needs to return partial errors to the client,
-// it may embed the `Status` in the normal response to indicate the partial
-// errors.
-//
-// - Workflow errors. A typical workflow has multiple steps. Each step may
-// have a `Status` message for error reporting.
-//
-// - Batch operations. If a client uses batch request and batch response, the
-// `Status` message should be used directly inside batch response, one for
-// each error sub-response.
-//
-// - Asynchronous operations. If an API call embeds asynchronous operation
-// results in its response, the status of those operations should be
-// represented directly using the `Status` message.
-//
-// - Logging. If some API errors are stored in logs, the message `Status` could
-// be used directly after any stripping needed for security/privacy reasons.
+// The `Status` type defines a logical error model that is suitable for
+// different programming environments, including REST APIs and RPC APIs. It is
+// used by [gRPC](https://github.com/grpc). The error model is designed to be:
+//
+// - Simple to use and understand for most users
+// - Flexible enough to meet unexpected needs
+//
+// # Overview
+//
+// The `Status` message contains three pieces of data: error code, error
+// message, and error details. The error code should be an enum value of
+// [google.rpc.Code][google.rpc.Code], but it may accept additional error codes
+// if needed. The error message should be a developer-facing English message
+// that helps developers *understand* and *resolve* the error. If a localized
+// user-facing error message is needed, put the localized message in the error
+// details or localize it in the client. The optional error details may contain
+// arbitrary information about the error. There is a predefined set of error
+// detail types in the package `google.rpc` that can be used for common error
+// conditions.
+//
+// # Language mapping
+//
+// The `Status` message is the logical representation of the error model, but it
+// is not necessarily the actual wire format. When the `Status` message is
+// exposed in different client libraries and different wire protocols, it can be
+// mapped differently. For example, it will likely be mapped to some exceptions
+// in Java, but more likely mapped to some error codes in C.
+//
+// # Other uses
+//
+// The error model and the `Status` message can be used in a variety of
+// environments, either with or without APIs, to provide a
+// consistent developer experience across different environments.
+//
+// Example uses of this error model include:
+//
+// - Partial errors. If a service needs to return partial errors to the client,
+// it may embed the `Status` in the normal response to indicate the partial
+// errors.
+//
+// - Workflow errors. A typical workflow has multiple steps. Each step may
+// have a `Status` message for error reporting.
+//
+// - Batch operations. If a client uses batch request and batch response, the
+// `Status` message should be used directly inside batch response, one for
+// each error sub-response.
+//
+// - Asynchronous operations. If an API call embeds asynchronous operation
+// results in its response, the status of those operations should be
+// represented directly using the `Status` message.
+//
+// - Logging. If some API errors are stored in logs, the message `Status` could
+// be used directly after any stripping needed for security/privacy reasons.
Status: {
- // The status code, which should be an enum value of
- // [google.rpc.Code][google.rpc.Code].
+ // The status code, which should be an enum value of
+ // [google.rpc.Code][google.rpc.Code].
code?: int32 @protobuf(1)
- // A developer-facing error message, which should be in English. Any
- // user-facing error message should be localized and sent in the
- // [google.rpc.Status.details][google.rpc.Status.details] field, or localized
- // by the client.
+ // A developer-facing error message, which should be in English. Any
+ // user-facing error message should be localized and sent in the
+ // [google.rpc.Status.details][google.rpc.Status.details] field, or localized
+ // by the client.
message?: string @protobuf(2)
- // A list of messages that carry the error details. There is a common set of
- // message types for APIs to use.
+ // A list of messages that carry the error details. There is a common set of
+ // message types for APIs to use.
details?: [...{
// A URL/resource name that uniquely identifies the type of the serialized protocol buffer message. This string must contain at least one "/" character. The last segment of the URL's path must represent the fully qualified name of the type (as in `type.googleapis.com/google.protobuf.Duration`). The name should be in a canonical form (e.g., leading "." is not accepted).
// The remaining fields of this object correspond to fields of the proto messsage. If the embedded message is well-known and has a custom JSON representation, that representation is assigned to the 'value' field.