telemetry/v1alpha1/telemetry.pb.go (1,231 lines of code) (raw):
// Copyright 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.
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.35.1
// protoc (unknown)
// source: telemetry/v1alpha1/telemetry.proto
// $schema: istio.telemetry.v1alpha1.Telemetry
// $title: Telemetry
// $description: Telemetry configuration for workloads.
// $location: https://istio.io/docs/reference/config/telemetry.html
// $aliases: [/docs/reference/config/telemetry/v1alpha1/telemetry]
// Telemetry defines how the telemetry is generated for workloads within a mesh.
//
// For mesh level configuration, put the resource in root configuration
// namespace for your Istio installation *without* a workload selector.
//
// For any namespace, including the root configuration namespace, it is only
// valid to have a single workload selector-less Telemetry resource.
//
// For resources with a workload selector, it is only valid to have one resource
// selecting any given workload.
//
// The hierarchy of Telemetry configuration is as follows:
//
// 1. Workload-specific configuration
// 2. Namespace-specific configuration
// 3. Root namespace configuration
//
// ## Examples
// Policy to enable random sampling for 10% of traffic:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: mesh-default
// namespace: istio-system
// spec:
// # no selector specified, applies to all workloads
// tracing:
// - randomSamplingPercentage: 10.00
// ```
//
// Policy to disable trace reporting for the `foo` workload (note: tracing
// context will still be propagated):
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: foo-tracing
// namespace: bar
// spec:
// selector:
// matchLabels:
// service.istio.io/canonical-name: foo
// tracing:
// - disableSpanReporting: true
// ```
//
// Policy to select the alternate zipkin provider for trace reporting:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: foo-tracing-alternate
// namespace: baz
// spec:
// selector:
// matchLabels:
// service.istio.io/canonical-name: foo
// tracing:
// - providers:
// - name: "zipkin-alternate"
// randomSamplingPercentage: 10.00
// ```
//
// Policy to tailor the zipkin provider to sample traces from Client workloads only:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: mesh-default
// namespace: istio-system
// spec:
// # no selector specified, applies to all workloads
// tracing:
// - match: CLIENT
// - providers:
// - name: "zipkin"
// ```
//
// Policy to add a custom tag from a literal value:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: mesh-default
// namespace: istio-system
// spec:
// # no selector specified, applies to all workloads
// tracing:
// - randomSamplingPercentage: 10.00
// customTags:
// my_new_foo_tag:
// literal:
// value: "foo"
// ```
//
// Policy to disable server-side metrics for Prometheus for an entire mesh:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: mesh-default
// namespace: istio-system
// spec:
// # no selector specified, applies to all workloads
// metrics:
// - providers:
// - name: prometheus
// overrides:
// - match:
// metric: ALL_METRICS
// mode: SERVER
// disabled: true
// ```
//
// Policy to add dimensions to all Prometheus metrics for the `foo` namespace:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: namespace-metrics
// namespace: foo
// spec:
// # no selector specified, applies to all workloads in the namespace
// metrics:
// - providers:
// - name: prometheus
// overrides:
// # match clause left off matches all istio metrics, client and server
// - tagOverrides:
// request_method:
// value: "request.method"
// request_host:
// value: "request.host"
// ```
//
// Policy to remove the `response_code` dimension on some Prometheus metrics for
// the `bar.foo` workload:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: remove-response-code
// namespace: foo
// spec:
// selector:
// matchLabels:
// service.istio.io/canonical-name: bar
// metrics:
// - providers:
// - name: prometheus
// overrides:
// - match:
// metric: REQUEST_COUNT
// tagOverrides:
// response_code:
// operation: REMOVE
// - match:
// metric: REQUEST_DURATION
// tagOverrides:
// response_code:
// operation: REMOVE
// - match:
// metric: REQUEST_SIZE
// tagOverrides:
// response_code:
// operation: REMOVE
// - match:
// metric: RESPONSE_SIZE
// tagOverrides:
// response_code:
// operation: REMOVE
// ```
//
// Policy to enable access logging for the entire mesh:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: mesh-default
// namespace: istio-system
// spec:
// # no selector specified, applies to all workloads
// accessLogging:
// - providers:
// - name: envoy
// # By default, this turns on access logging (no need to set `disabled: false`).
// # Unspecified `disabled` will be treated as `disabled: false`, except in
// # cases where a parent configuration has marked as `disabled: true`. In
// # those cases, `disabled: false` must be set explicitly to override.
// ```
//
// Policy to disable access logging for the `foo` namespace:
// ```yaml
// apiVersion: telemetry.istio.io/v1
// kind: Telemetry
// metadata:
// name: namespace-no-log
// namespace: foo
// spec:
// # no selector specified, applies to all workloads in the namespace
// accessLogging:
// - disabled: true
// ```
//
package v1alpha1
import (
duration "github.com/golang/protobuf/ptypes/duration"
wrappers "github.com/golang/protobuf/ptypes/wrappers"
_ "google.golang.org/genproto/googleapis/api/annotations"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
v1beta1 "istio.io/api/type/v1beta1"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
// WorkloadMode allows selection of the role of the underlying workload in
// network traffic. A workload is considered as acting as a `SERVER` if it is
// the destination of the traffic (that is, traffic direction, from the
// perspective of the workload is *inbound*). If the workload is the source of
// the network traffic, it is considered to be in `CLIENT` mode (traffic is
// *outbound* from the workload).
type WorkloadMode int32
const (
// Selects for scenarios when the workload is either the
// source or destination of the network traffic.
WorkloadMode_CLIENT_AND_SERVER WorkloadMode = 0
// Selects for scenarios when the workload is the
// source of the network traffic.
WorkloadMode_CLIENT WorkloadMode = 1
// Selects for scenarios when the workload is the
// destination of the network traffic.
WorkloadMode_SERVER WorkloadMode = 2
)
// Enum value maps for WorkloadMode.
var (
WorkloadMode_name = map[int32]string{
0: "CLIENT_AND_SERVER",
1: "CLIENT",
2: "SERVER",
}
WorkloadMode_value = map[string]int32{
"CLIENT_AND_SERVER": 0,
"CLIENT": 1,
"SERVER": 2,
}
)
func (x WorkloadMode) Enum() *WorkloadMode {
p := new(WorkloadMode)
*p = x
return p
}
func (x WorkloadMode) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (WorkloadMode) Descriptor() protoreflect.EnumDescriptor {
return file_telemetry_v1alpha1_telemetry_proto_enumTypes[0].Descriptor()
}
func (WorkloadMode) Type() protoreflect.EnumType {
return &file_telemetry_v1alpha1_telemetry_proto_enumTypes[0]
}
func (x WorkloadMode) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use WorkloadMode.Descriptor instead.
func (WorkloadMode) EnumDescriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{0}
}
// Curated list of known metric types that is supported by Istio metric
// providers. See also:
// https://istio.io/latest/docs/reference/config/metrics/#metrics
type MetricSelector_IstioMetric int32
const (
// Use of this enum indicates that the override should apply to all Istio
// default metrics.
MetricSelector_ALL_METRICS MetricSelector_IstioMetric = 0
// Counter of requests to/from an application, generated for HTTP, HTTP/2,
// and GRPC traffic.
//
// The Prometheus provider exports this metric as: `istio_requests_total`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/request_count` (SERVER mode)
// - `istio.io/service/client/request_count` (CLIENT mode)
MetricSelector_REQUEST_COUNT MetricSelector_IstioMetric = 1
// Histogram of request durations, generated for HTTP, HTTP/2, and GRPC
// traffic.
//
// The Prometheus provider exports this metric as:
// `istio_request_duration_milliseconds`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/response_latencies` (SERVER mode)
// - `istio.io/service/client/roundtrip_latencies` (CLIENT mode)
MetricSelector_REQUEST_DURATION MetricSelector_IstioMetric = 2
// Histogram of request body sizes, generated for HTTP, HTTP/2, and GRPC
// traffic.
//
// The Prometheus provider exports this metric as: `istio_request_bytes`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/request_bytes` (SERVER mode)
// - `istio.io/service/client/request_bytes` (CLIENT mode)
MetricSelector_REQUEST_SIZE MetricSelector_IstioMetric = 3
// Histogram of response body sizes, generated for HTTP, HTTP/2, and GRPC
// traffic.
//
// The Prometheus provider exports this metric as: `istio_response_bytes`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/response_bytes` (SERVER mode)
// - `istio.io/service/client/response_bytes` (CLIENT mode)
MetricSelector_RESPONSE_SIZE MetricSelector_IstioMetric = 4
// Counter of TCP connections opened over lifetime of workload.
//
// The Prometheus provider exports this metric as:
// `istio_tcp_connections_opened_total`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/connection_open_count` (SERVER mode)
// - `istio.io/service/client/connection_open_count` (CLIENT mode)
MetricSelector_TCP_OPENED_CONNECTIONS MetricSelector_IstioMetric = 5
// Counter of TCP connections closed over lifetime of workload.
//
// The Prometheus provider exports this metric as:
// `istio_tcp_connections_closed_total`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/connection_close_count` (SERVER mode)
// - `istio.io/service/client/connection_close_count` (CLIENT mode)
MetricSelector_TCP_CLOSED_CONNECTIONS MetricSelector_IstioMetric = 6
// Counter of bytes sent during a response over a TCP connection.
//
// The Prometheus provider exports this metric as:
// `istio_tcp_sent_bytes_total`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/sent_bytes_count` (SERVER mode)
// - `istio.io/service/client/sent_bytes_count` (CLIENT mode)
MetricSelector_TCP_SENT_BYTES MetricSelector_IstioMetric = 7
// Counter of bytes received during a request over a TCP connection.
//
// The Prometheus provider exports this metric as:
// `istio_tcp_received_bytes_total`.
//
// The Stackdriver provider exports this metric as:
//
// - `istio.io/service/server/received_bytes_count` (SERVER mode)
// - `istio.io/service/client/received_bytes_count` (CLIENT mode)
MetricSelector_TCP_RECEIVED_BYTES MetricSelector_IstioMetric = 8
// Counter incremented for every gRPC messages sent from a client.
//
// The Prometheus provider exports this metric as:
// `istio_request_messages_total`
MetricSelector_GRPC_REQUEST_MESSAGES MetricSelector_IstioMetric = 9
// Counter incremented for every gRPC messages sent from a server.
//
// The Prometheus provider exports this metric as:
// `istio_response_messages_total`
MetricSelector_GRPC_RESPONSE_MESSAGES MetricSelector_IstioMetric = 10
)
// Enum value maps for MetricSelector_IstioMetric.
var (
MetricSelector_IstioMetric_name = map[int32]string{
0: "ALL_METRICS",
1: "REQUEST_COUNT",
2: "REQUEST_DURATION",
3: "REQUEST_SIZE",
4: "RESPONSE_SIZE",
5: "TCP_OPENED_CONNECTIONS",
6: "TCP_CLOSED_CONNECTIONS",
7: "TCP_SENT_BYTES",
8: "TCP_RECEIVED_BYTES",
9: "GRPC_REQUEST_MESSAGES",
10: "GRPC_RESPONSE_MESSAGES",
}
MetricSelector_IstioMetric_value = map[string]int32{
"ALL_METRICS": 0,
"REQUEST_COUNT": 1,
"REQUEST_DURATION": 2,
"REQUEST_SIZE": 3,
"RESPONSE_SIZE": 4,
"TCP_OPENED_CONNECTIONS": 5,
"TCP_CLOSED_CONNECTIONS": 6,
"TCP_SENT_BYTES": 7,
"TCP_RECEIVED_BYTES": 8,
"GRPC_REQUEST_MESSAGES": 9,
"GRPC_RESPONSE_MESSAGES": 10,
}
)
func (x MetricSelector_IstioMetric) Enum() *MetricSelector_IstioMetric {
p := new(MetricSelector_IstioMetric)
*p = x
return p
}
func (x MetricSelector_IstioMetric) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (MetricSelector_IstioMetric) Descriptor() protoreflect.EnumDescriptor {
return file_telemetry_v1alpha1_telemetry_proto_enumTypes[1].Descriptor()
}
func (MetricSelector_IstioMetric) Type() protoreflect.EnumType {
return &file_telemetry_v1alpha1_telemetry_proto_enumTypes[1]
}
func (x MetricSelector_IstioMetric) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use MetricSelector_IstioMetric.Descriptor instead.
func (MetricSelector_IstioMetric) EnumDescriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{4, 0}
}
type MetricsOverrides_TagOverride_Operation int32
const (
// Insert or Update the tag with the provided value expression. The
// `value` field MUST be specified if `UPSERT` is used as the operation.
MetricsOverrides_TagOverride_UPSERT MetricsOverrides_TagOverride_Operation = 0
// Specifies that the tag should not be included in the metric when
// generated.
MetricsOverrides_TagOverride_REMOVE MetricsOverrides_TagOverride_Operation = 1
)
// Enum value maps for MetricsOverrides_TagOverride_Operation.
var (
MetricsOverrides_TagOverride_Operation_name = map[int32]string{
0: "UPSERT",
1: "REMOVE",
}
MetricsOverrides_TagOverride_Operation_value = map[string]int32{
"UPSERT": 0,
"REMOVE": 1,
}
)
func (x MetricsOverrides_TagOverride_Operation) Enum() *MetricsOverrides_TagOverride_Operation {
p := new(MetricsOverrides_TagOverride_Operation)
*p = x
return p
}
func (x MetricsOverrides_TagOverride_Operation) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (MetricsOverrides_TagOverride_Operation) Descriptor() protoreflect.EnumDescriptor {
return file_telemetry_v1alpha1_telemetry_proto_enumTypes[2].Descriptor()
}
func (MetricsOverrides_TagOverride_Operation) Type() protoreflect.EnumType {
return &file_telemetry_v1alpha1_telemetry_proto_enumTypes[2]
}
func (x MetricsOverrides_TagOverride_Operation) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use MetricsOverrides_TagOverride_Operation.Descriptor instead.
func (MetricsOverrides_TagOverride_Operation) EnumDescriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{5, 0, 0}
}
// <!-- crd generation tags
// +cue-gen:Telemetry:groupName:telemetry.istio.io
// +cue-gen:Telemetry:versions:v1alpha1,v1
// +cue-gen:Telemetry:storageVersion
// +cue-gen:Telemetry:annotations:helm.sh/resource-policy=keep
// +cue-gen:Telemetry:labels:app=istio-pilot,chart=istio,istio=telemetry,heritage=Tiller,release=istio
// +cue-gen:Telemetry:subresource:status
// +cue-gen:Telemetry:scope:Namespaced
// +cue-gen:Telemetry:resource:categories=istio-io,telemetry-istio-io,shortNames=telemetry,plural=telemetries
// +cue-gen:Telemetry:preserveUnknownFields:false
// +cue-gen:Telemetry:printerColumn:name=Age,type=date,JSONPath=.metadata.creationTimestamp,description="CreationTimestamp
// is a timestamp representing the server time when this object was created. It
// is not guaranteed to be set in happens-before order across separate
// operations. Clients may not set this value. It is represented in RFC3339 form
// and is in UTC. Populated by the system. Read-only. Null for lists. More info:
// https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
// -->
//
// <!-- go code generation tags
// +kubetype-gen
// +kubetype-gen:groupVersion=telemetry.istio.io/v1alpha1
// +genclient
// +k8s:deepcopy-gen=true
// -->
// +kubebuilder:validation:XValidation:message="only one of targetRefs or selector can be set",rule="(has(self.selector)?1:0)+(has(self.targetRef)?1:0)+(has(self.targetRefs)?1:0)<=1"
type Telemetry struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. The selector decides where to apply the policy.
// If not set, the policy will be applied to all workloads in the
// same namespace as the policy.
//
// At most one of `selector` or `targetRefs` can be set for a given policy.
Selector *v1beta1.WorkloadSelector `protobuf:"bytes,1,opt,name=selector,proto3" json:"selector,omitempty"`
// $hide_from_docs
TargetRef *v1beta1.PolicyTargetReference `protobuf:"bytes,5,opt,name=targetRef,proto3" json:"targetRef,omitempty"`
// Optional. The targetRefs specifies a list of resources the policy should be
// applied to. The targeted resources specified will determine which workloads
// the policy applies to.
//
// Currently, the following resource attachment types are supported:
// * `kind: Gateway` with `group: gateway.networking.k8s.io` in the same namespace.
// * `kind: Service` with `group: ""` or `group: "core"` in the same namespace. This type is only supported for waypoints.
//
// If not set, the policy is applied as defined by the selector.
// At most one of the selector and targetRefs can be set.
//
// NOTE: If you are using the `targetRefs` field in a multi-revision environment with Istio versions prior to 1.22,
// it is highly recommended that you pin the policy to a revision running 1.22+ via the `istio.io/rev` label.
// This is to prevent proxies connected to older control planes (that don't know about the `targetRefs` field)
// from misinterpreting the policy as namespace-wide during the upgrade process.
//
// NOTE: Waypoint proxies are required to use this field for policies to apply; `selector` policies will be ignored.
// +kubebuilder:validation:MaxItems=16
TargetRefs []*v1beta1.PolicyTargetReference `protobuf:"bytes,6,rep,name=targetRefs,proto3" json:"targetRefs,omitempty"`
// Optional. Tracing configures the tracing behavior for all
// selected workloads.
Tracing []*Tracing `protobuf:"bytes,2,rep,name=tracing,proto3" json:"tracing,omitempty"`
// Optional. Metrics configures the metrics behavior for all
// selected workloads.
Metrics []*Metrics `protobuf:"bytes,3,rep,name=metrics,proto3" json:"metrics,omitempty"`
// Optional. Access logging configures the access logging behavior for all
// selected workloads.
AccessLogging []*AccessLogging `protobuf:"bytes,4,rep,name=access_logging,json=accessLogging,proto3" json:"access_logging,omitempty"`
}
func (x *Telemetry) Reset() {
*x = Telemetry{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Telemetry) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Telemetry) ProtoMessage() {}
func (x *Telemetry) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Telemetry.ProtoReflect.Descriptor instead.
func (*Telemetry) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{0}
}
func (x *Telemetry) GetSelector() *v1beta1.WorkloadSelector {
if x != nil {
return x.Selector
}
return nil
}
func (x *Telemetry) GetTargetRef() *v1beta1.PolicyTargetReference {
if x != nil {
return x.TargetRef
}
return nil
}
func (x *Telemetry) GetTargetRefs() []*v1beta1.PolicyTargetReference {
if x != nil {
return x.TargetRefs
}
return nil
}
func (x *Telemetry) GetTracing() []*Tracing {
if x != nil {
return x.Tracing
}
return nil
}
func (x *Telemetry) GetMetrics() []*Metrics {
if x != nil {
return x.Metrics
}
return nil
}
func (x *Telemetry) GetAccessLogging() []*AccessLogging {
if x != nil {
return x.AccessLogging
}
return nil
}
// Tracing configures tracing behavior for workloads within a mesh.
// It can be used to enable/disable tracing, as well as to set sampling
// rates and custom tag extraction.
//
// Tracing configuration support overrides of the fields `providers`,
// `random_sampling_percentage`, `disable_span_reporting`, and `custom_tags` at
// each level in the configuration hierarchy, with missing values filled in
// from parent resources. However, when specified, `custom_tags` will
// fully replace any values provided by parent configuration.
type Tracing struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Allows tailoring of behavior to specific conditions.
Match *Tracing_TracingSelector `protobuf:"bytes,7,opt,name=match,proto3" json:"match,omitempty"`
// Optional. Name of provider(s) to use for span reporting. If a provider is
// not specified, the [default tracing
// provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be
// used. NOTE: At the moment, only a single provider can be specified in a
// given Tracing rule.
Providers []*ProviderRef `protobuf:"bytes,2,rep,name=providers,proto3" json:"providers,omitempty"`
// Controls the rate at which traffic will be selected for tracing if no
// prior sampling decision has been made. If a prior sampling decision has
// been made, that decision will be respected. However, if no sampling
// decision has been made (example: no `x-b3-sampled` tracing header was
// present in the requests), the traffic will be selected for telemetry
// generation at the percentage specified.
//
// Defaults to 0%. Valid values [0.00-100.00]. Can be specified in 0.01%
// increments.
// +kubebuilder:validation:Minimum=0
// +kubebuilder:validation:Maximum=100
RandomSamplingPercentage *wrappers.DoubleValue `protobuf:"bytes,3,opt,name=random_sampling_percentage,json=randomSamplingPercentage,proto3" json:"random_sampling_percentage,omitempty"`
// Controls span reporting. If set to true, no spans will be reported for
// impacted workloads. This does NOT impact context propagation or trace
// sampling behavior.
DisableSpanReporting *wrappers.BoolValue `protobuf:"bytes,4,opt,name=disable_span_reporting,json=disableSpanReporting,proto3" json:"disable_span_reporting,omitempty"`
// Optional. Configures additional custom tags to the generated trace spans.
CustomTags map[string]*Tracing_CustomTag `protobuf:"bytes,5,rep,name=custom_tags,json=customTags,proto3" json:"custom_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// This value is true by default; Envoy decides whether or not to sample based
// on the value of the Request ID generated by Ingress in distributed tracing.
// The format of this Request ID is specific to Envoy, and if the Request ID
// generated by the proxy that receives user traffic first is not specific to
// Envoy, Envoy will break the trace because it cannot interpret the Request
// ID. By setting this value to false, we can prevent Envoy from sampling
// based on the Request ID. As a result, the trace will not be broken even if
// the Request ID is not in the Envoy format. [Trace Context
// Propagation](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing#trace-context-propagation)
// provides more information on Request ID handling.
// $hide_from_docs
// +cue-gen:Telemetry:releaseChannel:extended
UseRequestIdForTraceSampling *wrappers.BoolValue `protobuf:"bytes,6,opt,name=use_request_id_for_trace_sampling,json=useRequestIdForTraceSampling,proto3" json:"use_request_id_for_trace_sampling,omitempty"`
}
func (x *Tracing) Reset() {
*x = Tracing{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing) ProtoMessage() {}
func (x *Tracing) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing.ProtoReflect.Descriptor instead.
func (*Tracing) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1}
}
func (x *Tracing) GetMatch() *Tracing_TracingSelector {
if x != nil {
return x.Match
}
return nil
}
func (x *Tracing) GetProviders() []*ProviderRef {
if x != nil {
return x.Providers
}
return nil
}
func (x *Tracing) GetRandomSamplingPercentage() *wrappers.DoubleValue {
if x != nil {
return x.RandomSamplingPercentage
}
return nil
}
func (x *Tracing) GetDisableSpanReporting() *wrappers.BoolValue {
if x != nil {
return x.DisableSpanReporting
}
return nil
}
func (x *Tracing) GetCustomTags() map[string]*Tracing_CustomTag {
if x != nil {
return x.CustomTags
}
return nil
}
func (x *Tracing) GetUseRequestIdForTraceSampling() *wrappers.BoolValue {
if x != nil {
return x.UseRequestIdForTraceSampling
}
return nil
}
// Used to bind Telemetry configuration to specific providers for
// targeted customization.
type ProviderRef struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Required. Name of Telemetry provider in [MeshConfig](https://istio.io/latest/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-ExtensionProvider).
// +kubebuilder:validation:MinLength=1
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *ProviderRef) Reset() {
*x = ProviderRef{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ProviderRef) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProviderRef) ProtoMessage() {}
func (x *ProviderRef) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ProviderRef.ProtoReflect.Descriptor instead.
func (*ProviderRef) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{2}
}
func (x *ProviderRef) GetName() string {
if x != nil {
return x.Name
}
return ""
}
// Metrics defines the workload-level overrides for metrics generation behavior
// within a mesh. It can be used to enable/disable metrics generation, as well
// as to customize the dimensions of the generated metrics.
type Metrics struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Optional. Name of providers to which this configuration should apply.
// If a provider is not specified, the [default metrics
// provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be
// used.
Providers []*ProviderRef `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"`
// Optional. Ordered list of overrides to metrics generation behavior.
//
// Specified overrides will be applied in order. They will be applied on
// top of inherited overrides from other resources in the hierarchy in the
// following order:
// 1. Mesh-scoped overrides
// 2. Namespace-scoped overrides
// 3. Workload-scoped overrides
//
// Because overrides are applied in order, users are advised to order their
// overrides from least specific to most specific matches. That is, it is
// a best practice to list any universal overrides first, with tailored
// overrides following them.
Overrides []*MetricsOverrides `protobuf:"bytes,2,rep,name=overrides,proto3" json:"overrides,omitempty"`
// Optional. Reporting interval allows configuration of the time between calls out to for metrics reporting.
// This currently only supports TCP metrics but we may use this for long duration HTTP streams in the future.
// The default duration is `5s`.
// +cue-gen:Telemetry:releaseChannel:extended
ReportingInterval *duration.Duration `protobuf:"bytes,3,opt,name=reporting_interval,json=reportingInterval,proto3" json:"reporting_interval,omitempty"`
}
func (x *Metrics) Reset() {
*x = Metrics{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Metrics) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Metrics) ProtoMessage() {}
func (x *Metrics) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Metrics.ProtoReflect.Descriptor instead.
func (*Metrics) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{3}
}
func (x *Metrics) GetProviders() []*ProviderRef {
if x != nil {
return x.Providers
}
return nil
}
func (x *Metrics) GetOverrides() []*MetricsOverrides {
if x != nil {
return x.Overrides
}
return nil
}
func (x *Metrics) GetReportingInterval() *duration.Duration {
if x != nil {
return x.ReportingInterval
}
return nil
}
// Provides a mechanism for matching metrics for the application of override
// behaviors.
type MetricSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Controls which metric(s) are selected by the selector.
//
// Types that are assignable to MetricMatch:
//
// *MetricSelector_Metric
// *MetricSelector_CustomMetric
MetricMatch isMetricSelector_MetricMatch `protobuf_oneof:"metric_match"`
// Controls which mode of metrics generation is selected: `CLIENT`, `SERVER`,
// or `CLIENT_AND_SERVER`.
Mode WorkloadMode `protobuf:"varint,3,opt,name=mode,proto3,enum=istio.telemetry.v1alpha1.WorkloadMode" json:"mode,omitempty"`
}
func (x *MetricSelector) Reset() {
*x = MetricSelector{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MetricSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricSelector) ProtoMessage() {}
func (x *MetricSelector) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MetricSelector.ProtoReflect.Descriptor instead.
func (*MetricSelector) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{4}
}
func (m *MetricSelector) GetMetricMatch() isMetricSelector_MetricMatch {
if m != nil {
return m.MetricMatch
}
return nil
}
func (x *MetricSelector) GetMetric() MetricSelector_IstioMetric {
if x, ok := x.GetMetricMatch().(*MetricSelector_Metric); ok {
return x.Metric
}
return MetricSelector_ALL_METRICS
}
func (x *MetricSelector) GetCustomMetric() string {
if x, ok := x.GetMetricMatch().(*MetricSelector_CustomMetric); ok {
return x.CustomMetric
}
return ""
}
func (x *MetricSelector) GetMode() WorkloadMode {
if x != nil {
return x.Mode
}
return WorkloadMode_CLIENT_AND_SERVER
}
type isMetricSelector_MetricMatch interface {
isMetricSelector_MetricMatch()
}
type MetricSelector_Metric struct {
// One of the well-known [Istio Standard Metrics](https://istio.io/latest/docs/reference/config/metrics/).
Metric MetricSelector_IstioMetric `protobuf:"varint,1,opt,name=metric,proto3,enum=istio.telemetry.v1alpha1.MetricSelector_IstioMetric,oneof"`
}
type MetricSelector_CustomMetric struct {
// Allows free-form specification of a metric. No validation of custom
// metrics is provided.
// +kubebuilder:validation:MinLength=1
CustomMetric string `protobuf:"bytes,2,opt,name=custom_metric,json=customMetric,proto3,oneof"`
}
func (*MetricSelector_Metric) isMetricSelector_MetricMatch() {}
func (*MetricSelector_CustomMetric) isMetricSelector_MetricMatch() {}
// MetricsOverrides defines custom metric generation behavior for an individual
// metric or the set of all standard metrics.
type MetricsOverrides struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Match allows providing the scope of the override. It can be used to select
// individual metrics, as well as the workload modes (server, client, or both)
// in which the metrics will be generated.
//
// If match is not specified, the overrides will apply to *all* metrics for
// *both* modes of operation (client and server).
Match *MetricSelector `protobuf:"bytes,1,opt,name=match,proto3" json:"match,omitempty"`
// Optional. Must explicitly set this to `true` to turn off metrics reporting
// for the listed metrics. If disabled has been set to `true` in a parent
// configuration, it must explicitly be set to `false` to turn metrics
// reporting on in the workloads selected by the Telemetry resource.
Disabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"`
// Optional. Collection of tag names and tag expressions to override in the
// selected metric(s).
// The key in the map is the name of the tag.
// The value in the map is the operation to perform on the the tag.
// WARNING: some providers may not support adding/removing tags.
// See also: https://istio.io/latest/docs/reference/config/metrics/#labels
TagOverrides map[string]*MetricsOverrides_TagOverride `protobuf:"bytes,3,rep,name=tag_overrides,json=tagOverrides,proto3" json:"tag_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *MetricsOverrides) Reset() {
*x = MetricsOverrides{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MetricsOverrides) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricsOverrides) ProtoMessage() {}
func (x *MetricsOverrides) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MetricsOverrides.ProtoReflect.Descriptor instead.
func (*MetricsOverrides) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{5}
}
func (x *MetricsOverrides) GetMatch() *MetricSelector {
if x != nil {
return x.Match
}
return nil
}
func (x *MetricsOverrides) GetDisabled() *wrappers.BoolValue {
if x != nil {
return x.Disabled
}
return nil
}
func (x *MetricsOverrides) GetTagOverrides() map[string]*MetricsOverrides_TagOverride {
if x != nil {
return x.TagOverrides
}
return nil
}
// Access logging defines the workload-level overrides for access log
// generation. It can be used to select provider or enable/disable access log
// generation for a workload.
type AccessLogging struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Allows tailoring of logging behavior to specific conditions.
Match *AccessLogging_LogSelector `protobuf:"bytes,4,opt,name=match,proto3" json:"match,omitempty"`
// Optional. Name of providers to which this configuration should apply.
// If a provider is not specified, the [default logging
// provider](https://istio.io/docs/reference/config/istio.mesh.v1alpha1/#MeshConfig-DefaultProviders) will be used.
Providers []*ProviderRef `protobuf:"bytes,1,rep,name=providers,proto3" json:"providers,omitempty"`
// Controls logging. If set to true, no access logs will be generated for
// impacted workloads (for the specified providers).
// NOTE: currently default behavior will be controlled by the provider(s)
// selected above. Customization controls will be added to this API in
// future releases.
Disabled *wrappers.BoolValue `protobuf:"bytes,2,opt,name=disabled,proto3" json:"disabled,omitempty"`
// Optional. If specified, this filter will be used to select specific
// requests/connections for logging.
// +cue-gen:Telemetry:releaseChannel:extended
Filter *AccessLogging_Filter `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"`
}
func (x *AccessLogging) Reset() {
*x = AccessLogging{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AccessLogging) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccessLogging) ProtoMessage() {}
func (x *AccessLogging) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AccessLogging.ProtoReflect.Descriptor instead.
func (*AccessLogging) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{6}
}
func (x *AccessLogging) GetMatch() *AccessLogging_LogSelector {
if x != nil {
return x.Match
}
return nil
}
func (x *AccessLogging) GetProviders() []*ProviderRef {
if x != nil {
return x.Providers
}
return nil
}
func (x *AccessLogging) GetDisabled() *wrappers.BoolValue {
if x != nil {
return x.Disabled
}
return nil
}
func (x *AccessLogging) GetFilter() *AccessLogging_Filter {
if x != nil {
return x.Filter
}
return nil
}
// TracingSelector provides a coarse-grained ability to configure tracing
// behavior based on certain traffic metadata (such as traffic direction).
type Tracing_TracingSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// This determines whether or not to apply the tracing configuration
// based on the direction of traffic relative to the proxied workload.
Mode WorkloadMode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.telemetry.v1alpha1.WorkloadMode" json:"mode,omitempty"`
}
func (x *Tracing_TracingSelector) Reset() {
*x = Tracing_TracingSelector{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing_TracingSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing_TracingSelector) ProtoMessage() {}
func (x *Tracing_TracingSelector) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing_TracingSelector.ProtoReflect.Descriptor instead.
func (*Tracing_TracingSelector) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1, 0}
}
func (x *Tracing_TracingSelector) GetMode() WorkloadMode {
if x != nil {
return x.Mode
}
return WorkloadMode_CLIENT_AND_SERVER
}
// CustomTag defines a tag to be added to a trace span that is based on
// an operator-supplied value. This value can either be a hard-coded value,
// a value taken from an environment variable known to the sidecar proxy, or
// from a request header.
//
// NOTE: when specified, `custom_tags` will fully replace any values provided
// by parent configuration.
type Tracing_CustomTag struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Types that are assignable to Type:
//
// *Tracing_CustomTag_Literal
// *Tracing_CustomTag_Environment
// *Tracing_CustomTag_Header
Type isTracing_CustomTag_Type `protobuf_oneof:"type"`
}
func (x *Tracing_CustomTag) Reset() {
*x = Tracing_CustomTag{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing_CustomTag) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing_CustomTag) ProtoMessage() {}
func (x *Tracing_CustomTag) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing_CustomTag.ProtoReflect.Descriptor instead.
func (*Tracing_CustomTag) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1, 1}
}
func (m *Tracing_CustomTag) GetType() isTracing_CustomTag_Type {
if m != nil {
return m.Type
}
return nil
}
func (x *Tracing_CustomTag) GetLiteral() *Tracing_Literal {
if x, ok := x.GetType().(*Tracing_CustomTag_Literal); ok {
return x.Literal
}
return nil
}
func (x *Tracing_CustomTag) GetEnvironment() *Tracing_Environment {
if x, ok := x.GetType().(*Tracing_CustomTag_Environment); ok {
return x.Environment
}
return nil
}
func (x *Tracing_CustomTag) GetHeader() *Tracing_RequestHeader {
if x, ok := x.GetType().(*Tracing_CustomTag_Header); ok {
return x.Header
}
return nil
}
type isTracing_CustomTag_Type interface {
isTracing_CustomTag_Type()
}
type Tracing_CustomTag_Literal struct {
// Literal adds the same, hard-coded value to each span.
Literal *Tracing_Literal `protobuf:"bytes,1,opt,name=literal,proto3,oneof"`
}
type Tracing_CustomTag_Environment struct {
// Environment adds the value of an environment variable to each span.
Environment *Tracing_Environment `protobuf:"bytes,2,opt,name=environment,proto3,oneof"`
}
type Tracing_CustomTag_Header struct {
// RequestHeader adds the value of an header from the request to each
// span.
Header *Tracing_RequestHeader `protobuf:"bytes,3,opt,name=header,proto3,oneof"` // TODO: add support for Metadata tags
}
func (*Tracing_CustomTag_Literal) isTracing_CustomTag_Type() {}
func (*Tracing_CustomTag_Environment) isTracing_CustomTag_Type() {}
func (*Tracing_CustomTag_Header) isTracing_CustomTag_Type() {}
type Tracing_Literal struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// The tag value to use.
// +kubebuilder:validation:MinLength=1
Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
}
func (x *Tracing_Literal) Reset() {
*x = Tracing_Literal{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing_Literal) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing_Literal) ProtoMessage() {}
func (x *Tracing_Literal) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing_Literal.ProtoReflect.Descriptor instead.
func (*Tracing_Literal) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1, 2}
}
func (x *Tracing_Literal) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
type Tracing_Environment struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the environment variable from which to extract the tag value.
// +kubebuilder:validation:MinLength=1
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. If the environment variable is not found, this value will be
// used instead.
DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
}
func (x *Tracing_Environment) Reset() {
*x = Tracing_Environment{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing_Environment) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing_Environment) ProtoMessage() {}
func (x *Tracing_Environment) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing_Environment.ProtoReflect.Descriptor instead.
func (*Tracing_Environment) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1, 3}
}
func (x *Tracing_Environment) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Tracing_Environment) GetDefaultValue() string {
if x != nil {
return x.DefaultValue
}
return ""
}
type Tracing_RequestHeader struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Name of the header from which to extract the tag value.
// +kubebuilder:validation:MinLength=1
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
// Optional. If the header is not found, this value will be
// used instead.
DefaultValue string `protobuf:"bytes,2,opt,name=default_value,json=defaultValue,proto3" json:"default_value,omitempty"`
}
func (x *Tracing_RequestHeader) Reset() {
*x = Tracing_RequestHeader{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *Tracing_RequestHeader) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Tracing_RequestHeader) ProtoMessage() {}
func (x *Tracing_RequestHeader) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Tracing_RequestHeader.ProtoReflect.Descriptor instead.
func (*Tracing_RequestHeader) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{1, 4}
}
func (x *Tracing_RequestHeader) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Tracing_RequestHeader) GetDefaultValue() string {
if x != nil {
return x.DefaultValue
}
return ""
}
// TagOverride specifies an operation to perform on a metric dimension (also
// known as a `label`). Tags may be added, removed, or have their default
// values overridden.
// +kubebuilder:validation:XValidation:message="value must be set when operation is UPSERT",rule="((has(self.operation) ? self.operation : ”) == 'UPSERT') ? self.value != ” : true"
// +kubebuilder:validation:XValidation:message="value must not be set when operation is REMOVE",rule="((has(self.operation) ? self.operation : ”) == 'REMOVE') ? !has(self.value) : true"
type MetricsOverrides_TagOverride struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Operation controls whether or not to update/add a tag, or to remove it.
Operation MetricsOverrides_TagOverride_Operation `protobuf:"varint,1,opt,name=operation,proto3,enum=istio.telemetry.v1alpha1.MetricsOverrides_TagOverride_Operation" json:"operation,omitempty"`
// Value is only considered if the operation is `UPSERT`.
// Values are [CEL expressions](https://opensource.google/projects/cel) over
// attributes. Examples include: `string(destination.port)` and
// `request.host`. Istio exposes all standard [Envoy
// attributes](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes).
// Additionally, Istio exposes node metadata as attributes.
// More information is provided in the [customization
// docs](https://istio.io/latest/docs/tasks/observability/metrics/customize-metrics/#use-expressions-for-values).
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
}
func (x *MetricsOverrides_TagOverride) Reset() {
*x = MetricsOverrides_TagOverride{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[13]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *MetricsOverrides_TagOverride) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*MetricsOverrides_TagOverride) ProtoMessage() {}
func (x *MetricsOverrides_TagOverride) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[13]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use MetricsOverrides_TagOverride.ProtoReflect.Descriptor instead.
func (*MetricsOverrides_TagOverride) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{5, 0}
}
func (x *MetricsOverrides_TagOverride) GetOperation() MetricsOverrides_TagOverride_Operation {
if x != nil {
return x.Operation
}
return MetricsOverrides_TagOverride_UPSERT
}
func (x *MetricsOverrides_TagOverride) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
// LogSelector provides a coarse-grained ability to configure logging behavior
// based on certain traffic metadata (such as traffic direction). LogSelector
// applies to traffic metadata which is not represented in the attribute set
// currently supported by [filters](https://istio.io/latest/docs/reference/config/telemetry/#AccessLogging-Filter).
// It allows control planes to limit the configuration sent to individual workloads.
// Finer-grained logging behavior can be further configured via `filter`.
type AccessLogging_LogSelector struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// This determines whether or not to apply the access logging configuration
// based on the direction of traffic relative to the proxied workload.
Mode WorkloadMode `protobuf:"varint,1,opt,name=mode,proto3,enum=istio.telemetry.v1alpha1.WorkloadMode" json:"mode,omitempty"`
}
func (x *AccessLogging_LogSelector) Reset() {
*x = AccessLogging_LogSelector{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[15]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AccessLogging_LogSelector) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccessLogging_LogSelector) ProtoMessage() {}
func (x *AccessLogging_LogSelector) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[15]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AccessLogging_LogSelector.ProtoReflect.Descriptor instead.
func (*AccessLogging_LogSelector) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{6, 0}
}
func (x *AccessLogging_LogSelector) GetMode() WorkloadMode {
if x != nil {
return x.Mode
}
return WorkloadMode_CLIENT_AND_SERVER
}
// Allows specification of an access log filter.
type AccessLogging_Filter struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// CEL expression for selecting when requests/connections should be logged.
//
// Examples:
//
// - `response.code >= 400`
// - `connection.mtls && request.url_path.contains('v1beta3')`
// - `!has(request.useragent) || !(request.useragent.startsWith("Amazon-Route53-Health-Check-Service"))`
Expression string `protobuf:"bytes,1,opt,name=expression,proto3" json:"expression,omitempty"`
}
func (x *AccessLogging_Filter) Reset() {
*x = AccessLogging_Filter{}
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[16]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AccessLogging_Filter) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AccessLogging_Filter) ProtoMessage() {}
func (x *AccessLogging_Filter) ProtoReflect() protoreflect.Message {
mi := &file_telemetry_v1alpha1_telemetry_proto_msgTypes[16]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AccessLogging_Filter.ProtoReflect.Descriptor instead.
func (*AccessLogging_Filter) Descriptor() ([]byte, []int) {
return file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP(), []int{6, 1}
}
func (x *AccessLogging_Filter) GetExpression() string {
if x != nil {
return x.Expression
}
return ""
}
var File_telemetry_v1alpha1_telemetry_proto protoreflect.FileDescriptor
var file_telemetry_v1alpha1_telemetry_proto_rawDesc = []byte{
0x0a, 0x22, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c,
0x70, 0x68, 0x61, 0x31, 0x2f, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x12, 0x18, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65,
0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x1a, 0x1b,
0x74, 0x79, 0x70, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x73, 0x65, 0x6c,
0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f,
0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65,
0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72,
0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xab, 0x03, 0x0a,
0x09, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65,
0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x69,
0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61,
0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x52, 0x08, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x47, 0x0a, 0x09,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x29, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62,
0x65, 0x74, 0x61, 0x31, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65,
0x74, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67,
0x65, 0x74, 0x52, 0x65, 0x66, 0x12, 0x49, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52,
0x65, 0x66, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x73, 0x74, 0x69,
0x6f, 0x2e, 0x74, 0x79, 0x70, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x50,
0x6f, 0x6c, 0x69, 0x63, 0x79, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x65, 0x72,
0x65, 0x6e, 0x63, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x66, 0x73,
0x12, 0x3b, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x21, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65,
0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61,
0x63, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x3b, 0x0a,
0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63,
0x73, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x61, 0x63,
0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x27, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63,
0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x52, 0x0d, 0x61, 0x63, 0x63,
0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x22, 0xf9, 0x08, 0x0a, 0x07, 0x54,
0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x47, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65,
0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67,
0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12,
0x43, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72,
0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69,
0x64, 0x65, 0x72, 0x73, 0x12, 0x5a, 0x0a, 0x1a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x5f, 0x73,
0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61,
0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x6f, 0x75, 0x62, 0x6c,
0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x18, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x53, 0x61,
0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65,
0x12, 0x50, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x70, 0x61, 0x6e,
0x5f, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x14, 0x64, 0x69,
0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x70, 0x61, 0x6e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69,
0x6e, 0x67, 0x12, 0x52, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x74, 0x61, 0x67,
0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74,
0x6f, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x12, 0x63, 0x0a, 0x21, 0x75, 0x73, 0x65, 0x5f, 0x72, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x74, 0x72, 0x61,
0x63, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x1c, 0x75,
0x73, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x46, 0x6f, 0x72, 0x54, 0x72,
0x61, 0x63, 0x65, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x1a, 0x4d, 0x0a, 0x0f, 0x54,
0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3a,
0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69,
0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76,
0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0xf8, 0x01, 0x0a, 0x09, 0x43,
0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x12, 0x45, 0x0a, 0x07, 0x6c, 0x69, 0x74, 0x65,
0x72, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x69, 0x73, 0x74, 0x69,
0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c,
0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x74,
0x65, 0x72, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x07, 0x6c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x12,
0x51, 0x0a, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c,
0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e,
0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d,
0x65, 0x6e, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65,
0x6e, 0x74, 0x12, 0x49, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72,
0x61, 0x63, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61,
0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x06, 0x0a,
0x04, 0x74, 0x79, 0x70, 0x65, 0x1a, 0x25, 0x0a, 0x07, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c,
0x12, 0x1a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42,
0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4c, 0x0a, 0x0b,
0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x4e, 0x0a, 0x0d, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x04, 0x6e,
0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52,
0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74,
0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x64, 0x65,
0x66, 0x61, 0x75, 0x6c, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x6a, 0x0a, 0x0f, 0x43, 0x75,
0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
0x41, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b,
0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e,
0x67, 0x2e, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x54, 0x61, 0x67, 0x52, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x27, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
0x65, 0x72, 0x52, 0x65, 0x66, 0x12, 0x18, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x42, 0x04, 0xe2, 0x41, 0x01, 0x02, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22,
0xe2, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x70,
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25,
0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79,
0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64,
0x65, 0x72, 0x52, 0x65, 0x66, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73,
0x12, 0x48, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65,
0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x4d,
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x52,
0x09, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x48, 0x0a, 0x12, 0x72, 0x65,
0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c,
0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x52, 0x11, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74, 0x65,
0x72, 0x76, 0x61, 0x6c, 0x22, 0xdd, 0x03, 0x0a, 0x0e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53,
0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x4e, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x72, 0x69,
0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f,
0x72, 0x2e, 0x49, 0x73, 0x74, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x48, 0x00, 0x52,
0x06, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x25, 0x0a, 0x0d, 0x63, 0x75, 0x73, 0x74, 0x6f,
0x6d, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00,
0x52, 0x0c, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x3a,
0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69,
0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76,
0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64,
0x4d, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x87, 0x02, 0x0a, 0x0b, 0x49,
0x73, 0x74, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x4c,
0x4c, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x52,
0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x01, 0x12, 0x14,
0x0a, 0x10, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x44, 0x55, 0x52, 0x41, 0x54, 0x49,
0x4f, 0x4e, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f,
0x53, 0x49, 0x5a, 0x45, 0x10, 0x03, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e,
0x53, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x43, 0x50,
0x5f, 0x4f, 0x50, 0x45, 0x4e, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49,
0x4f, 0x4e, 0x53, 0x10, 0x05, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x43, 0x50, 0x5f, 0x43, 0x4c, 0x4f,
0x53, 0x45, 0x44, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10,
0x06, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x43, 0x50, 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x59,
0x54, 0x45, 0x53, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x43, 0x50, 0x5f, 0x52, 0x45, 0x43,
0x45, 0x49, 0x56, 0x45, 0x44, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x08, 0x12, 0x19, 0x0a,
0x15, 0x47, 0x52, 0x50, 0x43, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x4d, 0x45,
0x53, 0x53, 0x41, 0x47, 0x45, 0x53, 0x10, 0x09, 0x12, 0x1a, 0x0a, 0x16, 0x47, 0x52, 0x50, 0x43,
0x5f, 0x52, 0x45, 0x53, 0x50, 0x4f, 0x4e, 0x53, 0x45, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47,
0x45, 0x53, 0x10, 0x0a, 0x42, 0x0e, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6d,
0x61, 0x74, 0x63, 0x68, 0x22, 0x91, 0x04, 0x0a, 0x10, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x12, 0x3e, 0x0a, 0x05, 0x6d, 0x61, 0x74,
0x63, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x6f, 0x72, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x36, 0x0a, 0x08, 0x64, 0x69, 0x73,
0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f,
0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f,
0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65,
0x64, 0x12, 0x61, 0x0a, 0x0d, 0x74, 0x61, 0x67, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64,
0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
0x68, 0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72,
0x69, 0x64, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x74, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72,
0x69, 0x64, 0x65, 0x73, 0x1a, 0xa8, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72,
0x72, 0x69, 0x64, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x40, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69,
0x64, 0x65, 0x73, 0x2e, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x2e,
0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61,
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x23, 0x0a, 0x09, 0x4f, 0x70,
0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x50, 0x53, 0x45, 0x52,
0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x10, 0x01, 0x1a,
0x77, 0x0a, 0x11, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65,
0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31,
0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65,
0x73, 0x2e, 0x54, 0x61, 0x67, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x94, 0x03, 0x0a, 0x0d, 0x41, 0x63, 0x63,
0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x49, 0x0a, 0x05, 0x6d, 0x61,
0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x69, 0x73, 0x74, 0x69,
0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c,
0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69,
0x6e, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x05,
0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65,
0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f,
0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70,
0x68, 0x61, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x66, 0x52,
0x09, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x64, 0x69,
0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67,
0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42,
0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c,
0x65, 0x64, 0x12, 0x46, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x74, 0x65, 0x6c, 0x65, 0x6d,
0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x31, 0x2e, 0x41, 0x63,
0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x46, 0x69, 0x6c, 0x74,
0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x1a, 0x49, 0x0a, 0x0b, 0x4c, 0x6f,
0x67, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x04, 0x6d, 0x6f, 0x64,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e,
0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68,
0x61, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x52,
0x04, 0x6d, 0x6f, 0x64, 0x65, 0x1a, 0x28, 0x0a, 0x06, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12,
0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x2a,
0x3d, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x6c, 0x6f, 0x61, 0x64, 0x4d, 0x6f, 0x64, 0x65, 0x12,
0x15, 0x0a, 0x11, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x44, 0x5f, 0x53, 0x45,
0x52, 0x56, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54,
0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x10, 0x02, 0x42, 0x21,
0x5a, 0x1f, 0x69, 0x73, 0x74, 0x69, 0x6f, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x74,
0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61,
0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_telemetry_v1alpha1_telemetry_proto_rawDescOnce sync.Once
file_telemetry_v1alpha1_telemetry_proto_rawDescData = file_telemetry_v1alpha1_telemetry_proto_rawDesc
)
func file_telemetry_v1alpha1_telemetry_proto_rawDescGZIP() []byte {
file_telemetry_v1alpha1_telemetry_proto_rawDescOnce.Do(func() {
file_telemetry_v1alpha1_telemetry_proto_rawDescData = protoimpl.X.CompressGZIP(file_telemetry_v1alpha1_telemetry_proto_rawDescData)
})
return file_telemetry_v1alpha1_telemetry_proto_rawDescData
}
var file_telemetry_v1alpha1_telemetry_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
var file_telemetry_v1alpha1_telemetry_proto_msgTypes = make([]protoimpl.MessageInfo, 17)
var file_telemetry_v1alpha1_telemetry_proto_goTypes = []any{
(WorkloadMode)(0), // 0: istio.telemetry.v1alpha1.WorkloadMode
(MetricSelector_IstioMetric)(0), // 1: istio.telemetry.v1alpha1.MetricSelector.IstioMetric
(MetricsOverrides_TagOverride_Operation)(0), // 2: istio.telemetry.v1alpha1.MetricsOverrides.TagOverride.Operation
(*Telemetry)(nil), // 3: istio.telemetry.v1alpha1.Telemetry
(*Tracing)(nil), // 4: istio.telemetry.v1alpha1.Tracing
(*ProviderRef)(nil), // 5: istio.telemetry.v1alpha1.ProviderRef
(*Metrics)(nil), // 6: istio.telemetry.v1alpha1.Metrics
(*MetricSelector)(nil), // 7: istio.telemetry.v1alpha1.MetricSelector
(*MetricsOverrides)(nil), // 8: istio.telemetry.v1alpha1.MetricsOverrides
(*AccessLogging)(nil), // 9: istio.telemetry.v1alpha1.AccessLogging
(*Tracing_TracingSelector)(nil), // 10: istio.telemetry.v1alpha1.Tracing.TracingSelector
(*Tracing_CustomTag)(nil), // 11: istio.telemetry.v1alpha1.Tracing.CustomTag
(*Tracing_Literal)(nil), // 12: istio.telemetry.v1alpha1.Tracing.Literal
(*Tracing_Environment)(nil), // 13: istio.telemetry.v1alpha1.Tracing.Environment
(*Tracing_RequestHeader)(nil), // 14: istio.telemetry.v1alpha1.Tracing.RequestHeader
nil, // 15: istio.telemetry.v1alpha1.Tracing.CustomTagsEntry
(*MetricsOverrides_TagOverride)(nil), // 16: istio.telemetry.v1alpha1.MetricsOverrides.TagOverride
nil, // 17: istio.telemetry.v1alpha1.MetricsOverrides.TagOverridesEntry
(*AccessLogging_LogSelector)(nil), // 18: istio.telemetry.v1alpha1.AccessLogging.LogSelector
(*AccessLogging_Filter)(nil), // 19: istio.telemetry.v1alpha1.AccessLogging.Filter
(*v1beta1.WorkloadSelector)(nil), // 20: istio.type.v1beta1.WorkloadSelector
(*v1beta1.PolicyTargetReference)(nil), // 21: istio.type.v1beta1.PolicyTargetReference
(*wrappers.DoubleValue)(nil), // 22: google.protobuf.DoubleValue
(*wrappers.BoolValue)(nil), // 23: google.protobuf.BoolValue
(*duration.Duration)(nil), // 24: google.protobuf.Duration
}
var file_telemetry_v1alpha1_telemetry_proto_depIdxs = []int32{
20, // 0: istio.telemetry.v1alpha1.Telemetry.selector:type_name -> istio.type.v1beta1.WorkloadSelector
21, // 1: istio.telemetry.v1alpha1.Telemetry.targetRef:type_name -> istio.type.v1beta1.PolicyTargetReference
21, // 2: istio.telemetry.v1alpha1.Telemetry.targetRefs:type_name -> istio.type.v1beta1.PolicyTargetReference
4, // 3: istio.telemetry.v1alpha1.Telemetry.tracing:type_name -> istio.telemetry.v1alpha1.Tracing
6, // 4: istio.telemetry.v1alpha1.Telemetry.metrics:type_name -> istio.telemetry.v1alpha1.Metrics
9, // 5: istio.telemetry.v1alpha1.Telemetry.access_logging:type_name -> istio.telemetry.v1alpha1.AccessLogging
10, // 6: istio.telemetry.v1alpha1.Tracing.match:type_name -> istio.telemetry.v1alpha1.Tracing.TracingSelector
5, // 7: istio.telemetry.v1alpha1.Tracing.providers:type_name -> istio.telemetry.v1alpha1.ProviderRef
22, // 8: istio.telemetry.v1alpha1.Tracing.random_sampling_percentage:type_name -> google.protobuf.DoubleValue
23, // 9: istio.telemetry.v1alpha1.Tracing.disable_span_reporting:type_name -> google.protobuf.BoolValue
15, // 10: istio.telemetry.v1alpha1.Tracing.custom_tags:type_name -> istio.telemetry.v1alpha1.Tracing.CustomTagsEntry
23, // 11: istio.telemetry.v1alpha1.Tracing.use_request_id_for_trace_sampling:type_name -> google.protobuf.BoolValue
5, // 12: istio.telemetry.v1alpha1.Metrics.providers:type_name -> istio.telemetry.v1alpha1.ProviderRef
8, // 13: istio.telemetry.v1alpha1.Metrics.overrides:type_name -> istio.telemetry.v1alpha1.MetricsOverrides
24, // 14: istio.telemetry.v1alpha1.Metrics.reporting_interval:type_name -> google.protobuf.Duration
1, // 15: istio.telemetry.v1alpha1.MetricSelector.metric:type_name -> istio.telemetry.v1alpha1.MetricSelector.IstioMetric
0, // 16: istio.telemetry.v1alpha1.MetricSelector.mode:type_name -> istio.telemetry.v1alpha1.WorkloadMode
7, // 17: istio.telemetry.v1alpha1.MetricsOverrides.match:type_name -> istio.telemetry.v1alpha1.MetricSelector
23, // 18: istio.telemetry.v1alpha1.MetricsOverrides.disabled:type_name -> google.protobuf.BoolValue
17, // 19: istio.telemetry.v1alpha1.MetricsOverrides.tag_overrides:type_name -> istio.telemetry.v1alpha1.MetricsOverrides.TagOverridesEntry
18, // 20: istio.telemetry.v1alpha1.AccessLogging.match:type_name -> istio.telemetry.v1alpha1.AccessLogging.LogSelector
5, // 21: istio.telemetry.v1alpha1.AccessLogging.providers:type_name -> istio.telemetry.v1alpha1.ProviderRef
23, // 22: istio.telemetry.v1alpha1.AccessLogging.disabled:type_name -> google.protobuf.BoolValue
19, // 23: istio.telemetry.v1alpha1.AccessLogging.filter:type_name -> istio.telemetry.v1alpha1.AccessLogging.Filter
0, // 24: istio.telemetry.v1alpha1.Tracing.TracingSelector.mode:type_name -> istio.telemetry.v1alpha1.WorkloadMode
12, // 25: istio.telemetry.v1alpha1.Tracing.CustomTag.literal:type_name -> istio.telemetry.v1alpha1.Tracing.Literal
13, // 26: istio.telemetry.v1alpha1.Tracing.CustomTag.environment:type_name -> istio.telemetry.v1alpha1.Tracing.Environment
14, // 27: istio.telemetry.v1alpha1.Tracing.CustomTag.header:type_name -> istio.telemetry.v1alpha1.Tracing.RequestHeader
11, // 28: istio.telemetry.v1alpha1.Tracing.CustomTagsEntry.value:type_name -> istio.telemetry.v1alpha1.Tracing.CustomTag
2, // 29: istio.telemetry.v1alpha1.MetricsOverrides.TagOverride.operation:type_name -> istio.telemetry.v1alpha1.MetricsOverrides.TagOverride.Operation
16, // 30: istio.telemetry.v1alpha1.MetricsOverrides.TagOverridesEntry.value:type_name -> istio.telemetry.v1alpha1.MetricsOverrides.TagOverride
0, // 31: istio.telemetry.v1alpha1.AccessLogging.LogSelector.mode:type_name -> istio.telemetry.v1alpha1.WorkloadMode
32, // [32:32] is the sub-list for method output_type
32, // [32:32] is the sub-list for method input_type
32, // [32:32] is the sub-list for extension type_name
32, // [32:32] is the sub-list for extension extendee
0, // [0:32] is the sub-list for field type_name
}
func init() { file_telemetry_v1alpha1_telemetry_proto_init() }
func file_telemetry_v1alpha1_telemetry_proto_init() {
if File_telemetry_v1alpha1_telemetry_proto != nil {
return
}
file_telemetry_v1alpha1_telemetry_proto_msgTypes[4].OneofWrappers = []any{
(*MetricSelector_Metric)(nil),
(*MetricSelector_CustomMetric)(nil),
}
file_telemetry_v1alpha1_telemetry_proto_msgTypes[8].OneofWrappers = []any{
(*Tracing_CustomTag_Literal)(nil),
(*Tracing_CustomTag_Environment)(nil),
(*Tracing_CustomTag_Header)(nil),
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_telemetry_v1alpha1_telemetry_proto_rawDesc,
NumEnums: 3,
NumMessages: 17,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_telemetry_v1alpha1_telemetry_proto_goTypes,
DependencyIndexes: file_telemetry_v1alpha1_telemetry_proto_depIdxs,
EnumInfos: file_telemetry_v1alpha1_telemetry_proto_enumTypes,
MessageInfos: file_telemetry_v1alpha1_telemetry_proto_msgTypes,
}.Build()
File_telemetry_v1alpha1_telemetry_proto = out.File
file_telemetry_v1alpha1_telemetry_proto_rawDesc = nil
file_telemetry_v1alpha1_telemetry_proto_goTypes = nil
file_telemetry_v1alpha1_telemetry_proto_depIdxs = nil
}