mirror of
https://github.com/pomerium/pomerium.git
synced 2025-04-28 18:06:34 +02:00
Refactor trace config to match supported otel options (#5447)
* Refactor trace config to match supported otel options * use duration instead of int64 for otel timeouts * change 'trace client updated' log level to debug
This commit is contained in:
parent
3e90f1e244
commit
5e94b2f8f1
22 changed files with 1067 additions and 721 deletions
|
@ -32,9 +32,7 @@ func main() {
|
||||||
root.AddCommand(zero_cmd.BuildRootCmd())
|
root.AddCommand(zero_cmd.BuildRootCmd())
|
||||||
root.PersistentFlags().StringVar(&configFile, "config", "", "Specify configuration file location")
|
root.PersistentFlags().StringVar(&configFile, "config", "", "Specify configuration file location")
|
||||||
log.SetLevel(zerolog.InfoLevel)
|
log.SetLevel(zerolog.InfoLevel)
|
||||||
ctx := trace.Options{
|
ctx := trace.NewContext(context.Background(), trace.NewSyncClient(nil))
|
||||||
RemoteClient: trace.NewSyncClient(trace.NewRemoteClientFromEnv()),
|
|
||||||
}.NewContext(context.Background())
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := trace.ShutdownContext(ctx); err != nil {
|
if err := trace.ShutdownContext(ctx); err != nil {
|
||||||
log.Error().Err(err).Send()
|
log.Error().Err(err).Send()
|
||||||
|
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
|
|
||||||
"github.com/mitchellh/mapstructure"
|
"github.com/mitchellh/mapstructure"
|
||||||
|
"github.com/pomerium/pomerium/config/otelconfig"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"google.golang.org/protobuf/encoding/protojson"
|
"google.golang.org/protobuf/encoding/protojson"
|
||||||
)
|
)
|
||||||
|
@ -40,4 +41,5 @@ var ViperPolicyHooks = viper.DecodeHook(mapstructure.ComposeDecodeHookFunc(
|
||||||
decodePPLPolicyHookFunc(),
|
decodePPLPolicyHookFunc(),
|
||||||
decodeSANMatcherHookFunc(),
|
decodeSANMatcherHookFunc(),
|
||||||
decodeStringToMapHookFunc(),
|
decodeStringToMapHookFunc(),
|
||||||
|
otelconfig.OtelDurationFunc(),
|
||||||
))
|
))
|
||||||
|
|
|
@ -3,9 +3,9 @@ package envoyconfig
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"time"
|
||||||
|
|
||||||
envoy_config_accesslog_v3 "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v3"
|
envoy_config_accesslog_v3 "github.com/envoyproxy/go-control-plane/envoy/config/accesslog/v3"
|
||||||
envoy_config_bootstrap_v3 "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v3"
|
envoy_config_bootstrap_v3 "github.com/envoyproxy/go-control-plane/envoy/config/bootstrap/v3"
|
||||||
|
@ -16,12 +16,12 @@ import (
|
||||||
envoy_config_overload_v3 "github.com/envoyproxy/go-control-plane/envoy/config/overload/v3"
|
envoy_config_overload_v3 "github.com/envoyproxy/go-control-plane/envoy/config/overload/v3"
|
||||||
envoy_extensions_access_loggers_file_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/file/v3"
|
envoy_extensions_access_loggers_file_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/file/v3"
|
||||||
envoy_extensions_resource_monitors_downstream_connections_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/resource_monitors/downstream_connections/v3"
|
envoy_extensions_resource_monitors_downstream_connections_v3 "github.com/envoyproxy/go-control-plane/envoy/extensions/resource_monitors/downstream_connections/v3"
|
||||||
"google.golang.org/protobuf/types/known/durationpb"
|
|
||||||
"google.golang.org/protobuf/types/known/structpb"
|
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/config"
|
"github.com/pomerium/pomerium/config"
|
||||||
|
"github.com/pomerium/pomerium/config/otelconfig"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry"
|
"github.com/pomerium/pomerium/internal/telemetry"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
|
"google.golang.org/protobuf/types/known/structpb"
|
||||||
)
|
)
|
||||||
|
|
||||||
const maxActiveDownstreamConnections = 50000
|
const maxActiveDownstreamConnections = 50000
|
||||||
|
@ -53,7 +53,7 @@ func (b *Builder) BuildBootstrap(
|
||||||
return nil, fmt.Errorf("error building bootstrap dynamic resources: %w", err)
|
return nil, fmt.Errorf("error building bootstrap dynamic resources: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrap.LayeredRuntime, err = b.BuildBootstrapLayeredRuntime(ctx)
|
bootstrap.LayeredRuntime, err = b.BuildBootstrapLayeredRuntime(ctx, cfg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error building bootstrap layered runtime: %w", err)
|
return nil, fmt.Errorf("error building bootstrap layered runtime: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -149,12 +149,20 @@ func (b *Builder) BuildBootstrapDynamicResources(
|
||||||
}
|
}
|
||||||
|
|
||||||
// BuildBootstrapLayeredRuntime builds the layered runtime for the envoy bootstrap.
|
// BuildBootstrapLayeredRuntime builds the layered runtime for the envoy bootstrap.
|
||||||
func (b *Builder) BuildBootstrapLayeredRuntime(ctx context.Context) (*envoy_config_bootstrap_v3.LayeredRuntime, error) {
|
func (b *Builder) BuildBootstrapLayeredRuntime(ctx context.Context, cfg *config.Config) (*envoy_config_bootstrap_v3.LayeredRuntime, error) {
|
||||||
flushIntervalMs := trace.BatchSpanProcessorScheduleDelay()
|
flushInterval := otelconfig.DefaultScheduleDelay
|
||||||
minFlushSpans := trace.BatchSpanProcessorMaxExportBatchSize()
|
minFlushSpans := int32(otelconfig.DefaultMaxExportBatchSize)
|
||||||
|
if cfg.Options != nil {
|
||||||
|
if cfg.Options.Tracing.OtelBspScheduleDelay != nil {
|
||||||
|
flushInterval = max(otelconfig.MinimumScheduleDelay, time.Duration(*cfg.Options.Tracing.OtelBspScheduleDelay))
|
||||||
|
}
|
||||||
|
if cfg.Options.Tracing.OtelBspMaxExportBatchSize != nil {
|
||||||
|
minFlushSpans = max(otelconfig.MinimumMaxExportBatchSize, *cfg.Options.Tracing.OtelBspMaxExportBatchSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
if trace.DebugFlagsFromContext(ctx).Check(trace.EnvoyFlushEverySpan) {
|
if trace.DebugFlagsFromContext(ctx).Check(trace.EnvoyFlushEverySpan) {
|
||||||
|
flushInterval = 24 * time.Hour
|
||||||
minFlushSpans = 1
|
minFlushSpans = 1
|
||||||
flushIntervalMs = math.MaxInt32
|
|
||||||
}
|
}
|
||||||
layer, err := structpb.NewStruct(map[string]any{
|
layer, err := structpb.NewStruct(map[string]any{
|
||||||
"re2": map[string]any{
|
"re2": map[string]any{
|
||||||
|
@ -165,7 +173,7 @@ func (b *Builder) BuildBootstrapLayeredRuntime(ctx context.Context) (*envoy_conf
|
||||||
},
|
},
|
||||||
"tracing": map[string]any{
|
"tracing": map[string]any{
|
||||||
"opentelemetry": map[string]any{
|
"opentelemetry": map[string]any{
|
||||||
"flush_interval_ms": flushIntervalMs,
|
"flush_interval_ms": flushInterval.Milliseconds(),
|
||||||
// Note: for most requests, envoy generates 3 spans:
|
// Note: for most requests, envoy generates 3 spans:
|
||||||
// - ingress (downstream->envoy)
|
// - ingress (downstream->envoy)
|
||||||
// - ext_authz check request (envoy->pomerium)
|
// - ext_authz check request (envoy->pomerium)
|
||||||
|
|
|
@ -36,7 +36,7 @@ func TestBuilder_BuildBootstrapAdmin(t *testing.T) {
|
||||||
|
|
||||||
func TestBuilder_BuildBootstrapLayeredRuntime(t *testing.T) {
|
func TestBuilder_BuildBootstrapLayeredRuntime(t *testing.T) {
|
||||||
b := New("localhost:1111", "localhost:2222", "localhost:3333", filemgr.NewManager(), nil)
|
b := New("localhost:1111", "localhost:2222", "localhost:3333", filemgr.NewManager(), nil)
|
||||||
staticCfg, err := b.BuildBootstrapLayeredRuntime(context.Background())
|
staticCfg, err := b.BuildBootstrapLayeredRuntime(context.Background(), &config.Config{})
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
testutil.AssertProtoJSONEqual(t, `
|
testutil.AssertProtoJSONEqual(t, `
|
||||||
{ "layers": [{
|
{ "layers": [{
|
||||||
|
|
|
@ -214,7 +214,7 @@ func (b *Builder) buildMainHTTPConnectionManagerFilter(
|
||||||
mgr.CodecType = cfg.Options.GetCodecType().ToEnvoy()
|
mgr.CodecType = cfg.Options.GetCodecType().ToEnvoy()
|
||||||
}
|
}
|
||||||
|
|
||||||
applyTracingConfig(ctx, mgr, cfg.Options)
|
applyTracingConfig(ctx, mgr, &cfg.Options.Tracing)
|
||||||
|
|
||||||
if fullyStatic {
|
if fullyStatic {
|
||||||
routeConfiguration, err := b.buildMainRouteConfiguration(ctx, cfg)
|
routeConfiguration, err := b.buildMainRouteConfiguration(ctx, cfg)
|
||||||
|
|
|
@ -149,7 +149,14 @@ func Test_buildMainHTTPConnectionManagerFilter(t *testing.T) {
|
||||||
options.SkipXffAppend = true
|
options.SkipXffAppend = true
|
||||||
options.XffNumTrustedHops = 1
|
options.XffNumTrustedHops = 1
|
||||||
options.AuthenticateURLString = "https://authenticate.example.com"
|
options.AuthenticateURLString = "https://authenticate.example.com"
|
||||||
options.TracingProvider = "otlp"
|
otlp := "otlp"
|
||||||
|
options.Tracing.OtelTracesExporter = &otlp
|
||||||
|
one := 1.0
|
||||||
|
options.Tracing.OtelTracesSamplerArg = &one
|
||||||
|
limit := int32(1024)
|
||||||
|
options.Tracing.OtelAttributeValueLengthLimit = &limit
|
||||||
|
endpoint := "http://localhost:4317"
|
||||||
|
options.Tracing.OtelExporterOtlpTracesEndpoint = &endpoint
|
||||||
filter, err := b.buildMainHTTPConnectionManagerFilter(context.Background(), &config.Config{Options: options}, false, false)
|
filter, err := b.buildMainHTTPConnectionManagerFilter(context.Background(), &config.Config{Options: options}, false, false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ package envoyconfig
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"os"
|
"strings"
|
||||||
"strconv"
|
"time"
|
||||||
|
|
||||||
envoy_config_core_v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
|
envoy_config_core_v3 "github.com/envoyproxy/go-control-plane/envoy/config/core/v3"
|
||||||
tracev3 "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3"
|
tracev3 "github.com/envoyproxy/go-control-plane/envoy/config/trace/v3"
|
||||||
|
@ -16,29 +16,31 @@ import (
|
||||||
extensions_trace_context "github.com/pomerium/envoy-custom/api/extensions/http/early_header_mutation/trace_context"
|
extensions_trace_context "github.com/pomerium/envoy-custom/api/extensions/http/early_header_mutation/trace_context"
|
||||||
extensions_uuidx "github.com/pomerium/envoy-custom/api/extensions/request_id/uuidx"
|
extensions_uuidx "github.com/pomerium/envoy-custom/api/extensions/request_id/uuidx"
|
||||||
extensions_pomerium_otel "github.com/pomerium/envoy-custom/api/extensions/tracers/pomerium_otel"
|
extensions_pomerium_otel "github.com/pomerium/envoy-custom/api/extensions/tracers/pomerium_otel"
|
||||||
"github.com/pomerium/pomerium/config"
|
"github.com/pomerium/pomerium/config/otelconfig"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
"google.golang.org/protobuf/types/known/wrapperspb"
|
"google.golang.org/protobuf/types/known/wrapperspb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func isTracingEnabled(cfg *config.Options) bool {
|
func isTracingEnabled(cfg *otelconfig.Config) bool {
|
||||||
if os.Getenv("OTEL_SDK_DISABLED") == "true" {
|
if trace.IsOtelSDKDisabled() {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
switch cfg.TracingProvider {
|
if cfg.OtelTracesExporter == nil {
|
||||||
case "none", "noop": // explicitly disabled from config
|
|
||||||
return false
|
return false
|
||||||
case "": // unset
|
}
|
||||||
return trace.IsEnabledViaEnvironment()
|
switch *cfg.OtelTracesExporter {
|
||||||
default: // set to a non-empty value
|
case "none", "noop", "":
|
||||||
return !trace.IsDisabledViaEnvironment()
|
return false
|
||||||
|
default:
|
||||||
|
return cfg.OtelExporterOtlpTracesEndpoint != nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func applyTracingConfig(
|
func applyTracingConfig(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
mgr *envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager,
|
mgr *envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager,
|
||||||
opts *config.Options,
|
opts *otelconfig.Config,
|
||||||
) {
|
) {
|
||||||
if !isTracingEnabled(opts) {
|
if !isTracingEnabled(opts) {
|
||||||
return
|
return
|
||||||
|
@ -56,36 +58,28 @@ func applyTracingConfig(
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
maxPathTagLength := uint32(1024)
|
var grpcHeaders []*envoy_config_core_v3.HeaderValue
|
||||||
if value, ok := os.LookupEnv("OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT"); ok {
|
for _, kv := range opts.OtelExporterOtlpTracesHeaders {
|
||||||
if num, err := strconv.ParseUint(value, 10, 32); err == nil {
|
k, v, ok := strings.Cut(kv, "=")
|
||||||
maxPathTagLength = max(64, uint32(num))
|
if ok {
|
||||||
|
grpcHeaders = append(grpcHeaders, &envoy_config_core_v3.HeaderValue{
|
||||||
|
Key: k,
|
||||||
|
Value: v,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sampleRate := 1.0
|
var timeout *durationpb.Duration
|
||||||
if value, ok := os.LookupEnv("OTEL_TRACES_SAMPLER_ARG"); ok {
|
if opts.OtelExporterOtlpTracesTimeout != nil {
|
||||||
if rate, err := strconv.ParseFloat(value, 64); err == nil {
|
timeout = durationpb.New(time.Duration(*opts.OtelExporterOtlpTracesTimeout) * time.Millisecond)
|
||||||
sampleRate = rate
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if opts.TracingSampleRate != nil {
|
|
||||||
sampleRate = *opts.TracingSampleRate
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mgr.Tracing = &envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_Tracing{
|
mgr.Tracing = &envoy_extensions_filters_network_http_connection_manager.HttpConnectionManager_Tracing{
|
||||||
RandomSampling: &envoy_type_v3.Percent{Value: max(0.0, min(1.0, sampleRate)) * 100},
|
|
||||||
Verbose: true,
|
Verbose: true,
|
||||||
SpawnUpstreamSpan: wrapperspb.Bool(true),
|
SpawnUpstreamSpan: wrapperspb.Bool(true),
|
||||||
Provider: &tracev3.Tracing_Http{
|
Provider: &tracev3.Tracing_Http{
|
||||||
Name: "envoy.tracers.pomerium_otel",
|
Name: "envoy.tracers.pomerium_otel",
|
||||||
ConfigType: &tracev3.Tracing_Http_TypedConfig{
|
ConfigType: &tracev3.Tracing_Http_TypedConfig{
|
||||||
TypedConfig: marshalAny(&extensions_pomerium_otel.OpenTelemetryConfig{
|
TypedConfig: marshalAny(&extensions_pomerium_otel.OpenTelemetryConfig{
|
||||||
GrpcService: &envoy_config_core_v3.GrpcService{
|
|
||||||
TargetSpecifier: &envoy_config_core_v3.GrpcService_EnvoyGrpc_{
|
|
||||||
EnvoyGrpc: &envoy_config_core_v3.GrpcService_EnvoyGrpc{
|
|
||||||
ClusterName: "pomerium-control-plane-grpc",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
ServiceName: "Envoy",
|
ServiceName: "Envoy",
|
||||||
ResourceDetectors: []*envoy_config_core_v3.TypedExtensionConfig{
|
ResourceDetectors: []*envoy_config_core_v3.TypedExtensionConfig{
|
||||||
{
|
{
|
||||||
|
@ -97,11 +91,24 @@ func applyTracingConfig(
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
GrpcService: &envoy_config_core_v3.GrpcService{
|
||||||
|
TargetSpecifier: &envoy_config_core_v3.GrpcService_EnvoyGrpc_{
|
||||||
|
EnvoyGrpc: &envoy_config_core_v3.GrpcService_EnvoyGrpc{
|
||||||
|
ClusterName: "pomerium-control-plane-grpc",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
InitialMetadata: grpcHeaders,
|
||||||
|
Timeout: timeout,
|
||||||
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// this allows full URLs to be displayed in traces, they are otherwise truncated
|
}
|
||||||
MaxPathTagLength: wrapperspb.UInt32(maxPathTagLength),
|
if opts.OtelAttributeValueLengthLimit != nil {
|
||||||
|
mgr.Tracing.MaxPathTagLength = wrapperspb.UInt32(max(64, min(32768, uint32(*opts.OtelAttributeValueLengthLimit))))
|
||||||
|
}
|
||||||
|
if opts.OtelTracesSamplerArg != nil {
|
||||||
|
mgr.Tracing.RandomSampling = &envoy_type_v3.Percent{Value: max(0.0, min(1.0, *opts.OtelTracesSamplerArg)) * 100}
|
||||||
}
|
}
|
||||||
|
|
||||||
debugFlags := trace.DebugFlagsFromContext(ctx)
|
debugFlags := trace.DebugFlagsFromContext(ctx)
|
||||||
|
|
|
@ -27,6 +27,7 @@ import (
|
||||||
"google.golang.org/protobuf/types/known/durationpb"
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
|
|
||||||
"github.com/pomerium/csrf"
|
"github.com/pomerium/csrf"
|
||||||
|
"github.com/pomerium/pomerium/config/otelconfig"
|
||||||
"github.com/pomerium/pomerium/internal/atomicutil"
|
"github.com/pomerium/pomerium/internal/atomicutil"
|
||||||
"github.com/pomerium/pomerium/internal/hashutil"
|
"github.com/pomerium/pomerium/internal/hashutil"
|
||||||
"github.com/pomerium/pomerium/internal/httputil"
|
"github.com/pomerium/pomerium/internal/httputil"
|
||||||
|
@ -210,10 +211,7 @@ type Options struct {
|
||||||
MetricsClientCA string `mapstructure:"metrics_client_ca" yaml:"metrics_client_ca,omitempty"`
|
MetricsClientCA string `mapstructure:"metrics_client_ca" yaml:"metrics_client_ca,omitempty"`
|
||||||
MetricsClientCAFile string `mapstructure:"metrics_client_ca_file" yaml:"metrics_client_ca_file,omitempty"`
|
MetricsClientCAFile string `mapstructure:"metrics_client_ca_file" yaml:"metrics_client_ca_file,omitempty"`
|
||||||
|
|
||||||
TracingSampleRate *float64 `mapstructure:"tracing_sample_rate" yaml:"tracing_sample_rate,omitempty"`
|
Tracing otelconfig.Config `mapstructure:",squash" yaml:",inline"`
|
||||||
TracingProvider string `mapstructure:"tracing_provider" yaml:"tracing_provider,omitempty"`
|
|
||||||
TracingOTLPEndpoint string `mapstructure:"tracing_otlp_endpoint" yaml:"tracing_otlp_endpoint,omitempty"`
|
|
||||||
TracingOTLPProtocol string `mapstructure:"tracing_otlp_protocol" yaml:"tracing_otlp_protocol,omitempty"`
|
|
||||||
|
|
||||||
// GRPC Service Settings
|
// GRPC Service Settings
|
||||||
|
|
||||||
|
@ -1503,10 +1501,23 @@ func (o *Options) ApplySettings(ctx context.Context, certsIndex *cryptutil.Certi
|
||||||
set(&o.MetricsBasicAuth, settings.MetricsBasicAuth)
|
set(&o.MetricsBasicAuth, settings.MetricsBasicAuth)
|
||||||
setCertificate(&o.MetricsCertificate, &o.MetricsCertificateKey, settings.MetricsCertificate)
|
setCertificate(&o.MetricsCertificate, &o.MetricsCertificateKey, settings.MetricsCertificate)
|
||||||
set(&o.MetricsClientCA, settings.MetricsClientCa)
|
set(&o.MetricsClientCA, settings.MetricsClientCa)
|
||||||
set(&o.TracingProvider, settings.TracingProvider)
|
|
||||||
set(&o.TracingOTLPEndpoint, settings.TracingOtlpEndpoint)
|
setOptional(&o.Tracing.OtelTracesExporter, settings.OtelTracesExporter)
|
||||||
set(&o.TracingOTLPProtocol, settings.TracingOtlpProtocol)
|
setOptional(&o.Tracing.OtelTracesSamplerArg, settings.OtelTracesSamplerArg)
|
||||||
setOptional(&o.TracingSampleRate, settings.TracingSampleRate)
|
setSlice(&o.Tracing.OtelResourceAttributes, settings.OtelResourceAttributes)
|
||||||
|
setOptional(&o.Tracing.OtelLogLevel, settings.OtelLogLevel)
|
||||||
|
setOptional(&o.Tracing.OtelAttributeValueLengthLimit, settings.OtelAttributeValueLengthLimit)
|
||||||
|
setOptional(&o.Tracing.OtelExporterOtlpEndpoint, settings.OtelExporterOtlpEndpoint)
|
||||||
|
setOptional(&o.Tracing.OtelExporterOtlpTracesEndpoint, settings.OtelExporterOtlpTracesEndpoint)
|
||||||
|
setOptional(&o.Tracing.OtelExporterOtlpProtocol, settings.OtelExporterOtlpProtocol)
|
||||||
|
setOptional(&o.Tracing.OtelExporterOtlpTracesProtocol, settings.OtelExporterOtlpTracesProtocol)
|
||||||
|
setSlice(&o.Tracing.OtelExporterOtlpHeaders, settings.OtelExporterOtlpHeaders)
|
||||||
|
setSlice(&o.Tracing.OtelExporterOtlpTracesHeaders, settings.OtelExporterOtlpTracesHeaders)
|
||||||
|
setOptionalDuration(&o.Tracing.OtelExporterOtlpTimeout, settings.OtelExporterOtlpTimeout)
|
||||||
|
setOptionalDuration(&o.Tracing.OtelExporterOtlpTracesTimeout, settings.OtelExporterOtlpTracesTimeout)
|
||||||
|
setOptionalDuration(&o.Tracing.OtelBspScheduleDelay, settings.OtelBspScheduleDelay)
|
||||||
|
setOptional(&o.Tracing.OtelBspMaxExportBatchSize, settings.OtelBspMaxExportBatchSize)
|
||||||
|
|
||||||
set(&o.GRPCAddr, settings.GrpcAddress)
|
set(&o.GRPCAddr, settings.GrpcAddress)
|
||||||
setOptional(&o.GRPCInsecure, settings.GrpcInsecure)
|
setOptional(&o.GRPCInsecure, settings.GrpcInsecure)
|
||||||
setDuration(&o.GRPCClientTimeout, settings.GrpcClientTimeout)
|
setDuration(&o.GRPCClientTimeout, settings.GrpcClientTimeout)
|
||||||
|
@ -1591,10 +1602,23 @@ func (o *Options) ToProto() *config.Config {
|
||||||
copySrcToOptionalDest(&settings.MetricsBasicAuth, &o.MetricsBasicAuth)
|
copySrcToOptionalDest(&settings.MetricsBasicAuth, &o.MetricsBasicAuth)
|
||||||
settings.MetricsCertificate = toCertificateOrFromFile(o.MetricsCertificate, o.MetricsCertificateKey, o.MetricsCertificateFile, o.MetricsCertificateKeyFile)
|
settings.MetricsCertificate = toCertificateOrFromFile(o.MetricsCertificate, o.MetricsCertificateKey, o.MetricsCertificateFile, o.MetricsCertificateKeyFile)
|
||||||
copySrcToOptionalDest(&settings.MetricsClientCa, valueOrFromFileBase64(o.MetricsClientCA, o.MetricsClientCAFile))
|
copySrcToOptionalDest(&settings.MetricsClientCa, valueOrFromFileBase64(o.MetricsClientCA, o.MetricsClientCAFile))
|
||||||
copySrcToOptionalDest(&settings.TracingProvider, &o.TracingProvider)
|
|
||||||
settings.TracingSampleRate = o.TracingSampleRate
|
settings.OtelTracesExporter = o.Tracing.OtelTracesExporter
|
||||||
copySrcToOptionalDest(&settings.TracingOtlpEndpoint, &o.TracingOTLPEndpoint)
|
settings.OtelTracesSamplerArg = o.Tracing.OtelTracesSamplerArg
|
||||||
copySrcToOptionalDest(&settings.TracingOtlpProtocol, &o.TracingOTLPProtocol)
|
settings.OtelResourceAttributes = o.Tracing.OtelResourceAttributes
|
||||||
|
settings.OtelLogLevel = o.Tracing.OtelLogLevel
|
||||||
|
settings.OtelAttributeValueLengthLimit = o.Tracing.OtelAttributeValueLengthLimit
|
||||||
|
settings.OtelExporterOtlpEndpoint = o.Tracing.OtelExporterOtlpEndpoint
|
||||||
|
settings.OtelExporterOtlpTracesEndpoint = o.Tracing.OtelExporterOtlpTracesEndpoint
|
||||||
|
settings.OtelExporterOtlpProtocol = o.Tracing.OtelExporterOtlpProtocol
|
||||||
|
settings.OtelExporterOtlpTracesProtocol = o.Tracing.OtelExporterOtlpTracesProtocol
|
||||||
|
settings.OtelExporterOtlpHeaders = o.Tracing.OtelExporterOtlpHeaders
|
||||||
|
settings.OtelExporterOtlpTracesHeaders = o.Tracing.OtelExporterOtlpTracesHeaders
|
||||||
|
settings.OtelExporterOtlpTimeout = o.Tracing.OtelExporterOtlpTimeout.ToProto()
|
||||||
|
settings.OtelExporterOtlpTracesTimeout = o.Tracing.OtelExporterOtlpTracesTimeout.ToProto()
|
||||||
|
settings.OtelBspScheduleDelay = o.Tracing.OtelBspScheduleDelay.ToProto()
|
||||||
|
settings.OtelBspMaxExportBatchSize = o.Tracing.OtelBspMaxExportBatchSize
|
||||||
|
|
||||||
copySrcToOptionalDest(&settings.GrpcAddress, &o.GRPCAddr)
|
copySrcToOptionalDest(&settings.GrpcAddress, &o.GRPCAddr)
|
||||||
settings.GrpcInsecure = o.GRPCInsecure
|
settings.GrpcInsecure = o.GRPCInsecure
|
||||||
copyOptionalDuration(&settings.GrpcClientTimeout, o.GRPCClientTimeout)
|
copyOptionalDuration(&settings.GrpcClientTimeout, o.GRPCClientTimeout)
|
||||||
|
@ -1872,6 +1896,14 @@ func setDuration(dst *time.Duration, src *durationpb.Duration) {
|
||||||
*dst = src.AsDuration()
|
*dst = src.AsDuration()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setOptionalDuration[T ~int64](dst **T, src *durationpb.Duration) {
|
||||||
|
if src == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
v := T(src.AsDuration())
|
||||||
|
*dst = &v
|
||||||
|
}
|
||||||
|
|
||||||
func setLogLevel(dst *LogLevel, src *string) {
|
func setLogLevel(dst *LogLevel, src *string) {
|
||||||
if src == nil {
|
if src == nil {
|
||||||
return
|
return
|
||||||
|
|
|
@ -43,6 +43,8 @@ var (
|
||||||
"tracing_jaeger_collector_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
"tracing_jaeger_collector_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
||||||
"tracing_jaeger_agent_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
"tracing_jaeger_agent_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
||||||
"tracing_zipkin_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
"tracing_zipkin_endpoint": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
||||||
|
"tracing_provider": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
||||||
|
"tracing_sample_rate": "https://docs.pomerium.com/docs/overview/upgrading#removed-tracing-options",
|
||||||
}
|
}
|
||||||
|
|
||||||
ignoreConfigFields = map[string]struct{}{
|
ignoreConfigFields = map[string]struct{}{
|
||||||
|
|
|
@ -398,7 +398,7 @@ func Test_Checksum(t *testing.T) {
|
||||||
|
|
||||||
func TestOptionsFromViper(t *testing.T) {
|
func TestOptionsFromViper(t *testing.T) {
|
||||||
opts := []cmp.Option{
|
opts := []cmp.Option{
|
||||||
cmpopts.IgnoreFields(Options{}, "CookieSecret", "GRPCInsecure", "GRPCAddr", "DataBrokerURLString", "DataBrokerURLStrings", "AuthorizeURLString", "AuthorizeURLStrings", "DefaultUpstreamTimeout", "CookieExpire", "Services", "Addr", "LogLevel", "KeyFile", "CertFile", "SharedKey", "ReadTimeout", "IdleTimeout", "GRPCClientTimeout", "TracingSampleRate", "ProgrammaticRedirectDomainWhitelist", "RuntimeFlags"),
|
cmpopts.IgnoreFields(Options{}, "CookieSecret", "GRPCInsecure", "GRPCAddr", "DataBrokerURLString", "DataBrokerURLStrings", "AuthorizeURLString", "AuthorizeURLStrings", "DefaultUpstreamTimeout", "CookieExpire", "Services", "Addr", "LogLevel", "KeyFile", "CertFile", "SharedKey", "ReadTimeout", "IdleTimeout", "GRPCClientTimeout", "ProgrammaticRedirectDomainWhitelist", "RuntimeFlags"),
|
||||||
cmpopts.IgnoreFields(Policy{}, "EnvoyOpts"),
|
cmpopts.IgnoreFields(Policy{}, "EnvoyOpts"),
|
||||||
cmpOptIgnoreUnexported,
|
cmpOptIgnoreUnexported,
|
||||||
}
|
}
|
||||||
|
|
65
config/otelconfig/otelconfig.go
Normal file
65
config/otelconfig/otelconfig.go
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
// package otelconfig contains OTEL config fields, separated to avoid import cycles.
|
||||||
|
package otelconfig
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"math"
|
||||||
|
"reflect"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/mitchellh/mapstructure"
|
||||||
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||||
|
"google.golang.org/protobuf/types/known/durationpb"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
DefaultScheduleDelay time.Duration = sdktrace.DefaultScheduleDelay * time.Millisecond
|
||||||
|
MinimumScheduleDelay time.Duration = 100 * time.Millisecond
|
||||||
|
DefaultMaxExportBatchSize = sdktrace.DefaultMaxExportBatchSize
|
||||||
|
MinimumMaxExportBatchSize = 1
|
||||||
|
)
|
||||||
|
|
||||||
|
type Duration time.Duration
|
||||||
|
|
||||||
|
func (d *Duration) ToProto() *durationpb.Duration {
|
||||||
|
if d == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return durationpb.New(time.Duration(*d))
|
||||||
|
}
|
||||||
|
|
||||||
|
// OtelDurationFunc returns a DecodeHookFunc that converts durations represented
|
||||||
|
// as integer milliseconds into time.Duration values.
|
||||||
|
func OtelDurationFunc() mapstructure.DecodeHookFunc {
|
||||||
|
durationType := reflect.TypeFor[Duration]()
|
||||||
|
return func(_, t reflect.Type, data any) (any, error) {
|
||||||
|
if t != durationType {
|
||||||
|
return data, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
num, err := strconv.ParseInt(fmt.Sprint(data), 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return max(0, min(math.MaxInt64, time.Duration(num)*time.Millisecond)), nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Config struct {
|
||||||
|
OtelTracesExporter *string `mapstructure:"otel_traces_exporter" yaml:"otel_traces_exporter,omitempty"`
|
||||||
|
OtelTracesSamplerArg *float64 `mapstructure:"otel_traces_sampler_arg" yaml:"otel_traces_sampler_arg,omitempty"`
|
||||||
|
OtelResourceAttributes []string `mapstructure:"otel_resource_attributes" yaml:"otel_resource_attributes,omitempty"`
|
||||||
|
OtelLogLevel *string `mapstructure:"otel_log_level" yaml:"otel_log_level,omitempty"`
|
||||||
|
OtelAttributeValueLengthLimit *int32 `mapstructure:"otel_attribute_value_length_limit" yaml:"otel_attribute_value_length_limit,omitempty"`
|
||||||
|
OtelExporterOtlpEndpoint *string `mapstructure:"otel_exporter_otlp_endpoint" yaml:"otel_exporter_otlp_endpoint,omitempty"`
|
||||||
|
OtelExporterOtlpTracesEndpoint *string `mapstructure:"otel_exporter_otlp_traces_endpoint" yaml:"otel_exporter_otlp_traces_endpoint,omitempty"`
|
||||||
|
OtelExporterOtlpProtocol *string `mapstructure:"otel_exporter_otlp_protocol" yaml:"otel_exporter_otlp_protocol,omitempty"`
|
||||||
|
OtelExporterOtlpTracesProtocol *string `mapstructure:"otel_exporter_otlp_traces_protocol" yaml:"otel_exporter_otlp_traces_protocol,omitempty"`
|
||||||
|
OtelExporterOtlpHeaders []string `mapstructure:"otel_exporter_otlp_headers" yaml:"otel_exporter_otlp_headers,omitempty"`
|
||||||
|
OtelExporterOtlpTracesHeaders []string `mapstructure:"otel_exporter_otlp_traces_headers" yaml:"otel_exporter_otlp_traces_headers,omitempty"`
|
||||||
|
OtelExporterOtlpTimeout *Duration `mapstructure:"otel_exporter_otlp_timeout" yaml:"otel_exporter_otlp_timeout,omitempty"`
|
||||||
|
OtelExporterOtlpTracesTimeout *Duration `mapstructure:"otel_exporter_otlp_traces_timeout" yaml:"otel_exporter_otlp_traces_timeout,omitempty"`
|
||||||
|
OtelBspScheduleDelay *Duration `mapstructure:"otel_bsp_schedule_delay" yaml:"otel_bsp_schedule_delay,omitempty"`
|
||||||
|
OtelBspMaxExportBatchSize *int32 `mapstructure:"otel_bsp_max_export_batch_size" yaml:"otel_bsp_max_export_batch_size,omitempty"`
|
||||||
|
}
|
|
@ -1,44 +0,0 @@
|
||||||
package config
|
|
||||||
|
|
||||||
import (
|
|
||||||
"errors"
|
|
||||||
"fmt"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
|
||||||
)
|
|
||||||
|
|
||||||
var ErrNoTracingConfig = errors.New("no tracing config")
|
|
||||||
|
|
||||||
func NewTraceClientFromOptions(opts *Options) (otlptrace.Client, error) {
|
|
||||||
switch opts.TracingProvider {
|
|
||||||
case "otlp":
|
|
||||||
endpoint := opts.TracingOTLPEndpoint
|
|
||||||
protocol := opts.TracingOTLPProtocol
|
|
||||||
if protocol == "" && endpoint != "" {
|
|
||||||
// treat this field as equivalent to OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
|
|
||||||
protocol = trace.BestEffortProtocolFromOTLPEndpoint(opts.TracingOTLPEndpoint, true)
|
|
||||||
}
|
|
||||||
switch strings.ToLower(strings.TrimSpace(protocol)) {
|
|
||||||
case "grpc":
|
|
||||||
return otlptracegrpc.NewClient(
|
|
||||||
otlptracegrpc.WithEndpointURL(endpoint),
|
|
||||||
), nil
|
|
||||||
case "http/protobuf", "":
|
|
||||||
return otlptracehttp.NewClient(
|
|
||||||
otlptracehttp.WithEndpointURL(endpoint),
|
|
||||||
), nil
|
|
||||||
default:
|
|
||||||
return nil, fmt.Errorf(`unknown otlp trace exporter protocol %q, expected "grpc" or "http/protobuf"\n`, protocol)
|
|
||||||
}
|
|
||||||
case "none", "noop":
|
|
||||||
return trace.NoopClient{}, nil
|
|
||||||
case "":
|
|
||||||
return nil, ErrNoTracingConfig
|
|
||||||
default:
|
|
||||||
return nil, fmt.Errorf(`unknown tracing provider %q, expected one of ["otlp"]`, opts.TracingProvider)
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -8,8 +8,9 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel"
|
"github.com/pomerium/pomerium/config/otelconfig"
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace"
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
||||||
|
@ -23,12 +24,19 @@ var (
|
||||||
ErrClientStopped = errors.New("client is stopped")
|
ErrClientStopped = errors.New("client is stopped")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SyncClient wraps an underlying [otlptrace.Client] which can be swapped out
|
||||||
|
// for a different client (e.g. in response to a config update) safely and in
|
||||||
|
// a way that does not lose spans.
|
||||||
type SyncClient interface {
|
type SyncClient interface {
|
||||||
otlptrace.Client
|
otlptrace.Client
|
||||||
|
|
||||||
Update(ctx context.Context, newClient otlptrace.Client) error
|
Update(ctx context.Context, newClient otlptrace.Client) error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewSyncClient creates a new [SyncClient] with an initial underlying client.
|
||||||
|
//
|
||||||
|
// The client can be nil; if so, calling any method on the SyncClient will
|
||||||
|
// return ErrNoClient.
|
||||||
func NewSyncClient(client otlptrace.Client) SyncClient {
|
func NewSyncClient(client otlptrace.Client) SyncClient {
|
||||||
return &syncClient{
|
return &syncClient{
|
||||||
client: client,
|
client: client,
|
||||||
|
@ -63,17 +71,24 @@ func (ac *syncClient) Stop(ctx context.Context) error {
|
||||||
if ac.waitForNewClient != nil {
|
if ac.waitForNewClient != nil {
|
||||||
panic("bug: Stop called concurrently")
|
panic("bug: Stop called concurrently")
|
||||||
}
|
}
|
||||||
|
if ac.client == nil {
|
||||||
|
return ErrNoClient
|
||||||
|
}
|
||||||
return ac.resetLocked(ctx, nil)
|
return ac.resetLocked(ctx, nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ac *syncClient) resetLocked(ctx context.Context, newClient otlptrace.Client) error {
|
func (ac *syncClient) resetLocked(ctx context.Context, newClient otlptrace.Client) error {
|
||||||
if ac.client == nil {
|
var stop func(context.Context) error
|
||||||
return ErrNoClient
|
if ac.client != nil {
|
||||||
|
stop = ac.client.Stop
|
||||||
}
|
}
|
||||||
ac.waitForNewClient = make(chan struct{})
|
ac.waitForNewClient = make(chan struct{})
|
||||||
ac.mu.Unlock()
|
ac.mu.Unlock()
|
||||||
|
|
||||||
err := ac.client.Stop(ctx)
|
var err error
|
||||||
|
if stop != nil {
|
||||||
|
err = stop(ctx)
|
||||||
|
}
|
||||||
|
|
||||||
ac.mu.Lock()
|
ac.mu.Lock()
|
||||||
close(ac.waitForNewClient)
|
close(ac.waitForNewClient)
|
||||||
|
@ -123,53 +138,70 @@ func (ac *syncClient) Update(ctx context.Context, newClient otlptrace.Client) er
|
||||||
return ac.resetLocked(ctx, newClient)
|
return ac.resetLocked(ctx, newClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRemoteClientFromEnv creates an otlp trace client using the well-known
|
func NewTraceClientFromConfig(opts otelconfig.Config) (otlptrace.Client, error) {
|
||||||
// environment variables defined in the [OpenTelemetry documentation].
|
if IsOtelSDKDisabled() {
|
||||||
//
|
return NoopClient{}, nil
|
||||||
// [OpenTelemetry documentation]: https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/
|
|
||||||
func NewRemoteClientFromEnv() otlptrace.Client {
|
|
||||||
if os.Getenv("OTEL_SDK_DISABLED") == "true" {
|
|
||||||
return NoopClient{}
|
|
||||||
}
|
}
|
||||||
|
if opts.OtelTracesExporter == nil {
|
||||||
exporter, ok := os.LookupEnv("OTEL_TRACES_EXPORTER")
|
return NoopClient{}, nil
|
||||||
if !ok {
|
|
||||||
exporter = "none"
|
|
||||||
}
|
}
|
||||||
|
switch *opts.OtelTracesExporter {
|
||||||
switch strings.ToLower(strings.TrimSpace(exporter)) {
|
|
||||||
case "none", "noop", "":
|
|
||||||
return NoopClient{}
|
|
||||||
case "otlp":
|
case "otlp":
|
||||||
var protocol string
|
var endpoint, protocol string
|
||||||
if v, ok := os.LookupEnv("OTEL_EXPORTER_OTLP_TRACES_PROTOCOL"); ok {
|
var signalSpecificEndpoint bool
|
||||||
protocol = v
|
|
||||||
} else if v, ok := os.LookupEnv("OTEL_EXPORTER_OTLP_PROTOCOL"); ok {
|
if opts.OtelExporterOtlpTracesEndpoint != nil {
|
||||||
protocol = v
|
endpoint = *opts.OtelExporterOtlpTracesEndpoint
|
||||||
|
signalSpecificEndpoint = true
|
||||||
|
} else if opts.OtelExporterOtlpEndpoint != nil {
|
||||||
|
endpoint = *opts.OtelExporterOtlpEndpoint
|
||||||
|
signalSpecificEndpoint = false
|
||||||
|
}
|
||||||
|
if opts.OtelExporterOtlpTracesProtocol != nil {
|
||||||
|
protocol = *opts.OtelExporterOtlpTracesProtocol
|
||||||
|
} else if opts.OtelExporterOtlpProtocol != nil {
|
||||||
|
protocol = *opts.OtelExporterOtlpProtocol
|
||||||
} else {
|
} else {
|
||||||
// try to guess the expected protocol from the port number
|
protocol = BestEffortProtocolFromOTLPEndpoint(endpoint, signalSpecificEndpoint)
|
||||||
var endpoint string
|
}
|
||||||
var specific bool
|
|
||||||
if v, ok := os.LookupEnv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT"); ok {
|
var headersList []string
|
||||||
endpoint = v
|
if len(opts.OtelExporterOtlpTracesHeaders) > 0 {
|
||||||
specific = true
|
headersList = opts.OtelExporterOtlpTracesHeaders
|
||||||
} else if v, ok := os.LookupEnv("OTEL_EXPORTER_OTLP_ENDPOINT"); ok {
|
} else if len(opts.OtelExporterOtlpHeaders) > 0 {
|
||||||
endpoint = v
|
headersList = opts.OtelExporterOtlpHeaders
|
||||||
|
}
|
||||||
|
headers := map[string]string{}
|
||||||
|
for _, kv := range headersList {
|
||||||
|
k, v, ok := strings.Cut(kv, "=")
|
||||||
|
if ok {
|
||||||
|
headers[k] = v
|
||||||
}
|
}
|
||||||
protocol = BestEffortProtocolFromOTLPEndpoint(endpoint, specific)
|
}
|
||||||
|
defaultTimeout := 10 * time.Second // otel default (not exported)
|
||||||
|
if opts.OtelExporterOtlpTimeout != nil {
|
||||||
|
defaultTimeout = max(0, time.Duration(*opts.OtelExporterOtlpTimeout)*time.Millisecond)
|
||||||
}
|
}
|
||||||
switch strings.ToLower(strings.TrimSpace(protocol)) {
|
switch strings.ToLower(strings.TrimSpace(protocol)) {
|
||||||
case "grpc":
|
case "grpc":
|
||||||
return otlptracegrpc.NewClient()
|
return otlptracegrpc.NewClient(
|
||||||
|
otlptracegrpc.WithEndpointURL(endpoint),
|
||||||
|
otlptracegrpc.WithHeaders(headers),
|
||||||
|
otlptracegrpc.WithTimeout(defaultTimeout),
|
||||||
|
), nil
|
||||||
case "http/protobuf", "":
|
case "http/protobuf", "":
|
||||||
return otlptracehttp.NewClient()
|
return otlptracehttp.NewClient(
|
||||||
|
otlptracehttp.WithEndpointURL(endpoint),
|
||||||
|
otlptracehttp.WithHeaders(headers),
|
||||||
|
otlptracehttp.WithTimeout(defaultTimeout),
|
||||||
|
), nil
|
||||||
default:
|
default:
|
||||||
otel.Handle(fmt.Errorf(`unknown otlp trace exporter protocol %q, expected "grpc" or "http/protobuf"`, protocol))
|
return nil, fmt.Errorf(`unknown otlp trace exporter protocol %q, expected one of ["grpc", "http/protobuf"]`, protocol)
|
||||||
return NoopClient{}
|
|
||||||
}
|
}
|
||||||
|
case "none", "noop", "":
|
||||||
|
return NoopClient{}, nil
|
||||||
default:
|
default:
|
||||||
otel.Handle(fmt.Errorf(`unknown otlp trace exporter %q, expected "otlp" or "none"`, exporter))
|
return nil, fmt.Errorf(`unknown otlp trace exporter %q, expected one of ["otlp", "none"]`, *opts.OtelTracesExporter)
|
||||||
return NoopClient{}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -258,34 +290,6 @@ func (n ValidNoopSpan) SpanContext() oteltrace.SpanContext {
|
||||||
|
|
||||||
var _ oteltrace.Span = ValidNoopSpan{}
|
var _ oteltrace.Span = ValidNoopSpan{}
|
||||||
|
|
||||||
func IsDisabledViaEnvironment() bool {
|
func IsOtelSDKDisabled() bool {
|
||||||
if os.Getenv("OTEL_SDK_DISABLED") == "true" {
|
return os.Getenv("OTEL_SDK_DISABLED") == "true"
|
||||||
return true
|
|
||||||
}
|
|
||||||
exporter, ok := os.LookupEnv("OTEL_TRACES_EXPORTER")
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
switch strings.ToLower(strings.TrimSpace(exporter)) {
|
|
||||||
case "none, noop":
|
|
||||||
return true
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func IsEnabledViaEnvironment() bool {
|
|
||||||
if os.Getenv("OTEL_SDK_DISABLED") == "true" {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
exporter, ok := os.LookupEnv("OTEL_TRACES_EXPORTER")
|
|
||||||
if !ok {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
switch strings.ToLower(strings.TrimSpace(exporter)) {
|
|
||||||
case "none, noop", "":
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,15 @@ package trace_test
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/pomerium/pomerium/config"
|
||||||
"github.com/pomerium/pomerium/internal/log"
|
"github.com/pomerium/pomerium/internal/log"
|
||||||
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
"github.com/pomerium/pomerium/internal/telemetry/trace"
|
||||||
"github.com/pomerium/pomerium/internal/testenv"
|
"github.com/pomerium/pomerium/internal/testenv"
|
||||||
|
@ -16,6 +19,7 @@ import (
|
||||||
"github.com/pomerium/pomerium/internal/testenv/snippets"
|
"github.com/pomerium/pomerium/internal/testenv/snippets"
|
||||||
. "github.com/pomerium/pomerium/internal/testutil/tracetest" //nolint:revive
|
. "github.com/pomerium/pomerium/internal/testutil/tracetest" //nolint:revive
|
||||||
"github.com/pomerium/pomerium/internal/testutil/tracetest/mock_otlptrace"
|
"github.com/pomerium/pomerium/internal/testutil/tracetest/mock_otlptrace"
|
||||||
|
"github.com/pomerium/pomerium/internal/version"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
"go.opentelemetry.io/otel"
|
"go.opentelemetry.io/otel"
|
||||||
|
@ -86,6 +90,49 @@ func TestSyncClient(t *testing.T) {
|
||||||
assert.NoError(t, sc.Stop(context.Background()))
|
assert.NoError(t, sc.Stop(context.Background()))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
t.Run("Update from nil client to non-nil client", func(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
|
||||||
|
sc := trace.NewSyncClient(nil)
|
||||||
|
|
||||||
|
mockClient := mock_otlptrace.NewMockClient(ctrl)
|
||||||
|
start := mockClient.EXPECT().
|
||||||
|
Start(gomock.Any()).
|
||||||
|
Return(nil)
|
||||||
|
upload := mockClient.EXPECT().
|
||||||
|
UploadTraces(gomock.Any(), gomock.Any()).
|
||||||
|
Return(nil).
|
||||||
|
After(start)
|
||||||
|
mockClient.EXPECT().
|
||||||
|
Stop(gomock.Any()).
|
||||||
|
Return(nil).
|
||||||
|
After(upload)
|
||||||
|
assert.NoError(t, sc.Update(context.Background(), mockClient))
|
||||||
|
assert.NoError(t, sc.UploadTraces(context.Background(), []*tracev1.ResourceSpans{}))
|
||||||
|
assert.NoError(t, sc.Stop(context.Background()))
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Update from non-nil client to nil client", func(t *testing.T) {
|
||||||
|
ctrl := gomock.NewController(t)
|
||||||
|
|
||||||
|
sc := trace.NewSyncClient(nil)
|
||||||
|
|
||||||
|
{
|
||||||
|
mockClient := mock_otlptrace.NewMockClient(ctrl)
|
||||||
|
start := mockClient.EXPECT().
|
||||||
|
Start(gomock.Any()).
|
||||||
|
Return(nil)
|
||||||
|
mockClient.EXPECT().
|
||||||
|
Stop(gomock.Any()).
|
||||||
|
Return(nil).
|
||||||
|
After(start)
|
||||||
|
assert.NoError(t, sc.Update(context.Background(), mockClient))
|
||||||
|
}
|
||||||
|
|
||||||
|
sc.Update(context.Background(), nil)
|
||||||
|
assert.ErrorIs(t, sc.UploadTraces(context.Background(), []*tracev1.ResourceSpans{}), trace.ErrNoClient)
|
||||||
|
})
|
||||||
|
|
||||||
spinWait := func(counter *atomic.Int32, until int32) error {
|
spinWait := func(counter *atomic.Int32, until int32) error {
|
||||||
startTime := time.Now()
|
startTime := time.Now()
|
||||||
for counter.Load() != until {
|
for counter.Load() != until {
|
||||||
|
@ -257,6 +304,9 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
grpcEndpoint := receiver.GRPCEndpointURL()
|
grpcEndpoint := receiver.GRPCEndpointURL()
|
||||||
httpEndpoint := receiver.HTTPEndpointURL()
|
httpEndpoint := receiver.HTTPEndpointURL()
|
||||||
|
|
||||||
|
emptyConfigFilePath := filepath.Join(env.TempDir(), "empty_config.yaml")
|
||||||
|
require.NoError(t, os.WriteFile(emptyConfigFilePath, []byte("{}"), 0o644))
|
||||||
|
|
||||||
env.Start()
|
env.Start()
|
||||||
snippets.WaitStartupComplete(env)
|
snippets.WaitStartupComplete(env)
|
||||||
|
|
||||||
|
@ -266,6 +316,7 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
newClientErr string
|
newClientErr string
|
||||||
uploadErr bool
|
uploadErr bool
|
||||||
expectNoSpans bool
|
expectNoSpans bool
|
||||||
|
expectHeaders map[string][]string
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "GRPC endpoint, auto protocol",
|
name: "GRPC endpoint, auto protocol",
|
||||||
|
@ -344,7 +395,7 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
env: map[string]string{
|
env: map[string]string{
|
||||||
"OTEL_TRACES_EXPORTER": "invalid",
|
"OTEL_TRACES_EXPORTER": "invalid",
|
||||||
},
|
},
|
||||||
newClientErr: `unknown otlp trace exporter "invalid", expected "otlp" or "none"`,
|
newClientErr: `unknown otlp trace exporter "invalid", expected one of ["otlp", "none"]`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "invalid protocol",
|
name: "invalid protocol",
|
||||||
|
@ -353,7 +404,7 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": grpcEndpoint.Value(),
|
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": grpcEndpoint.Value(),
|
||||||
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "invalid",
|
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "invalid",
|
||||||
},
|
},
|
||||||
newClientErr: `unknown otlp trace exporter protocol "invalid", expected "grpc" or "http/protobuf"`,
|
newClientErr: `unknown otlp trace exporter protocol "invalid", expected one of ["grpc", "http/protobuf"]`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "valid configuration, but sdk disabled",
|
name: "valid configuration, but sdk disabled",
|
||||||
|
@ -392,25 +443,62 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
"OTEL_EXPORTER_OTLP_ENDPOINT": grpcEndpoint.Value(),
|
"OTEL_EXPORTER_OTLP_ENDPOINT": grpcEndpoint.Value(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "valid exporter, trace headers",
|
||||||
|
env: map[string]string{
|
||||||
|
"OTEL_TRACES_EXPORTER": "otlp",
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": httpEndpoint.Value(),
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "http/protobuf",
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_HEADERS": "foo=bar,bar=baz",
|
||||||
|
},
|
||||||
|
expectHeaders: map[string][]string{
|
||||||
|
"foo": {"bar"},
|
||||||
|
"bar": {"baz"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "valid exporter, alt headers",
|
||||||
|
env: map[string]string{
|
||||||
|
"OTEL_TRACES_EXPORTER": "otlp",
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": httpEndpoint.Value(),
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "http/protobuf",
|
||||||
|
"OTEL_EXPORTER_OTLP_HEADERS": "foo=bar,bar=baz",
|
||||||
|
},
|
||||||
|
expectHeaders: map[string][]string{
|
||||||
|
"foo": {"bar"},
|
||||||
|
"bar": {"baz"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "headers variable precedence",
|
||||||
|
env: map[string]string{
|
||||||
|
"OTEL_TRACES_EXPORTER": "otlp",
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT": httpEndpoint.Value(),
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_PROTOCOL": "http/protobuf",
|
||||||
|
"OTEL_EXPORTER_OTLP_HEADERS": "a=1,b=2,c=3",
|
||||||
|
"OTEL_EXPORTER_OTLP_TRACES_HEADERS": "a=2,d=4",
|
||||||
|
},
|
||||||
|
expectHeaders: map[string][]string{
|
||||||
|
"a": {"2"},
|
||||||
|
"d": {"4"},
|
||||||
|
},
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
for k, v := range tc.env {
|
for k, v := range tc.env {
|
||||||
t.Setenv(k, v)
|
t.Setenv(k, v)
|
||||||
}
|
}
|
||||||
handler := &errHandler{}
|
cfg, err := config.NewFileOrEnvironmentSource(context.Background(), emptyConfigFilePath, version.FullVersion())
|
||||||
oldErrHandler := otel.GetErrorHandler()
|
require.NoError(t, err)
|
||||||
otel.SetErrorHandler(handler)
|
|
||||||
t.Cleanup(func() { otel.SetErrorHandler(oldErrHandler) })
|
|
||||||
|
|
||||||
remoteClient := trace.NewRemoteClientFromEnv()
|
|
||||||
ctx := trace.Options{
|
|
||||||
RemoteClient: remoteClient,
|
|
||||||
}.NewContext(log.Ctx(env.Context()).WithContext(context.Background()))
|
|
||||||
|
|
||||||
|
remoteClient, err := trace.NewTraceClientFromConfig(cfg.GetConfig().Options.Tracing)
|
||||||
if tc.newClientErr != "" {
|
if tc.newClientErr != "" {
|
||||||
assert.ErrorContains(t, handler.err, tc.newClientErr)
|
assert.ErrorContains(t, err, tc.newClientErr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
ctx := trace.NewContext(log.Ctx(env.Context()).WithContext(context.Background()), remoteClient)
|
||||||
|
|
||||||
tp := trace.NewTracerProvider(ctx, t.Name())
|
tp := trace.NewTracerProvider(ctx, t.Name())
|
||||||
|
|
||||||
|
@ -424,6 +512,11 @@ func TestNewRemoteClientFromEnv(t *testing.T) {
|
||||||
}
|
}
|
||||||
assert.NoError(t, trace.ShutdownContext(ctx))
|
assert.NoError(t, trace.ShutdownContext(ctx))
|
||||||
|
|
||||||
|
if tc.expectHeaders != nil {
|
||||||
|
for _, req := range receiver.ReceivedRequests() {
|
||||||
|
assert.Subset(t, req.Metadata, tc.expectHeaders, "missing expected headers")
|
||||||
|
}
|
||||||
|
}
|
||||||
results := NewTraceResults(receiver.FlushResourceSpans())
|
results := NewTraceResults(receiver.FlushResourceSpans())
|
||||||
if tc.expectNoSpans {
|
if tc.expectNoSpans {
|
||||||
results.MatchTraces(t, MatchOptions{Exact: true})
|
results.MatchTraces(t, MatchOptions{Exact: true})
|
||||||
|
|
|
@ -3,6 +3,7 @@ package trace
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -41,7 +42,7 @@ type ExporterServer struct {
|
||||||
func NewServer(ctx context.Context) *ExporterServer {
|
func NewServer(ctx context.Context) *ExporterServer {
|
||||||
sys := systemContextFromContext(ctx)
|
sys := systemContextFromContext(ctx)
|
||||||
ex := &ExporterServer{
|
ex := &ExporterServer{
|
||||||
remoteClient: sys.options.RemoteClient,
|
remoteClient: sys.remoteClient,
|
||||||
observer: sys.observer,
|
observer: sys.observer,
|
||||||
server: grpc.NewServer(grpc.Creds(insecure.NewCredentials())),
|
server: grpc.NewServer(grpc.Creds(insecure.NewCredentials())),
|
||||||
}
|
}
|
||||||
|
@ -53,7 +54,9 @@ func (srv *ExporterServer) Start(ctx context.Context) {
|
||||||
lis := bufconn.Listen(2 * 1024 * 1024)
|
lis := bufconn.Listen(2 * 1024 * 1024)
|
||||||
go func() {
|
go func() {
|
||||||
if err := srv.remoteClient.Start(ctx); err != nil {
|
if err := srv.remoteClient.Start(ctx); err != nil {
|
||||||
panic(err)
|
if !errors.Is(err, ErrNoClient) {
|
||||||
|
panic(fmt.Errorf("bug: %w", err))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_ = srv.server.Serve(lis)
|
_ = srv.server.Serve(lis)
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -19,20 +19,20 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type Options struct {
|
type Options struct {
|
||||||
DebugFlags DebugFlags
|
DebugFlags DebugFlags
|
||||||
RemoteClient otlptrace.Client
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (op Options) NewContext(parent context.Context) context.Context {
|
func (op Options) NewContext(parent context.Context, remoteClient otlptrace.Client) context.Context {
|
||||||
if systemContextFromContext(parent) != nil {
|
if systemContextFromContext(parent) != nil {
|
||||||
panic("parent already contains trace system context")
|
panic("parent already contains trace system context")
|
||||||
}
|
}
|
||||||
if op.RemoteClient == nil {
|
if remoteClient == nil {
|
||||||
op.RemoteClient = NewRemoteClientFromEnv()
|
panic("remoteClient cannot be nil (use trace.NoopClient instead)")
|
||||||
}
|
}
|
||||||
sys := &systemContext{
|
sys := &systemContext{
|
||||||
options: op,
|
options: op,
|
||||||
tpm: &tracerProviderManager{},
|
remoteClient: remoteClient,
|
||||||
|
tpm: &tracerProviderManager{},
|
||||||
}
|
}
|
||||||
if op.DebugFlags.Check(TrackSpanReferences) {
|
if op.DebugFlags.Check(TrackSpanReferences) {
|
||||||
sys.observer = newSpanObserver()
|
sys.observer = newSpanObserver()
|
||||||
|
@ -52,8 +52,8 @@ func (op Options) NewContext(parent context.Context) context.Context {
|
||||||
// The parent context should be context.Background(), or a background context
|
// The parent context should be context.Background(), or a background context
|
||||||
// containing a logger. If any context in the parent's hierarchy was created
|
// containing a logger. If any context in the parent's hierarchy was created
|
||||||
// by NewContext, this will panic.
|
// by NewContext, this will panic.
|
||||||
func NewContext(parent context.Context) context.Context {
|
func NewContext(parent context.Context, remoteClient otlptrace.Client) context.Context {
|
||||||
return Options{}.NewContext(parent)
|
return Options{}.NewContext(parent, remoteClient)
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewTracerProvider creates a new [trace.TracerProvider] with the given service
|
// NewTracerProvider creates a new [trace.TracerProvider] with the given service
|
||||||
|
@ -154,7 +154,7 @@ func ExporterServerFromContext(ctx context.Context) coltracepb.TraceServiceServe
|
||||||
|
|
||||||
func RemoteClientFromContext(ctx context.Context) otlptrace.Client {
|
func RemoteClientFromContext(ctx context.Context) otlptrace.Client {
|
||||||
if sys := systemContextFromContext(ctx); sys != nil {
|
if sys := systemContextFromContext(ctx); sys != nil {
|
||||||
return sys.options.RemoteClient
|
return sys.remoteClient
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -178,6 +178,7 @@ var systemContextKey systemContextKeyType
|
||||||
|
|
||||||
type systemContext struct {
|
type systemContext struct {
|
||||||
options Options
|
options Options
|
||||||
|
remoteClient otlptrace.Client
|
||||||
tpm *tracerProviderManager
|
tpm *tracerProviderManager
|
||||||
observer *spanObserver
|
observer *spanObserver
|
||||||
exporterServer *ExporterServer
|
exporterServer *ExporterServer
|
||||||
|
|
|
@ -323,6 +323,7 @@ func New(t testing.TB, opts ...EnvironmentOption) Environment {
|
||||||
pauseOnFailure: *flagPauseOnFailure,
|
pauseOnFailure: *flagPauseOnFailure,
|
||||||
forceSilent: *flagSilent,
|
forceSilent: *flagSilent,
|
||||||
traceDebugFlags: trace.DebugFlags(defaultTraceDebugFlags),
|
traceDebugFlags: trace.DebugFlags(defaultTraceDebugFlags),
|
||||||
|
traceClient: trace.NoopClient{},
|
||||||
}
|
}
|
||||||
options.apply(opts...)
|
options.apply(opts...)
|
||||||
if testing.Short() {
|
if testing.Short() {
|
||||||
|
@ -368,9 +369,8 @@ func New(t testing.TB, opts ...EnvironmentOption) Environment {
|
||||||
logger := zerolog.New(writer).With().Timestamp().Logger().Level(zerolog.DebugLevel)
|
logger := zerolog.New(writer).With().Timestamp().Logger().Level(zerolog.DebugLevel)
|
||||||
|
|
||||||
ctx := trace.Options{
|
ctx := trace.Options{
|
||||||
DebugFlags: options.traceDebugFlags,
|
DebugFlags: options.traceDebugFlags,
|
||||||
RemoteClient: options.traceClient,
|
}.NewContext(logger.WithContext(context.Background()), options.traceClient)
|
||||||
}.NewContext(logger.WithContext(context.Background()))
|
|
||||||
tracerProvider := trace.NewTracerProvider(ctx, "Test Environment")
|
tracerProvider := trace.NewTracerProvider(ctx, "Test Environment")
|
||||||
tracer := tracerProvider.Tracer(trace.PomeriumCoreTracer)
|
tracer := tracerProvider.Tracer(trace.PomeriumCoreTracer)
|
||||||
ctx, span := tracer.Start(ctx, t.Name(), oteltrace.WithNewRoot())
|
ctx, span := tracer.Start(ctx, t.Name(), oteltrace.WithNewRoot())
|
||||||
|
|
|
@ -19,14 +19,29 @@ import (
|
||||||
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
|
||||||
coltracepb "go.opentelemetry.io/proto/otlp/collector/trace/v1"
|
coltracepb "go.opentelemetry.io/proto/otlp/collector/trace/v1"
|
||||||
tracev1 "go.opentelemetry.io/proto/otlp/trace/v1"
|
tracev1 "go.opentelemetry.io/proto/otlp/trace/v1"
|
||||||
|
"google.golang.org/grpc/metadata"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type RecordedExportRequest struct {
|
||||||
|
Request *coltracepb.ExportTraceServiceRequest
|
||||||
|
Metadata map[string][]string
|
||||||
|
}
|
||||||
|
type RecordedExportRequests []RecordedExportRequest
|
||||||
|
|
||||||
|
func (s RecordedExportRequests) AsExportTraceServiceRequests() []*coltracepb.ExportTraceServiceRequest {
|
||||||
|
out := make([]*coltracepb.ExportTraceServiceRequest, len(s))
|
||||||
|
for i, v := range s {
|
||||||
|
out[i] = v.Request
|
||||||
|
}
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
type OTLPTraceReceiver struct {
|
type OTLPTraceReceiver struct {
|
||||||
coltracepb.UnimplementedTraceServiceServer
|
coltracepb.UnimplementedTraceServiceServer
|
||||||
|
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
receivedRequests []*coltracepb.ExportTraceServiceRequest
|
receivedRequests RecordedExportRequests
|
||||||
grpcUpstream values.MutableValue[upstreams.GRPCUpstream]
|
grpcUpstream values.MutableValue[upstreams.GRPCUpstream]
|
||||||
httpUpstream values.MutableValue[upstreams.HTTPUpstream]
|
httpUpstream values.MutableValue[upstreams.HTTPUpstream]
|
||||||
}
|
}
|
||||||
|
@ -39,10 +54,14 @@ func NewOTLPTraceReceiver() *OTLPTraceReceiver {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Export implements v1.TraceServiceServer.
|
// Export implements v1.TraceServiceServer.
|
||||||
func (rec *OTLPTraceReceiver) Export(_ context.Context, req *coltracepb.ExportTraceServiceRequest) (*coltracepb.ExportTraceServiceResponse, error) {
|
func (rec *OTLPTraceReceiver) Export(ctx context.Context, req *coltracepb.ExportTraceServiceRequest) (*coltracepb.ExportTraceServiceResponse, error) {
|
||||||
rec.mu.Lock()
|
rec.mu.Lock()
|
||||||
defer rec.mu.Unlock()
|
defer rec.mu.Unlock()
|
||||||
rec.receivedRequests = append(rec.receivedRequests, req)
|
md, _ := metadata.FromIncomingContext(ctx)
|
||||||
|
rec.receivedRequests = append(rec.receivedRequests, RecordedExportRequest{
|
||||||
|
Request: req,
|
||||||
|
Metadata: md,
|
||||||
|
})
|
||||||
return &coltracepb.ExportTraceServiceResponse{}, nil
|
return &coltracepb.ExportTraceServiceResponse{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,8 +95,9 @@ func (rec *OTLPTraceReceiver) Attach(ctx context.Context) {
|
||||||
|
|
||||||
// Modify implements testenv.Modifier.
|
// Modify implements testenv.Modifier.
|
||||||
func (rec *OTLPTraceReceiver) Modify(cfg *config.Config) {
|
func (rec *OTLPTraceReceiver) Modify(cfg *config.Config) {
|
||||||
cfg.Options.TracingProvider = "otlp"
|
cfg.Options.Tracing.OtelTracesExporter = proto.String("otlp")
|
||||||
cfg.Options.TracingOTLPEndpoint = rec.GRPCEndpointURL().Value()
|
cfg.Options.Tracing.OtelExporterOtlpTracesEndpoint = proto.String(rec.GRPCEndpointURL().Value())
|
||||||
|
cfg.Options.Tracing.OtelExporterOtlpTracesProtocol = proto.String("grpc")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rec *OTLPTraceReceiver) handleV1Traces(w http.ResponseWriter, r *http.Request) {
|
func (rec *OTLPTraceReceiver) handleV1Traces(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -108,7 +128,8 @@ func (rec *OTLPTraceReceiver) handleV1Traces(w http.ResponseWriter, r *http.Requ
|
||||||
_, _ = w.Write([]byte(err.Error()))
|
_, _ = w.Write([]byte(err.Error()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
resp, err := rec.Export(context.TODO(), &req)
|
|
||||||
|
resp, err := rec.Export(metadata.NewIncomingContext(r.Context(), metadata.MD(r.Header)), &req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
_, _ = w.Write([]byte(err.Error()))
|
_, _ = w.Write([]byte(err.Error()))
|
||||||
|
@ -125,7 +146,7 @@ func (rec *OTLPTraceReceiver) handleV1Traces(w http.ResponseWriter, r *http.Requ
|
||||||
_, _ = w.Write(respData)
|
_, _ = w.Write(respData)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rec *OTLPTraceReceiver) ReceivedRequests() []*coltracepb.ExportTraceServiceRequest {
|
func (rec *OTLPTraceReceiver) ReceivedRequests() []RecordedExportRequest {
|
||||||
rec.mu.Lock()
|
rec.mu.Lock()
|
||||||
defer rec.mu.Unlock()
|
defer rec.mu.Unlock()
|
||||||
return rec.receivedRequests
|
return rec.receivedRequests
|
||||||
|
@ -139,7 +160,7 @@ func (rec *OTLPTraceReceiver) PeekResourceSpans() []*tracev1.ResourceSpans {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rec *OTLPTraceReceiver) peekResourceSpansLocked() []*tracev1.ResourceSpans {
|
func (rec *OTLPTraceReceiver) peekResourceSpansLocked() []*tracev1.ResourceSpans {
|
||||||
return tracetest.FlattenExportRequests(rec.receivedRequests)
|
return tracetest.FlattenExportRequests(rec.receivedRequests.AsExportTraceServiceRequests())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (rec *OTLPTraceReceiver) FlushResourceSpans() []*tracev1.ResourceSpans {
|
func (rec *OTLPTraceReceiver) FlushResourceSpans() []*tracev1.ResourceSpans {
|
||||||
|
|
|
@ -6,7 +6,6 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"maps"
|
"maps"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
|
||||||
"slices"
|
"slices"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"testing"
|
"testing"
|
||||||
|
@ -30,25 +29,6 @@ import (
|
||||||
. "github.com/pomerium/pomerium/internal/testutil/tracetest" //nolint:revive
|
. "github.com/pomerium/pomerium/internal/testutil/tracetest" //nolint:revive
|
||||||
)
|
)
|
||||||
|
|
||||||
func otlpTraceReceiverOrFromEnv(t *testing.T) (modifier testenv.Modifier, newRemoteClient func() otlptrace.Client, getResults func() *TraceResults) {
|
|
||||||
t.Setenv("OTEL_TRACES_EXPORTER", "otlp")
|
|
||||||
tracesEndpoint := os.Getenv("OTEL_EXPORTER_OTLP_TRACES_ENDPOINT")
|
|
||||||
if tracesEndpoint == "" {
|
|
||||||
tracesEndpoint = os.Getenv("OTEL_EXPORTER_OTLP_ENDPOINT")
|
|
||||||
if tracesEndpoint == "" {
|
|
||||||
srv := scenarios.NewOTLPTraceReceiver()
|
|
||||||
return srv,
|
|
||||||
func() otlptrace.Client {
|
|
||||||
return srv.NewGRPCClient()
|
|
||||||
},
|
|
||||||
func() *TraceResults {
|
|
||||||
return NewTraceResults(srv.FlushResourceSpans())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return testenv.NoopModifier(), trace.NewRemoteClientFromEnv, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var allServices = []string{
|
var allServices = []string{
|
||||||
"Test Environment",
|
"Test Environment",
|
||||||
"Authorize",
|
"Authorize",
|
||||||
|
@ -63,9 +43,9 @@ var allServices = []string{
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestOTLPTracing(t *testing.T) {
|
func TestOTLPTracing(t *testing.T) {
|
||||||
modifier, newRemoteClient, getResults := otlpTraceReceiverOrFromEnv(t)
|
srv := scenarios.NewOTLPTraceReceiver()
|
||||||
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags), testenv.WithTraceClient(newRemoteClient()))
|
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags), testenv.WithTraceClient(srv.NewGRPCClient()))
|
||||||
env.Add(modifier)
|
env.Add(srv)
|
||||||
|
|
||||||
up := upstreams.HTTP(nil, upstreams.WithDisplayName("Upstream"))
|
up := upstreams.HTTP(nil, upstreams.WithDisplayName("Upstream"))
|
||||||
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
||||||
|
@ -99,40 +79,38 @@ func TestOTLPTracing(t *testing.T) {
|
||||||
|
|
||||||
env.Stop()
|
env.Stop()
|
||||||
|
|
||||||
if getResults != nil {
|
results := NewTraceResults(srv.FlushResourceSpans())
|
||||||
results := getResults()
|
var (
|
||||||
var (
|
testEnvironmentLocalTest = fmt.Sprintf("Test Environment: %s", t.Name())
|
||||||
testEnvironmentLocalTest = fmt.Sprintf("Test Environment: %s", t.Name())
|
testEnvironmentAuthenticate = "Test Environment: Authenticate"
|
||||||
testEnvironmentAuthenticate = "Test Environment: Authenticate"
|
authenticateOAuth2Client = "Authenticate: OAuth2 Client: GET /.well-known/jwks.json"
|
||||||
authenticateOAuth2Client = "Authenticate: OAuth2 Client: GET /.well-known/jwks.json"
|
idpServerGetUserinfo = "IDP: Server: GET /oidc/userinfo"
|
||||||
idpServerGetUserinfo = "IDP: Server: GET /oidc/userinfo"
|
idpServerPostToken = "IDP: Server: POST /oidc/token"
|
||||||
idpServerPostToken = "IDP: Server: POST /oidc/token"
|
controlPlaneEnvoyAccessLogs = "Control Plane: envoy.service.accesslog.v3.AccessLogService/StreamAccessLogs"
|
||||||
controlPlaneEnvoyAccessLogs = "Control Plane: envoy.service.accesslog.v3.AccessLogService/StreamAccessLogs"
|
controlPlaneEnvoyDiscovery = "Control Plane: envoy.service.discovery.v3.AggregatedDiscoveryService/DeltaAggregatedResources"
|
||||||
controlPlaneEnvoyDiscovery = "Control Plane: envoy.service.discovery.v3.AggregatedDiscoveryService/DeltaAggregatedResources"
|
controlPlaneExport = "Control Plane: opentelemetry.proto.collector.trace.v1.TraceService/Export"
|
||||||
controlPlaneExport = "Control Plane: opentelemetry.proto.collector.trace.v1.TraceService/Export"
|
)
|
||||||
)
|
|
||||||
|
|
||||||
results.MatchTraces(t,
|
results.MatchTraces(t,
|
||||||
MatchOptions{
|
MatchOptions{
|
||||||
Exact: true,
|
Exact: true,
|
||||||
CheckDetachedSpans: true,
|
CheckDetachedSpans: true,
|
||||||
},
|
},
|
||||||
Match{Name: testEnvironmentLocalTest, TraceCount: 1, Services: []string{"Authorize", "Test Environment", "Control Plane", "Data Broker"}},
|
Match{Name: testEnvironmentLocalTest, TraceCount: 1, Services: []string{"Authorize", "Test Environment", "Control Plane", "Data Broker"}},
|
||||||
Match{Name: testEnvironmentAuthenticate, TraceCount: 1, Services: allServices},
|
Match{Name: testEnvironmentAuthenticate, TraceCount: 1, Services: allServices},
|
||||||
Match{Name: authenticateOAuth2Client, TraceCount: Greater(0)},
|
Match{Name: authenticateOAuth2Client, TraceCount: Greater(0)},
|
||||||
Match{Name: idpServerGetUserinfo, TraceCount: EqualToMatch(authenticateOAuth2Client)},
|
Match{Name: idpServerGetUserinfo, TraceCount: EqualToMatch(authenticateOAuth2Client)},
|
||||||
Match{Name: idpServerPostToken, TraceCount: EqualToMatch(authenticateOAuth2Client)},
|
Match{Name: idpServerPostToken, TraceCount: EqualToMatch(authenticateOAuth2Client)},
|
||||||
Match{Name: controlPlaneEnvoyDiscovery, TraceCount: 1},
|
Match{Name: controlPlaneEnvoyDiscovery, TraceCount: 1},
|
||||||
Match{Name: controlPlaneExport, TraceCount: Greater(0)},
|
Match{Name: controlPlaneExport, TraceCount: Greater(0)},
|
||||||
Match{Name: controlPlaneEnvoyAccessLogs, TraceCount: Any{}},
|
Match{Name: controlPlaneEnvoyAccessLogs, TraceCount: Any{}},
|
||||||
)
|
)
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestOTLPTracing_TraceCorrelation(t *testing.T) {
|
func TestOTLPTracing_TraceCorrelation(t *testing.T) {
|
||||||
modifier, newRemoteClient, getResults := otlpTraceReceiverOrFromEnv(t)
|
srv := scenarios.NewOTLPTraceReceiver()
|
||||||
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags), testenv.WithTraceClient(newRemoteClient()))
|
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags), testenv.WithTraceClient(srv.NewGRPCClient()))
|
||||||
env.Add(modifier)
|
env.Add(srv)
|
||||||
|
|
||||||
up := upstreams.HTTP(nil, upstreams.WithDisplayName("Upstream"), upstreams.WithNoClientTracing())
|
up := upstreams.HTTP(nil, upstreams.WithDisplayName("Upstream"), upstreams.WithNoClientTracing())
|
||||||
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
||||||
|
@ -163,40 +141,37 @@ func TestOTLPTracing_TraceCorrelation(t *testing.T) {
|
||||||
assert.Equal(t, "OK", string(body))
|
assert.Equal(t, "OK", string(body))
|
||||||
|
|
||||||
env.Stop()
|
env.Stop()
|
||||||
if getResults != nil {
|
results := NewTraceResults(srv.FlushResourceSpans())
|
||||||
results := getResults()
|
traces := results.GetTraces()
|
||||||
traces := results.GetTraces()
|
// one unauthenticated (ends in /.pomerium/callback redirect), one authenticated
|
||||||
// one unauthenticated (ends in /.pomerium/callback redirect), one authenticated
|
assert.Len(t, traces.ByName[fmt.Sprintf("Envoy: ingress: GET foo.localhost.pomerium.io:%d/foo", env.Ports().ProxyHTTP.Value())].WithoutErrors(), 2)
|
||||||
assert.Len(t, traces.ByName[fmt.Sprintf("Envoy: ingress: GET foo.localhost.pomerium.io:%d/foo", env.Ports().ProxyHTTP.Value())].WithoutErrors(), 2)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type SamplingTestSuite struct {
|
type SamplingTestSuite struct {
|
||||||
suite.Suite
|
suite.Suite
|
||||||
env testenv.Environment
|
env testenv.Environment
|
||||||
getResults func() *TraceResults
|
receiver *scenarios.OTLPTraceReceiver
|
||||||
route testenv.Route
|
route testenv.Route
|
||||||
upstream upstreams.HTTPUpstream
|
upstream upstreams.HTTPUpstream
|
||||||
|
|
||||||
sampled atomic.Int32
|
sampled atomic.Int32
|
||||||
notSampled atomic.Int32
|
notSampled atomic.Int32
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SamplingTestSuite) SetupTest() {
|
func (s *SamplingTestSuite) SetupTest() {
|
||||||
modifier, newRemoteClient, getResults := otlpTraceReceiverOrFromEnv(s.T())
|
s.receiver = scenarios.NewOTLPTraceReceiver()
|
||||||
s.getResults = getResults
|
|
||||||
s.env = testenv.New(s.T(),
|
s.env = testenv.New(s.T(),
|
||||||
testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags|trace.EnvoyFlushEverySpan),
|
testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags|trace.EnvoyFlushEverySpan),
|
||||||
testenv.WithTraceClient(newRemoteClient()),
|
testenv.WithTraceClient(s.receiver.NewGRPCClient()),
|
||||||
)
|
)
|
||||||
s.env.Add(modifier)
|
s.env.Add(s.receiver)
|
||||||
|
|
||||||
s.sampled.Store(0)
|
s.sampled.Store(0)
|
||||||
s.notSampled.Store(0)
|
s.notSampled.Store(0)
|
||||||
|
|
||||||
s.env.Add(testenv.ModifierFunc(func(_ context.Context, cfg *config.Config) {
|
s.env.Add(testenv.ModifierFunc(func(_ context.Context, cfg *config.Config) {
|
||||||
half := 0.5
|
half := 0.5
|
||||||
cfg.Options.TracingSampleRate = &half
|
cfg.Options.Tracing.OtelTracesSamplerArg = &half
|
||||||
}))
|
}))
|
||||||
s.env.Add(scenarios.NewIDP([]*scenarios.User{
|
s.env.Add(scenarios.NewIDP([]*scenarios.User{
|
||||||
{
|
{
|
||||||
|
@ -258,11 +233,9 @@ func (s *SamplingTestSuite) TestNoExternalTraceparent() {
|
||||||
// Ideally we get ~50% sample rate, but CI will always be unlucky.
|
// Ideally we get ~50% sample rate, but CI will always be unlucky.
|
||||||
s.Assert().Greater(s.notSampled.Load(), int32(0))
|
s.Assert().Greater(s.notSampled.Load(), int32(0))
|
||||||
|
|
||||||
if s.getResults != nil {
|
results := NewTraceResults(s.receiver.FlushResourceSpans())
|
||||||
results := s.getResults()
|
traces := results.GetTraces()
|
||||||
traces := results.GetTraces()
|
s.Assert().Len(traces.ByParticipant["Upstream"], 20)
|
||||||
s.Assert().Len(traces.ByParticipant["Upstream"], 20)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SamplingTestSuite) TestExternalTraceparentAlwaysSample() {
|
func (s *SamplingTestSuite) TestExternalTraceparentAlwaysSample() {
|
||||||
|
@ -282,11 +255,9 @@ func (s *SamplingTestSuite) TestExternalTraceparentAlwaysSample() {
|
||||||
s.Assert().Equal(int32(100), s.sampled.Load())
|
s.Assert().Equal(int32(100), s.sampled.Load())
|
||||||
s.Assert().Equal(int32(0), s.notSampled.Load())
|
s.Assert().Equal(int32(0), s.notSampled.Load())
|
||||||
|
|
||||||
if s.getResults != nil {
|
results := NewTraceResults(s.receiver.FlushResourceSpans())
|
||||||
results := s.getResults()
|
traces := results.GetTraces()
|
||||||
traces := results.GetTraces()
|
s.Assert().Len(traces.ByParticipant["Envoy"], 100)
|
||||||
s.Assert().Len(traces.ByParticipant["Envoy"], 100)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SamplingTestSuite) TestExternalTraceparentNeverSample() {
|
func (s *SamplingTestSuite) TestExternalTraceparentNeverSample() {
|
||||||
|
@ -303,22 +274,20 @@ func (s *SamplingTestSuite) TestExternalTraceparentNeverSample() {
|
||||||
s.Assert().Equal(int32(0), s.sampled.Load())
|
s.Assert().Equal(int32(0), s.sampled.Load())
|
||||||
s.Assert().Equal(int32(100), s.notSampled.Load())
|
s.Assert().Equal(int32(100), s.notSampled.Load())
|
||||||
|
|
||||||
if s.getResults != nil {
|
results := NewTraceResults(s.receiver.FlushResourceSpans())
|
||||||
results := s.getResults()
|
traces := results.GetTraces()
|
||||||
traces := results.GetTraces()
|
if (len(traces.ByParticipant)) != 0 {
|
||||||
if (len(traces.ByParticipant)) != 0 {
|
// whether or not these show up is timing dependent, but not important
|
||||||
// whether or not these show up is timing dependent, but not important
|
possibleTraces := map[string]struct{}{
|
||||||
possibleTraces := map[string]struct{}{
|
"Test Environment: Start": {},
|
||||||
"Test Environment: Start": {},
|
"IDP: Server: POST /oidc/token": {},
|
||||||
"IDP: Server: POST /oidc/token": {},
|
"IDP: Server: GET /oidc/userinfo": {},
|
||||||
"IDP: Server: GET /oidc/userinfo": {},
|
"Authenticate: OAuth2 Client: GET /.well-known/jwks.json": {},
|
||||||
"Authenticate: OAuth2 Client: GET /.well-known/jwks.json": {},
|
}
|
||||||
}
|
actual := slices.Collect(maps.Keys(traces.ByName))
|
||||||
actual := slices.Collect(maps.Keys(traces.ByName))
|
for _, name := range actual {
|
||||||
for _, name := range actual {
|
if _, ok := possibleTraces[name]; !ok {
|
||||||
if _, ok := possibleTraces[name]; !ok {
|
s.Fail("unexpected trace: " + name)
|
||||||
s.Fail("unexpected trace: " + name)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -329,10 +298,10 @@ func TestSampling(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestExternalSpans(t *testing.T) {
|
func TestExternalSpans(t *testing.T) {
|
||||||
modifier, newRemoteClient, getResults := otlpTraceReceiverOrFromEnv(t)
|
srv := scenarios.NewOTLPTraceReceiver()
|
||||||
|
|
||||||
// set up external tracer
|
// set up external tracer
|
||||||
external := otlptrace.NewUnstarted(newRemoteClient())
|
external := otlptrace.NewUnstarted(srv.NewGRPCClient())
|
||||||
r, err := resource.Merge(
|
r, err := resource.Merge(
|
||||||
resource.Empty(),
|
resource.Empty(),
|
||||||
resource.NewWithAttributes(
|
resource.NewWithAttributes(
|
||||||
|
@ -344,8 +313,8 @@ func TestExternalSpans(t *testing.T) {
|
||||||
|
|
||||||
externalTracerProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(external), sdktrace.WithResource(r))
|
externalTracerProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(external), sdktrace.WithResource(r))
|
||||||
|
|
||||||
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags|trace.EnvoyFlushEverySpan), testenv.WithTraceClient(newRemoteClient()))
|
env := testenv.New(t, testenv.WithTraceDebugFlags(testenv.StandardTraceDebugFlags|trace.EnvoyFlushEverySpan), testenv.WithTraceClient(srv.NewGRPCClient()))
|
||||||
env.Add(modifier)
|
env.Add(srv)
|
||||||
|
|
||||||
up := upstreams.HTTP(nil, upstreams.WithNoClientTracing())
|
up := upstreams.HTTP(nil, upstreams.WithNoClientTracing())
|
||||||
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
up.Handle("/foo", func(w http.ResponseWriter, _ *http.Request) {
|
||||||
|
@ -384,20 +353,18 @@ func TestExternalSpans(t *testing.T) {
|
||||||
assert.NoError(t, external.Shutdown(ctx))
|
assert.NoError(t, external.Shutdown(ctx))
|
||||||
env.Stop()
|
env.Stop()
|
||||||
|
|
||||||
if getResults != nil {
|
results := NewTraceResults(srv.FlushResourceSpans())
|
||||||
results := getResults()
|
results.MatchTraces(t, MatchOptions{CheckDetachedSpans: true},
|
||||||
results.MatchTraces(t, MatchOptions{CheckDetachedSpans: true},
|
Match{Name: "External: External Root", TraceCount: 1, Services: []string{
|
||||||
Match{Name: "External: External Root", TraceCount: 1, Services: []string{
|
"Authorize",
|
||||||
"Authorize",
|
"Authenticate",
|
||||||
"Authenticate",
|
"Control Plane",
|
||||||
"Control Plane",
|
"Data Broker",
|
||||||
"Data Broker",
|
"Proxy",
|
||||||
"Proxy",
|
"IDP",
|
||||||
"IDP",
|
"Envoy",
|
||||||
"Envoy",
|
"External",
|
||||||
"External",
|
"HTTP Upstream",
|
||||||
"HTTP Upstream",
|
}},
|
||||||
}},
|
)
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
|
|
||||||
envoy_service_auth_v3 "github.com/envoyproxy/go-control-plane/envoy/service/auth/v3"
|
envoy_service_auth_v3 "github.com/envoyproxy/go-control-plane/envoy/service/auth/v3"
|
||||||
"go.uber.org/automaxprocs/maxprocs"
|
"go.uber.org/automaxprocs/maxprocs"
|
||||||
|
@ -80,6 +81,7 @@ type Pomerium struct {
|
||||||
Options
|
Options
|
||||||
errGroup *errgroup.Group
|
errGroup *errgroup.Group
|
||||||
|
|
||||||
|
startMu sync.Mutex
|
||||||
cancel context.CancelCauseFunc
|
cancel context.CancelCauseFunc
|
||||||
envoyServer *envoy.Server
|
envoyServer *envoy.Server
|
||||||
}
|
}
|
||||||
|
@ -94,6 +96,8 @@ func New(opts ...Option) *Pomerium {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pomerium) Start(ctx context.Context, tracerProvider oteltrace.TracerProvider, src config.Source) error {
|
func (p *Pomerium) Start(ctx context.Context, tracerProvider oteltrace.TracerProvider, src config.Source) error {
|
||||||
|
p.startMu.Lock()
|
||||||
|
defer p.startMu.Unlock()
|
||||||
updateTraceClient(ctx, src.GetConfig())
|
updateTraceClient(ctx, src.GetConfig())
|
||||||
ctx, p.cancel = context.WithCancelCause(ctx)
|
ctx, p.cancel = context.WithCancelCause(ctx)
|
||||||
_, _ = maxprocs.Set(maxprocs.Logger(func(s string, i ...any) { log.Ctx(ctx).Debug().Msgf(s, i...) }))
|
_, _ = maxprocs.Set(maxprocs.Logger(func(s string, i ...any) { log.Ctx(ctx).Debug().Msgf(s, i...) }))
|
||||||
|
@ -215,9 +219,14 @@ func (p *Pomerium) Start(ctx context.Context, tracerProvider oteltrace.TracerPro
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Pomerium) Shutdown(ctx context.Context) error {
|
func (p *Pomerium) Shutdown(ctx context.Context) error {
|
||||||
_ = trace.WaitForSpans(ctx, p.envoyServer.ExitGracePeriod())
|
p.startMu.Lock()
|
||||||
|
envoyServer := p.envoyServer
|
||||||
|
p.startMu.Unlock()
|
||||||
var errs []error
|
var errs []error
|
||||||
errs = append(errs, p.envoyServer.Close()) // this only errors if signaling envoy fails
|
if envoyServer != nil {
|
||||||
|
_ = trace.WaitForSpans(ctx, p.envoyServer.ExitGracePeriod())
|
||||||
|
errs = append(errs, p.envoyServer.Close()) // this only errors if signaling envoy fails
|
||||||
|
}
|
||||||
p.cancel(ErrShutdown)
|
p.cancel(ErrShutdown)
|
||||||
errs = append(errs, p.Wait())
|
errs = append(errs, p.Wait())
|
||||||
return errors.Join(errs...)
|
return errors.Join(errs...)
|
||||||
|
@ -315,11 +324,7 @@ func updateTraceClient(ctx context.Context, cfg *config.Config) {
|
||||||
if !ok {
|
if !ok {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
newClient, err := config.NewTraceClientFromOptions(cfg.Options)
|
newClient, err := trace.NewTraceClientFromConfig(cfg.Options.Tracing)
|
||||||
if errors.Is(err, config.ErrNoTracingConfig) {
|
|
||||||
newClient = trace.NewRemoteClientFromEnv()
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Ctx(ctx).Warn().Err(err).Msg("error configuring trace client")
|
log.Ctx(ctx).Warn().Err(err).Msg("error configuring trace client")
|
||||||
} else {
|
} else {
|
||||||
|
@ -330,9 +335,13 @@ func updateTraceClient(ctx context.Context, cfg *config.Config) {
|
||||||
Err(err).
|
Err(err).
|
||||||
Msg("error updating trace client")
|
Msg("error updating trace client")
|
||||||
}
|
}
|
||||||
|
provider := "none"
|
||||||
|
if cfg.Options.Tracing.OtelTracesExporter != nil {
|
||||||
|
provider = *cfg.Options.Tracing.OtelTracesExporter
|
||||||
|
}
|
||||||
log.Ctx(ctx).
|
log.Ctx(ctx).
|
||||||
Info().
|
Debug().
|
||||||
Str("provider", cfg.Options.TracingProvider).
|
Str("provider", provider).
|
||||||
Msg("trace client updated")
|
Msg("trace client updated")
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1180,7 +1180,7 @@ func (x *Policy) GetRemediation() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next ID: 122.
|
// Next ID: 136.
|
||||||
type Settings struct {
|
type Settings struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
@ -1229,20 +1229,31 @@ type Settings struct {
|
||||||
SigningKey *string `protobuf:"bytes,36,opt,name=signing_key,json=signingKey,proto3,oneof" json:"signing_key,omitempty"`
|
SigningKey *string `protobuf:"bytes,36,opt,name=signing_key,json=signingKey,proto3,oneof" json:"signing_key,omitempty"`
|
||||||
SetResponseHeaders map[string]string `protobuf:"bytes,69,rep,name=set_response_headers,json=setResponseHeaders,proto3" json:"set_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
SetResponseHeaders map[string]string `protobuf:"bytes,69,rep,name=set_response_headers,json=setResponseHeaders,proto3" json:"set_response_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||||
// repeated string jwt_claims_headers = 37;
|
// repeated string jwt_claims_headers = 37;
|
||||||
JwtClaimsHeaders map[string]string `protobuf:"bytes,63,rep,name=jwt_claims_headers,json=jwtClaimsHeaders,proto3" json:"jwt_claims_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
JwtClaimsHeaders map[string]string `protobuf:"bytes,63,rep,name=jwt_claims_headers,json=jwtClaimsHeaders,proto3" json:"jwt_claims_headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||||
JwtGroupsFilter []string `protobuf:"bytes,119,rep,name=jwt_groups_filter,json=jwtGroupsFilter,proto3" json:"jwt_groups_filter,omitempty"`
|
JwtGroupsFilter []string `protobuf:"bytes,119,rep,name=jwt_groups_filter,json=jwtGroupsFilter,proto3" json:"jwt_groups_filter,omitempty"`
|
||||||
DefaultUpstreamTimeout *durationpb.Duration `protobuf:"bytes,39,opt,name=default_upstream_timeout,json=defaultUpstreamTimeout,proto3,oneof" json:"default_upstream_timeout,omitempty"`
|
DefaultUpstreamTimeout *durationpb.Duration `protobuf:"bytes,39,opt,name=default_upstream_timeout,json=defaultUpstreamTimeout,proto3,oneof" json:"default_upstream_timeout,omitempty"`
|
||||||
MetricsAddress *string `protobuf:"bytes,40,opt,name=metrics_address,json=metricsAddress,proto3,oneof" json:"metrics_address,omitempty"`
|
MetricsAddress *string `protobuf:"bytes,40,opt,name=metrics_address,json=metricsAddress,proto3,oneof" json:"metrics_address,omitempty"`
|
||||||
MetricsBasicAuth *string `protobuf:"bytes,64,opt,name=metrics_basic_auth,json=metricsBasicAuth,proto3,oneof" json:"metrics_basic_auth,omitempty"`
|
MetricsBasicAuth *string `protobuf:"bytes,64,opt,name=metrics_basic_auth,json=metricsBasicAuth,proto3,oneof" json:"metrics_basic_auth,omitempty"`
|
||||||
MetricsCertificate *Settings_Certificate `protobuf:"bytes,65,opt,name=metrics_certificate,json=metricsCertificate,proto3,oneof" json:"metrics_certificate,omitempty"`
|
MetricsCertificate *Settings_Certificate `protobuf:"bytes,65,opt,name=metrics_certificate,json=metricsCertificate,proto3,oneof" json:"metrics_certificate,omitempty"`
|
||||||
MetricsClientCa *string `protobuf:"bytes,66,opt,name=metrics_client_ca,json=metricsClientCa,proto3,oneof" json:"metrics_client_ca,omitempty"`
|
MetricsClientCa *string `protobuf:"bytes,66,opt,name=metrics_client_ca,json=metricsClientCa,proto3,oneof" json:"metrics_client_ca,omitempty"`
|
||||||
TracingProvider *string `protobuf:"bytes,41,opt,name=tracing_provider,json=tracingProvider,proto3,oneof" json:"tracing_provider,omitempty"`
|
OtelTracesExporter *string `protobuf:"bytes,121,opt,name=otel_traces_exporter,json=otelTracesExporter,proto3,oneof" json:"otel_traces_exporter,omitempty"`
|
||||||
TracingSampleRate *float64 `protobuf:"fixed64,42,opt,name=tracing_sample_rate,json=tracingSampleRate,proto3,oneof" json:"tracing_sample_rate,omitempty"`
|
OtelTracesSamplerArg *float64 `protobuf:"fixed64,122,opt,name=otel_traces_sampler_arg,json=otelTracesSamplerArg,proto3,oneof" json:"otel_traces_sampler_arg,omitempty"`
|
||||||
TracingOtlpEndpoint *string `protobuf:"bytes,120,opt,name=tracing_otlp_endpoint,json=tracingOtlpEndpoint,proto3,oneof" json:"tracing_otlp_endpoint,omitempty"`
|
OtelResourceAttributes []string `protobuf:"bytes,123,rep,name=otel_resource_attributes,json=otelResourceAttributes,proto3" json:"otel_resource_attributes,omitempty"`
|
||||||
TracingOtlpProtocol *string `protobuf:"bytes,121,opt,name=tracing_otlp_protocol,json=tracingOtlpProtocol,proto3,oneof" json:"tracing_otlp_protocol,omitempty"`
|
OtelLogLevel *string `protobuf:"bytes,124,opt,name=otel_log_level,json=otelLogLevel,proto3,oneof" json:"otel_log_level,omitempty"`
|
||||||
GrpcAddress *string `protobuf:"bytes,46,opt,name=grpc_address,json=grpcAddress,proto3,oneof" json:"grpc_address,omitempty"`
|
OtelAttributeValueLengthLimit *int32 `protobuf:"varint,125,opt,name=otel_attribute_value_length_limit,json=otelAttributeValueLengthLimit,proto3,oneof" json:"otel_attribute_value_length_limit,omitempty"`
|
||||||
GrpcInsecure *bool `protobuf:"varint,47,opt,name=grpc_insecure,json=grpcInsecure,proto3,oneof" json:"grpc_insecure,omitempty"`
|
OtelExporterOtlpEndpoint *string `protobuf:"bytes,126,opt,name=otel_exporter_otlp_endpoint,json=otelExporterOtlpEndpoint,proto3,oneof" json:"otel_exporter_otlp_endpoint,omitempty"`
|
||||||
GrpcClientTimeout *durationpb.Duration `protobuf:"bytes,99,opt,name=grpc_client_timeout,json=grpcClientTimeout,proto3,oneof" json:"grpc_client_timeout,omitempty"`
|
OtelExporterOtlpTracesEndpoint *string `protobuf:"bytes,127,opt,name=otel_exporter_otlp_traces_endpoint,json=otelExporterOtlpTracesEndpoint,proto3,oneof" json:"otel_exporter_otlp_traces_endpoint,omitempty"`
|
||||||
|
OtelExporterOtlpProtocol *string `protobuf:"bytes,128,opt,name=otel_exporter_otlp_protocol,json=otelExporterOtlpProtocol,proto3,oneof" json:"otel_exporter_otlp_protocol,omitempty"`
|
||||||
|
OtelExporterOtlpTracesProtocol *string `protobuf:"bytes,129,opt,name=otel_exporter_otlp_traces_protocol,json=otelExporterOtlpTracesProtocol,proto3,oneof" json:"otel_exporter_otlp_traces_protocol,omitempty"`
|
||||||
|
OtelExporterOtlpHeaders []string `protobuf:"bytes,130,rep,name=otel_exporter_otlp_headers,json=otelExporterOtlpHeaders,proto3" json:"otel_exporter_otlp_headers,omitempty"`
|
||||||
|
OtelExporterOtlpTracesHeaders []string `protobuf:"bytes,131,rep,name=otel_exporter_otlp_traces_headers,json=otelExporterOtlpTracesHeaders,proto3" json:"otel_exporter_otlp_traces_headers,omitempty"`
|
||||||
|
OtelExporterOtlpTimeout *durationpb.Duration `protobuf:"bytes,132,opt,name=otel_exporter_otlp_timeout,json=otelExporterOtlpTimeout,proto3,oneof" json:"otel_exporter_otlp_timeout,omitempty"`
|
||||||
|
OtelExporterOtlpTracesTimeout *durationpb.Duration `protobuf:"bytes,133,opt,name=otel_exporter_otlp_traces_timeout,json=otelExporterOtlpTracesTimeout,proto3,oneof" json:"otel_exporter_otlp_traces_timeout,omitempty"`
|
||||||
|
OtelBspScheduleDelay *durationpb.Duration `protobuf:"bytes,134,opt,name=otel_bsp_schedule_delay,json=otelBspScheduleDelay,proto3,oneof" json:"otel_bsp_schedule_delay,omitempty"`
|
||||||
|
OtelBspMaxExportBatchSize *int32 `protobuf:"varint,135,opt,name=otel_bsp_max_export_batch_size,json=otelBspMaxExportBatchSize,proto3,oneof" json:"otel_bsp_max_export_batch_size,omitempty"`
|
||||||
|
GrpcAddress *string `protobuf:"bytes,46,opt,name=grpc_address,json=grpcAddress,proto3,oneof" json:"grpc_address,omitempty"`
|
||||||
|
GrpcInsecure *bool `protobuf:"varint,47,opt,name=grpc_insecure,json=grpcInsecure,proto3,oneof" json:"grpc_insecure,omitempty"`
|
||||||
|
GrpcClientTimeout *durationpb.Duration `protobuf:"bytes,99,opt,name=grpc_client_timeout,json=grpcClientTimeout,proto3,oneof" json:"grpc_client_timeout,omitempty"`
|
||||||
// optional string forward_auth_url = 50;
|
// optional string forward_auth_url = 50;
|
||||||
DatabrokerServiceUrls []string `protobuf:"bytes,52,rep,name=databroker_service_urls,json=databrokerServiceUrls,proto3" json:"databroker_service_urls,omitempty"`
|
DatabrokerServiceUrls []string `protobuf:"bytes,52,rep,name=databroker_service_urls,json=databrokerServiceUrls,proto3" json:"databroker_service_urls,omitempty"`
|
||||||
DatabrokerInternalServiceUrl *string `protobuf:"bytes,84,opt,name=databroker_internal_service_url,json=databrokerInternalServiceUrl,proto3,oneof" json:"databroker_internal_service_url,omitempty"`
|
DatabrokerInternalServiceUrl *string `protobuf:"bytes,84,opt,name=databroker_internal_service_url,json=databrokerInternalServiceUrl,proto3,oneof" json:"databroker_internal_service_url,omitempty"`
|
||||||
|
@ -1630,34 +1641,111 @@ func (x *Settings) GetMetricsClientCa() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Settings) GetTracingProvider() string {
|
func (x *Settings) GetOtelTracesExporter() string {
|
||||||
if x != nil && x.TracingProvider != nil {
|
if x != nil && x.OtelTracesExporter != nil {
|
||||||
return *x.TracingProvider
|
return *x.OtelTracesExporter
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Settings) GetTracingSampleRate() float64 {
|
func (x *Settings) GetOtelTracesSamplerArg() float64 {
|
||||||
if x != nil && x.TracingSampleRate != nil {
|
if x != nil && x.OtelTracesSamplerArg != nil {
|
||||||
return *x.TracingSampleRate
|
return *x.OtelTracesSamplerArg
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Settings) GetTracingOtlpEndpoint() string {
|
func (x *Settings) GetOtelResourceAttributes() []string {
|
||||||
if x != nil && x.TracingOtlpEndpoint != nil {
|
if x != nil {
|
||||||
return *x.TracingOtlpEndpoint
|
return x.OtelResourceAttributes
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelLogLevel() string {
|
||||||
|
if x != nil && x.OtelLogLevel != nil {
|
||||||
|
return *x.OtelLogLevel
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *Settings) GetTracingOtlpProtocol() string {
|
func (x *Settings) GetOtelAttributeValueLengthLimit() int32 {
|
||||||
if x != nil && x.TracingOtlpProtocol != nil {
|
if x != nil && x.OtelAttributeValueLengthLimit != nil {
|
||||||
return *x.TracingOtlpProtocol
|
return *x.OtelAttributeValueLengthLimit
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpEndpoint() string {
|
||||||
|
if x != nil && x.OtelExporterOtlpEndpoint != nil {
|
||||||
|
return *x.OtelExporterOtlpEndpoint
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpTracesEndpoint() string {
|
||||||
|
if x != nil && x.OtelExporterOtlpTracesEndpoint != nil {
|
||||||
|
return *x.OtelExporterOtlpTracesEndpoint
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpProtocol() string {
|
||||||
|
if x != nil && x.OtelExporterOtlpProtocol != nil {
|
||||||
|
return *x.OtelExporterOtlpProtocol
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpTracesProtocol() string {
|
||||||
|
if x != nil && x.OtelExporterOtlpTracesProtocol != nil {
|
||||||
|
return *x.OtelExporterOtlpTracesProtocol
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpHeaders() []string {
|
||||||
|
if x != nil {
|
||||||
|
return x.OtelExporterOtlpHeaders
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpTracesHeaders() []string {
|
||||||
|
if x != nil {
|
||||||
|
return x.OtelExporterOtlpTracesHeaders
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpTimeout() *durationpb.Duration {
|
||||||
|
if x != nil {
|
||||||
|
return x.OtelExporterOtlpTimeout
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelExporterOtlpTracesTimeout() *durationpb.Duration {
|
||||||
|
if x != nil {
|
||||||
|
return x.OtelExporterOtlpTracesTimeout
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelBspScheduleDelay() *durationpb.Duration {
|
||||||
|
if x != nil {
|
||||||
|
return x.OtelBspScheduleDelay
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *Settings) GetOtelBspMaxExportBatchSize() int32 {
|
||||||
|
if x != nil && x.OtelBspMaxExportBatchSize != nil {
|
||||||
|
return *x.OtelBspMaxExportBatchSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
func (x *Settings) GetGrpcAddress() string {
|
func (x *Settings) GetGrpcAddress() string {
|
||||||
if x != nil && x.GrpcAddress != nil {
|
if x != nil && x.GrpcAddress != nil {
|
||||||
return *x.GrpcAddress
|
return *x.GrpcAddress
|
||||||
|
@ -2487,7 +2575,7 @@ var file_config_proto_rawDesc = []byte{
|
||||||
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74,
|
0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74,
|
||||||
0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
|
0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
|
||||||
0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x70, 0x6c, 0x22,
|
0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x70, 0x6c, 0x22,
|
||||||
0xc9, 0x38, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f,
|
0xcb, 0x41, 0x0a, 0x08, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2c, 0x0a, 0x0f,
|
||||||
0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18,
|
0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18,
|
||||||
0x47, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
|
0x47, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0e, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c, 0x6c,
|
||||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x6f,
|
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x20, 0x0a, 0x09, 0x6c, 0x6f,
|
||||||
|
@ -2648,345 +2736,417 @@ var file_config_proto_rawDesc = []byte{
|
||||||
0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65,
|
0x12, 0x2f, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65,
|
||||||
0x6e, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x48, 0x25, 0x52, 0x0f, 0x6d,
|
0x6e, 0x74, 0x5f, 0x63, 0x61, 0x18, 0x42, 0x20, 0x01, 0x28, 0x09, 0x48, 0x25, 0x52, 0x0f, 0x6d,
|
||||||
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x88, 0x01,
|
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x61, 0x88, 0x01,
|
||||||
0x01, 0x12, 0x2e, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x72, 0x6f,
|
0x01, 0x12, 0x35, 0x0a, 0x14, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73,
|
||||||
0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x29, 0x20, 0x01, 0x28, 0x09, 0x48, 0x26, 0x52, 0x0f, 0x74,
|
0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x79, 0x20, 0x01, 0x28, 0x09, 0x48,
|
||||||
0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x88, 0x01,
|
0x26, 0x52, 0x12, 0x6f, 0x74, 0x65, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x45, 0x78, 0x70,
|
||||||
0x01, 0x12, 0x33, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x6d,
|
0x6f, 0x72, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x17, 0x6f, 0x74, 0x65, 0x6c,
|
||||||
0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x2a, 0x20, 0x01, 0x28, 0x01, 0x48, 0x27,
|
0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x5f,
|
||||||
0x52, 0x11, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x52,
|
0x61, 0x72, 0x67, 0x18, 0x7a, 0x20, 0x01, 0x28, 0x01, 0x48, 0x27, 0x52, 0x14, 0x6f, 0x74, 0x65,
|
||||||
0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e,
|
0x6c, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x72, 0x41, 0x72,
|
||||||
0x67, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
|
0x67, 0x88, 0x01, 0x01, 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x72, 0x65, 0x73,
|
||||||
0x78, 0x20, 0x01, 0x28, 0x09, 0x48, 0x28, 0x52, 0x13, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67,
|
0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73,
|
||||||
0x4f, 0x74, 0x6c, 0x70, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
|
0x18, 0x7b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x16, 0x6f, 0x74, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x6f,
|
||||||
0x37, 0x0a, 0x15, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f,
|
0x75, 0x72, 0x63, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x29,
|
||||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x79, 0x20, 0x01, 0x28, 0x09, 0x48, 0x29,
|
0x0a, 0x0e, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c,
|
||||||
0x52, 0x13, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x4f, 0x74, 0x6c, 0x70, 0x50, 0x72, 0x6f,
|
0x18, 0x7c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x28, 0x52, 0x0c, 0x6f, 0x74, 0x65, 0x6c, 0x4c, 0x6f,
|
||||||
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63,
|
0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x21, 0x6f, 0x74, 0x65,
|
||||||
0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x2a,
|
0x6c, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75,
|
||||||
0x52, 0x0b, 0x67, 0x72, 0x70, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01,
|
0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x7d,
|
||||||
0x12, 0x28, 0x0a, 0x0d, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72,
|
0x20, 0x01, 0x28, 0x05, 0x48, 0x29, 0x52, 0x1d, 0x6f, 0x74, 0x65, 0x6c, 0x41, 0x74, 0x74, 0x72,
|
||||||
0x65, 0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x2b, 0x52, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x49,
|
0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68,
|
||||||
0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x67, 0x72,
|
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x42, 0x0a, 0x1b, 0x6f, 0x74, 0x65, 0x6c,
|
||||||
0x70, 0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
|
0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x65,
|
||||||
0x74, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65,
|
0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x7e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x2a, 0x52,
|
||||||
|
0x18, 0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c,
|
||||||
|
0x70, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x4f, 0x0a, 0x22,
|
||||||
|
0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74,
|
||||||
|
0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69,
|
||||||
|
0x6e, 0x74, 0x18, 0x7f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x2b, 0x52, 0x1e, 0x6f, 0x74, 0x65, 0x6c,
|
||||||
|
0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c, 0x70, 0x54, 0x72, 0x61, 0x63,
|
||||||
|
0x65, 0x73, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12, 0x43, 0x0a,
|
||||||
|
0x1b, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f,
|
||||||
|
0x74, 0x6c, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x80, 0x01, 0x20,
|
||||||
|
0x01, 0x28, 0x09, 0x48, 0x2c, 0x52, 0x18, 0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72,
|
||||||
|
0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88,
|
||||||
|
0x01, 0x01, 0x12, 0x50, 0x0a, 0x22, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72,
|
||||||
|
0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f,
|
||||||
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x81, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48,
|
||||||
|
0x2d, 0x52, 0x1e, 0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f,
|
||||||
|
0x74, 0x6c, 0x70, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
|
||||||
|
0x6c, 0x88, 0x01, 0x01, 0x12, 0x3c, 0x0a, 0x1a, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70,
|
||||||
|
0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x68, 0x65, 0x61, 0x64, 0x65,
|
||||||
|
0x72, 0x73, 0x18, 0x82, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x17, 0x6f, 0x74, 0x65, 0x6c, 0x45,
|
||||||
|
0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c, 0x70, 0x48, 0x65, 0x61, 0x64, 0x65,
|
||||||
|
0x72, 0x73, 0x12, 0x49, 0x0a, 0x21, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72,
|
||||||
|
0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f,
|
||||||
|
0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x18, 0x83, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x1d,
|
||||||
|
0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c, 0x70,
|
||||||
|
0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x5c, 0x0a,
|
||||||
|
0x1a, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f,
|
||||||
|
0x74, 0x6c, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x84, 0x01, 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, 0x48, 0x2e, 0x52,
|
||||||
|
0x17, 0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x4f, 0x74, 0x6c,
|
||||||
|
0x70, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x69, 0x0a, 0x21, 0x6f,
|
||||||
|
0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c,
|
||||||
|
0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
|
||||||
|
0x18, 0x85, 0x01, 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,
|
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69,
|
||||||
0x6f, 0x6e, 0x48, 0x2c, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
0x6f, 0x6e, 0x48, 0x2f, 0x52, 0x1d, 0x6f, 0x74, 0x65, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74,
|
||||||
0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x61,
|
0x65, 0x72, 0x4f, 0x74, 0x6c, 0x70, 0x54, 0x72, 0x61, 0x63, 0x65, 0x73, 0x54, 0x69, 0x6d, 0x65,
|
||||||
0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x56, 0x0a, 0x17, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x62,
|
||||||
0x5f, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x64, 0x61, 0x74,
|
0x73, 0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x61,
|
||||||
0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x72,
|
0x79, 0x18, 0x86, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||||
0x6c, 0x73, 0x12, 0x4a, 0x0a, 0x1f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72,
|
0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74,
|
||||||
0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63,
|
0x69, 0x6f, 0x6e, 0x48, 0x30, 0x52, 0x14, 0x6f, 0x74, 0x65, 0x6c, 0x42, 0x73, 0x70, 0x53, 0x63,
|
||||||
0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x54, 0x20, 0x01, 0x28, 0x09, 0x48, 0x2d, 0x52, 0x1c, 0x64,
|
0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x88, 0x01, 0x01, 0x12, 0x47,
|
||||||
0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
|
0x0a, 0x1e, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x62, 0x73, 0x70, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x65,
|
||||||
0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3b,
|
0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65,
|
||||||
0x0a, 0x17, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f,
|
0x18, 0x87, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x31, 0x52, 0x19, 0x6f, 0x74, 0x65, 0x6c, 0x42,
|
||||||
0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x48,
|
0x73, 0x70, 0x4d, 0x61, 0x78, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x61, 0x74, 0x63, 0x68,
|
||||||
0x2e, 0x52, 0x15, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x6f,
|
0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x5f,
|
||||||
0x72, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x24, 0x64,
|
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x2e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x32, 0x52,
|
||||||
0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
|
0x0b, 0x67, 0x72, 0x70, 0x63, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01, 0x12,
|
||||||
0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72,
|
0x28, 0x0a, 0x0d, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65,
|
||||||
0x69, 0x6e, 0x67, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x48, 0x2f, 0x52, 0x21, 0x64, 0x61, 0x74,
|
0x18, 0x2f, 0x20, 0x01, 0x28, 0x08, 0x48, 0x33, 0x52, 0x0c, 0x67, 0x72, 0x70, 0x63, 0x49, 0x6e,
|
||||||
0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f,
|
0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x88, 0x01, 0x01, 0x12, 0x4e, 0x0a, 0x13, 0x67, 0x72, 0x70,
|
||||||
0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01,
|
|
||||||
0x01, 0x12, 0x55, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f,
|
|
||||||
0x6d, 0x74, 0x6c, 0x73, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6d,
|
|
||||||
0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x6f, 0x77,
|
|
||||||
0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x74, 0x6c, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69,
|
|
||||||
0x6e, 0x67, 0x73, 0x48, 0x30, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61,
|
|
||||||
0x6d, 0x4d, 0x74, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x36, 0x67, 0x6f, 0x6f, 0x67,
|
|
||||||
0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c,
|
|
||||||
0x65, 0x73, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69,
|
|
||||||
0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75,
|
|
||||||
0x6e, 0x74, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x48, 0x31, 0x52, 0x31, 0x67, 0x6f, 0x6f, 0x67,
|
|
||||||
0x6c, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73,
|
|
||||||
0x73, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53,
|
|
||||||
0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01,
|
|
||||||
0x12, 0x31, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72,
|
|
||||||
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x32, 0x52, 0x10,
|
|
||||||
0x75, 0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c,
|
|
||||||
0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x18,
|
|
||||||
0x38, 0x20, 0x01, 0x28, 0x08, 0x48, 0x33, 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72,
|
|
||||||
0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
|
||||||
0x5f, 0x63, 0x61, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x34, 0x52, 0x0a, 0x61, 0x75, 0x74,
|
|
||||||
0x6f, 0x63, 0x65, 0x72, 0x74, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x75,
|
|
||||||
0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x4d, 0x20, 0x01,
|
|
||||||
0x28, 0x09, 0x48, 0x35, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x6d,
|
|
||||||
0x61, 0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
|
||||||
0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x39,
|
|
||||||
0x20, 0x01, 0x28, 0x08, 0x48, 0x36, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
|
||||||
0x55, 0x73, 0x65, 0x53, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a,
|
|
||||||
0x13, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6b, 0x65,
|
|
||||||
0x79, 0x5f, 0x69, 0x64, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x37, 0x52, 0x10, 0x61, 0x75,
|
|
||||||
0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01,
|
|
||||||
0x01, 0x12, 0x34, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61,
|
|
||||||
0x62, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x48,
|
|
||||||
0x38, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62, 0x4d, 0x61,
|
|
||||||
0x63, 0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63,
|
|
||||||
0x65, 0x72, 0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18,
|
|
||||||
0x3a, 0x20, 0x01, 0x28, 0x08, 0x48, 0x39, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72,
|
|
||||||
0x74, 0x4d, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26,
|
|
||||||
0x0a, 0x0c, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x3b,
|
|
||||||
0x20, 0x01, 0x28, 0x09, 0x48, 0x3a, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
|
||||||
0x44, 0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
|
||||||
0x72, 0x74, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x18, 0x50, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x48, 0x3b, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x54,
|
|
||||||
0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x73,
|
|
||||||
0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x3d,
|
|
||||||
0x20, 0x01, 0x28, 0x08, 0x48, 0x3c, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41,
|
|
||||||
0x70, 0x70, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x78, 0x66, 0x66, 0x5f,
|
|
||||||
0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73,
|
|
||||||
0x18, 0x46, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x3d, 0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d,
|
|
||||||
0x54, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41,
|
|
||||||
0x0a, 0x1b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63,
|
|
||||||
0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x6c, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x48, 0x3e, 0x52, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69,
|
|
||||||
0x6e, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01,
|
|
||||||
0x01, 0x12, 0x3c, 0x0a, 0x18, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e,
|
|
||||||
0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x6d, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x48, 0x3f, 0x52, 0x15, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69,
|
|
||||||
0x6e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12,
|
|
||||||
0x33, 0x0a, 0x13, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61,
|
|
||||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x40, 0x52, 0x11,
|
|
||||||
0x65, 0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73,
|
|
||||||
0x73, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69,
|
|
||||||
0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
|
|
||||||
0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x41,
|
|
||||||
0x52, 0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69,
|
|
||||||
0x67, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01,
|
|
||||||
0x01, 0x12, 0x40, 0x0a, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f,
|
|
||||||
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x18,
|
|
||||||
0x70, 0x20, 0x01, 0x28, 0x08, 0x48, 0x42, 0x52, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x69,
|
|
||||||
0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e, 0x64,
|
|
||||||
0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x26, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61,
|
|
||||||
0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d,
|
|
||||||
0x61, 0x69, 0x6e, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x44, 0x20,
|
|
||||||
0x03, 0x28, 0x09, 0x52, 0x23, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x69,
|
|
||||||
0x63, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x57,
|
|
||||||
0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x64,
|
|
||||||
0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e,
|
|
||||||
0x65, 0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73,
|
|
||||||
0x2e, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
|
|
||||||
0x2e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x5f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70,
|
|
||||||
0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65,
|
|
||||||
0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x43, 0x52, 0x09, 0x63,
|
|
||||||
0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70,
|
|
||||||
0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x55, 0x20, 0x01,
|
|
||||||
0x28, 0x09, 0x48, 0x44, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c,
|
|
||||||
0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61,
|
|
||||||
0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x56, 0x20, 0x01, 0x28, 0x09, 0x48, 0x45,
|
|
||||||
0x52, 0x0e, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72,
|
|
||||||
0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f,
|
|
||||||
0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x57, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x48, 0x46, 0x52, 0x14, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x50,
|
|
||||||
0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d,
|
|
||||||
0x0a, 0x18, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e,
|
|
||||||
0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x58, 0x20, 0x01, 0x28, 0x09,
|
|
||||||
0x48, 0x47, 0x52, 0x16, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x63, 0x6f,
|
|
||||||
0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a,
|
|
||||||
0x08, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x59, 0x20, 0x01, 0x28, 0x09, 0x48,
|
|
||||||
0x48, 0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a,
|
|
||||||
0x0b, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x5a, 0x20, 0x01,
|
|
||||||
0x28, 0x09, 0x48, 0x49, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c,
|
|
||||||
0x88, 0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73,
|
|
||||||
0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67,
|
|
||||||
0x72, 0x61, 0x70, 0x68, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x4a, 0x52, 0x1a, 0x65, 0x72,
|
|
||||||
0x72, 0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50,
|
|
||||||
0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x70,
|
|
||||||
0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61,
|
|
||||||
0x64, 0x65, 0x72, 0x73, 0x18, 0x75, 0x20, 0x01, 0x28, 0x08, 0x48, 0x4b, 0x52, 0x13, 0x70, 0x61,
|
|
||||||
0x73, 0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72,
|
|
||||||
0x73, 0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f,
|
|
||||||
0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x76, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f,
|
|
||||||
0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65,
|
|
||||||
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x6c,
|
|
||||||
0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d,
|
|
||||||
0x65, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x59, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66,
|
|
||||||
0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x62, 0x79,
|
|
||||||
0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x42,
|
|
||||||
0x79, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65,
|
|
||||||
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65,
|
|
||||||
0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69,
|
|
||||||
0x64, 0x1a, 0x24, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12,
|
|
||||||
0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52,
|
|
||||||
0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65,
|
|
||||||
0x73, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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,
|
|
||||||
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x53, 0x65, 0x74,
|
|
||||||
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
|
|
||||||
0x1a, 0x43, 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x65, 0x61,
|
|
||||||
0x64, 0x65, 0x72, 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, 0x14, 0x0a, 0x05, 0x76,
|
|
||||||
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
|
||||||
0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
|
|
||||||
0x46, 0x6c, 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, 0x14, 0x0a, 0x05,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c,
|
|
||||||
0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61,
|
|
||||||
0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c,
|
|
||||||
0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63,
|
|
||||||
0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x17,
|
|
||||||
0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x6f, 0x67,
|
|
||||||
0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x6f, 0x78,
|
|
||||||
0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f,
|
|
||||||
0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x0a,
|
|
||||||
0x09, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61,
|
|
||||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63,
|
|
||||||
0x75, 0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64,
|
|
||||||
0x6e, 0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79,
|
|
||||||
0x42, 0x15, 0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65,
|
|
||||||
0x63, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69, 0x6d, 0x65,
|
|
||||||
0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x69, 0x6d,
|
|
||||||
0x65, 0x6f, 0x75, 0x74, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74,
|
|
||||||
0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f,
|
|
||||||
0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72,
|
|
||||||
0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x61, 0x75, 0x74,
|
|
||||||
0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e,
|
|
||||||
0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x17,
|
|
||||||
0x0a, 0x15, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72,
|
|
||||||
0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x68,
|
|
||||||
0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63,
|
|
||||||
0x6b, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69,
|
|
||||||
0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69,
|
|
||||||
0x65, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f,
|
|
||||||
0x6b, 0x69, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63,
|
|
||||||
0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42,
|
|
||||||
0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72,
|
|
||||||
0x65, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x73, 0x61, 0x6d,
|
|
||||||
0x65, 0x5f, 0x73, 0x69, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63,
|
|
||||||
0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x64, 0x70,
|
|
||||||
0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0f,
|
|
||||||
0x0a, 0x0d, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42,
|
|
||||||
0x13, 0x0a, 0x11, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
|
|
||||||
0x5f, 0x75, 0x72, 0x6c, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69,
|
|
||||||
0x7a, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76,
|
|
||||||
0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6f, 0x76, 0x65, 0x72,
|
|
||||||
0x72, 0x69, 0x64, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65,
|
|
||||||
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66,
|
|
||||||
0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42,
|
|
||||||
0x0d, 0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x42, 0x0e,
|
|
||||||
0x0a, 0x0c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1b,
|
|
||||||
0x0a, 0x19, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72,
|
|
||||||
0x65, 0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f,
|
|
||||||
0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42,
|
|
||||||
0x15, 0x0a, 0x13, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69,
|
|
||||||
0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69,
|
|
||||||
0x63, 0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x14,
|
|
||||||
0x0a, 0x12, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e,
|
|
||||||
0x74, 0x5f, 0x63, 0x61, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67,
|
|
||||||
0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x74, 0x72,
|
|
||||||
0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x72, 0x61, 0x74,
|
|
||||||
0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x74,
|
|
||||||
0x6c, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x18, 0x0a, 0x16, 0x5f,
|
|
||||||
0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x70, 0x72, 0x6f,
|
|
||||||
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x61,
|
|
||||||
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f,
|
|
||||||
0x69, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x70,
|
|
||||||
0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
|
0x63, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74,
|
||||||
0x42, 0x22, 0x0a, 0x20, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f,
|
0x18, 0x63, 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, 0x48, 0x34, 0x52, 0x11, 0x67, 0x72, 0x70, 0x63, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x54,
|
||||||
|
0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x88, 0x01, 0x01, 0x12, 0x36, 0x0a, 0x17, 0x64, 0x61, 0x74,
|
||||||
|
0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f,
|
||||||
|
0x75, 0x72, 0x6c, 0x73, 0x18, 0x34, 0x20, 0x03, 0x28, 0x09, 0x52, 0x15, 0x64, 0x61, 0x74, 0x61,
|
||||||
|
0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x72, 0x6c,
|
||||||
|
0x73, 0x12, 0x4a, 0x0a, 0x1f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f,
|
||||||
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
||||||
0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f,
|
0x5f, 0x75, 0x72, 0x6c, 0x18, 0x54, 0x20, 0x01, 0x28, 0x09, 0x48, 0x35, 0x52, 0x1c, 0x64, 0x61,
|
||||||
0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65,
|
0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c,
|
||||||
0x42, 0x27, 0x0a, 0x25, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f,
|
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x3b, 0x0a,
|
||||||
0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
|
0x17, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72,
|
||||||
0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x6f,
|
0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x65, 0x20, 0x01, 0x28, 0x09, 0x48, 0x36,
|
||||||
0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x42, 0x39, 0x0a,
|
0x52, 0x15, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72,
|
||||||
0x37, 0x5f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73,
|
0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x54, 0x0a, 0x24, 0x64, 0x61,
|
||||||
0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e,
|
0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65,
|
||||||
0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65,
|
0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x69,
|
||||||
0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x75, 0x73, 0x65,
|
0x6e, 0x67, 0x18, 0x66, 0x20, 0x01, 0x28, 0x09, 0x48, 0x37, 0x52, 0x21, 0x64, 0x61, 0x74, 0x61,
|
||||||
0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42,
|
0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e,
|
||||||
0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c,
|
0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01,
|
||||||
0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x11, 0x0a, 0x0f,
|
0x12, 0x55, 0x0a, 0x0f, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d,
|
||||||
0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42,
|
0x74, 0x6c, 0x73, 0x18, 0x74, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6d, 0x65,
|
||||||
0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65,
|
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x6f, 0x77, 0x6e,
|
||||||
0x5f, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x75, 0x74,
|
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x74, 0x6c, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e,
|
||||||
0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64,
|
0x67, 0x73, 0x48, 0x38, 0x52, 0x0e, 0x64, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d,
|
||||||
0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61,
|
0x4d, 0x74, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, 0x76, 0x0a, 0x36, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||||
0x62, 0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75,
|
0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65,
|
||||||
0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70,
|
0x73, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f,
|
||||||
0x6c, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e,
|
||||||
0x64, 0x69, 0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
0x74, 0x18, 0x37, 0x20, 0x01, 0x28, 0x09, 0x48, 0x39, 0x52, 0x31, 0x67, 0x6f, 0x6f, 0x67, 0x6c,
|
||||||
0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x42, 0x12, 0x0a, 0x10, 0x5f,
|
0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73,
|
||||||
0x73, 0x6b, 0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42,
|
0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65,
|
||||||
0x17, 0x0a, 0x15, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73,
|
0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
|
||||||
0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x6e, 0x76,
|
0x31, 0x0a, 0x12, 0x75, 0x73, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f,
|
||||||
0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,
|
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x08, 0x48, 0x3a, 0x52, 0x10, 0x75,
|
||||||
0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x76,
|
0x73, 0x65, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x88,
|
||||||
0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65,
|
0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x18, 0x38,
|
||||||
0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f,
|
0x20, 0x01, 0x28, 0x08, 0x48, 0x3b, 0x52, 0x08, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
||||||
0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x23, 0x0a,
|
0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f,
|
||||||
0x21, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6e,
|
0x63, 0x61, 0x18, 0x4c, 0x20, 0x01, 0x28, 0x09, 0x48, 0x3c, 0x52, 0x0a, 0x61, 0x75, 0x74, 0x6f,
|
||||||
0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65,
|
0x63, 0x65, 0x72, 0x74, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2a, 0x0a, 0x0e, 0x61, 0x75, 0x74,
|
||||||
0x73, 0x73, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e,
|
0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x4d, 0x20, 0x01, 0x28,
|
||||||
0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e,
|
0x09, 0x48, 0x3d, 0x52, 0x0d, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x6d, 0x61,
|
||||||
0x64, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65,
|
0x69, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72,
|
||||||
0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c,
|
0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x18, 0x39, 0x20,
|
||||||
0x6f, 0x72, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79,
|
0x01, 0x28, 0x08, 0x48, 0x3e, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x55,
|
||||||
0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x72, 0x6b, 0x6d,
|
0x73, 0x65, 0x53, 0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x13,
|
||||||
0x6f, 0x64, 0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f,
|
0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6b, 0x65, 0x79,
|
||||||
0x72, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73,
|
0x5f, 0x69, 0x64, 0x18, 0x4e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x3f, 0x52, 0x10, 0x61, 0x75, 0x74,
|
||||||
0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x0b,
|
0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62, 0x4b, 0x65, 0x79, 0x49, 0x64, 0x88, 0x01, 0x01,
|
||||||
0x0a, 0x09, 0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f,
|
0x12, 0x34, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62,
|
||||||
0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x20, 0x0a, 0x1e, 0x5f,
|
0x5f, 0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x4f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x40,
|
||||||
0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x69,
|
0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x45, 0x61, 0x62, 0x4d, 0x61, 0x63,
|
||||||
0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x18, 0x0a,
|
0x4b, 0x65, 0x79, 0x88, 0x01, 0x01, 0x12, 0x35, 0x0a, 0x14, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65,
|
||||||
0x16, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f,
|
0x72, 0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x18, 0x3a,
|
||||||
0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x62, 0x10, 0x63, 0x4a, 0x04, 0x08,
|
0x20, 0x01, 0x28, 0x08, 0x48, 0x41, 0x52, 0x12, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74,
|
||||||
0x2b, 0x10, 0x2c, 0x4a, 0x04, 0x08, 0x2c, 0x10, 0x2d, 0x4a, 0x04, 0x08, 0x2d, 0x10, 0x2e, 0x4a,
|
0x4d, 0x75, 0x73, 0x74, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a,
|
||||||
0x04, 0x08, 0x64, 0x10, 0x65, 0x4a, 0x04, 0x08, 0x6a, 0x10, 0x6b, 0x22, 0xc8, 0x02, 0x0a, 0x16,
|
0x0c, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69, 0x72, 0x18, 0x3b, 0x20,
|
||||||
0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x74, 0x6c, 0x73, 0x53, 0x65,
|
0x01, 0x28, 0x09, 0x48, 0x42, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x44,
|
||||||
0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x13, 0x0a, 0x02, 0x63, 0x61, 0x18, 0x01, 0x20, 0x01,
|
0x69, 0x72, 0x88, 0x01, 0x01, 0x12, 0x33, 0x0a, 0x13, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72,
|
||||||
0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x63, 0x61, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a, 0x03, 0x63,
|
0x74, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x18, 0x50, 0x20, 0x01,
|
||||||
0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x63, 0x72, 0x6c, 0x88,
|
0x28, 0x09, 0x48, 0x43, 0x52, 0x11, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x54, 0x72,
|
||||||
0x01, 0x01, 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e,
|
0x75, 0x73, 0x74, 0x65, 0x64, 0x43, 0x61, 0x88, 0x01, 0x01, 0x12, 0x2b, 0x0a, 0x0f, 0x73, 0x6b,
|
||||||
0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69,
|
0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x18, 0x3d, 0x20,
|
||||||
0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x74, 0x6c, 0x73, 0x45, 0x6e,
|
0x01, 0x28, 0x08, 0x48, 0x44, 0x52, 0x0d, 0x73, 0x6b, 0x69, 0x70, 0x58, 0x66, 0x66, 0x41, 0x70,
|
||||||
0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48, 0x02, 0x52,
|
0x70, 0x65, 0x6e, 0x64, 0x88, 0x01, 0x01, 0x12, 0x34, 0x0a, 0x14, 0x78, 0x66, 0x66, 0x5f, 0x6e,
|
||||||
0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01, 0x01, 0x12,
|
0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x18,
|
||||||
0x52, 0x0a, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74,
|
0x46, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x45, 0x52, 0x11, 0x78, 0x66, 0x66, 0x4e, 0x75, 0x6d, 0x54,
|
||||||
0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
|
0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x70, 0x73, 0x88, 0x01, 0x01, 0x12, 0x41, 0x0a,
|
||||||
0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66,
|
0x1b, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63,
|
||||||
0x69, 0x67, 0x2e, 0x53, 0x41, 0x4e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52, 0x14, 0x6d,
|
0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x6c, 0x20, 0x01,
|
||||||
0x61, 0x74, 0x63, 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74, 0x4e, 0x61,
|
0x28, 0x09, 0x48, 0x46, 0x52, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e,
|
||||||
0x6d, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66,
|
0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01,
|
||||||
0x79, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48, 0x03, 0x52,
|
0x12, 0x3c, 0x0a, 0x18, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f,
|
||||||
0x0e, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x44, 0x65, 0x70, 0x74, 0x68, 0x88,
|
0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x6d, 0x20, 0x01,
|
||||||
0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x63, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x63, 0x72,
|
0x28, 0x09, 0x48, 0x47, 0x52, 0x15, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e,
|
||||||
0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e,
|
0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x88, 0x01, 0x01, 0x12, 0x33,
|
||||||
0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x69, 0x66, 0x79,
|
0x0a, 0x13, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64,
|
||||||
0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0xd1, 0x01, 0x0a, 0x0a, 0x53, 0x41, 0x4e, 0x4d, 0x61,
|
0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x09, 0x48, 0x48, 0x52, 0x11, 0x65,
|
||||||
0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x61, 0x6e, 0x5f, 0x74, 0x79, 0x70,
|
0x6e, 0x76, 0x6f, 0x79, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69,
|
0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x20, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e,
|
||||||
0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x41, 0x4e, 0x4d, 0x61, 0x74,
|
0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f,
|
||||||
0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x41, 0x4e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x73, 0x61,
|
0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x6f, 0x20, 0x01, 0x28, 0x09, 0x48, 0x49, 0x52,
|
||||||
0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e,
|
0x1c, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x22,
|
0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x88, 0x01, 0x01,
|
||||||
0x69, 0x0a, 0x07, 0x53, 0x41, 0x4e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x41,
|
0x12, 0x40, 0x0a, 0x1a, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63,
|
||||||
0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49,
|
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x18, 0x70,
|
||||||
0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10, 0x01, 0x12,
|
0x20, 0x01, 0x28, 0x08, 0x48, 0x4a, 0x52, 0x17, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x42, 0x69, 0x6e,
|
||||||
0x07, 0x0a, 0x03, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x52, 0x49, 0x10,
|
0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x46, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x88,
|
||||||
0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53, 0x53, 0x10,
|
0x01, 0x01, 0x12, 0x53, 0x0a, 0x26, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74,
|
||||||
0x04, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4e, 0x43, 0x49,
|
0x69, 0x63, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x6f, 0x6d, 0x61,
|
||||||
0x50, 0x41, 0x4c, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x2a, 0x31, 0x0a, 0x0c, 0x49, 0x73,
|
0x69, 0x6e, 0x5f, 0x77, 0x68, 0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x44, 0x20, 0x03,
|
||||||
0x73, 0x75, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x73,
|
0x28, 0x09, 0x52, 0x23, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x69, 0x63,
|
||||||
0x73, 0x75, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x00, 0x12, 0x0d,
|
0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x57, 0x68,
|
||||||
0x0a, 0x09, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x52, 0x49, 0x10, 0x01, 0x2a, 0x63, 0x0a,
|
0x69, 0x74, 0x65, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x80, 0x01, 0x0a, 0x0a, 0x63, 0x6f, 0x64, 0x65,
|
||||||
0x13, 0x4d, 0x74, 0x6c, 0x73, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74,
|
0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x49, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x5c, 0x2e, 0x65,
|
||||||
0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10,
|
0x6e, 0x76, 0x6f, 0x79, 0x2e, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e,
|
||||||
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x12, 0x1c, 0x0a,
|
0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e,
|
||||||
0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x44, 0x45, 0x46,
|
0x68, 0x74, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
|
||||||
0x41, 0x55, 0x4c, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x52,
|
0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x2e, 0x76, 0x33, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x43,
|
||||||
0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e,
|
0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72,
|
||||||
0x10, 0x03, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d,
|
0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x48, 0x4b, 0x52, 0x09, 0x63, 0x6f,
|
||||||
0x2f, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69,
|
0x64, 0x65, 0x63, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x70, 0x72,
|
||||||
0x75, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66,
|
0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x55, 0x20, 0x01, 0x28,
|
||||||
0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x09, 0x48, 0x4c, 0x52, 0x0c, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f,
|
||||||
|
0x72, 0x88, 0x01, 0x01, 0x12, 0x2c, 0x0a, 0x0f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72,
|
||||||
|
0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x56, 0x20, 0x01, 0x28, 0x09, 0x48, 0x4d, 0x52,
|
||||||
|
0x0e, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88,
|
||||||
|
0x01, 0x01, 0x12, 0x39, 0x0a, 0x16, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x70,
|
||||||
|
0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x57, 0x20, 0x01,
|
||||||
|
0x28, 0x09, 0x48, 0x4e, 0x52, 0x14, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x50, 0x72,
|
||||||
|
0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a,
|
||||||
|
0x18, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64,
|
||||||
|
0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x58, 0x20, 0x01, 0x28, 0x09, 0x48,
|
||||||
|
0x4f, 0x52, 0x16, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e,
|
||||||
|
0x64, 0x61, 0x72, 0x79, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x12, 0x1e, 0x0a, 0x08,
|
||||||
|
0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x59, 0x20, 0x01, 0x28, 0x09, 0x48, 0x50,
|
||||||
|
0x52, 0x07, 0x6c, 0x6f, 0x67, 0x6f, 0x55, 0x72, 0x6c, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b,
|
||||||
|
0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x5a, 0x20, 0x01, 0x28,
|
||||||
|
0x09, 0x48, 0x51, 0x52, 0x0a, 0x66, 0x61, 0x76, 0x69, 0x63, 0x6f, 0x6e, 0x55, 0x72, 0x6c, 0x88,
|
||||||
|
0x01, 0x01, 0x12, 0x46, 0x0a, 0x1d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73,
|
||||||
|
0x61, 0x67, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72,
|
||||||
|
0x61, 0x70, 0x68, 0x18, 0x5b, 0x20, 0x01, 0x28, 0x09, 0x48, 0x52, 0x52, 0x1a, 0x65, 0x72, 0x72,
|
||||||
|
0x6f, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x50, 0x61,
|
||||||
|
0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x88, 0x01, 0x01, 0x12, 0x37, 0x0a, 0x15, 0x70, 0x61,
|
||||||
|
0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65, 0x61, 0x64,
|
||||||
|
0x65, 0x72, 0x73, 0x18, 0x75, 0x20, 0x01, 0x28, 0x08, 0x48, 0x53, 0x52, 0x13, 0x70, 0x61, 0x73,
|
||||||
|
0x73, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73,
|
||||||
|
0x88, 0x01, 0x01, 0x12, 0x50, 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x66,
|
||||||
|
0x6c, 0x61, 0x67, 0x73, 0x18, 0x76, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6d,
|
||||||
|
0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x65, 0x74,
|
||||||
|
0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46, 0x6c, 0x61,
|
||||||
|
0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65,
|
||||||
|
0x46, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x59, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
|
||||||
|
0x63, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x74,
|
||||||
|
0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x63, 0x65, 0x72, 0x74, 0x42, 0x79,
|
||||||
|
0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x65, 0x79, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73,
|
||||||
|
0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x42, 0x79, 0x74, 0x65, 0x73,
|
||||||
|
0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64,
|
||||||
|
0x1a, 0x24, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16,
|
||||||
|
0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x06,
|
||||||
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||||
|
0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 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, 0x14,
|
||||||
|
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x45, 0x0a, 0x17, 0x53, 0x65, 0x74, 0x52,
|
||||||
|
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 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, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
|
||||||
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a,
|
||||||
|
0x43, 0x0a, 0x15, 0x4a, 0x77, 0x74, 0x43, 0x6c, 0x61, 0x69, 0x6d, 0x73, 0x48, 0x65, 0x61, 0x64,
|
||||||
|
0x65, 0x72, 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, 0x14, 0x0a, 0x05, 0x76, 0x61,
|
||||||
|
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
|
||||||
|
0x3a, 0x02, 0x38, 0x01, 0x1a, 0x3f, 0x0a, 0x11, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x46,
|
||||||
|
0x6c, 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, 0x14, 0x0a, 0x05, 0x76,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
||||||
|
0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6c,
|
||||||
|
0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f,
|
||||||
|
0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x61, 0x63, 0x63, 0x65,
|
||||||
|
0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x17, 0x0a,
|
||||||
|
0x15, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x6f, 0x67, 0x5f,
|
||||||
|
0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79,
|
||||||
|
0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73,
|
||||||
|
0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0b, 0x0a, 0x09,
|
||||||
|
0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x61, 0x64,
|
||||||
|
0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x69, 0x6e, 0x73, 0x65, 0x63, 0x75,
|
||||||
|
0x72, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x64, 0x6e,
|
||||||
|
0x73, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x5f, 0x66, 0x61, 0x6d, 0x69, 0x6c, 0x79, 0x42,
|
||||||
|
0x15, 0x0a, 0x13, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63,
|
||||||
|
0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f,
|
||||||
|
0x75, 0x74, 0x5f, 0x72, 0x65, 0x61, 0x64, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x74, 0x69, 0x6d, 0x65,
|
||||||
|
0x6f, 0x75, 0x74, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x74, 0x69,
|
||||||
|
0x6d, 0x65, 0x6f, 0x75, 0x74, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x61,
|
||||||
|
0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76,
|
||||||
|
0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x24, 0x0a, 0x22, 0x5f, 0x61, 0x75, 0x74, 0x68,
|
||||||
|
0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61,
|
||||||
|
0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x17, 0x0a,
|
||||||
|
0x15, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x6f, 0x75, 0x74, 0x5f, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65,
|
||||||
|
0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65,
|
||||||
|
0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b,
|
||||||
|
0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
|
||||||
|
0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65,
|
||||||
|
0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b,
|
||||||
|
0x69, 0x65, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f,
|
||||||
|
0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x42, 0x10,
|
||||||
|
0x0a, 0x0e, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65,
|
||||||
|
0x42, 0x13, 0x0a, 0x11, 0x5f, 0x63, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x5f, 0x73, 0x61, 0x6d, 0x65,
|
||||||
|
0x5f, 0x73, 0x69, 0x74, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x63, 0x6c,
|
||||||
|
0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x69, 0x64, 0x70, 0x5f,
|
||||||
|
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x42, 0x0f, 0x0a,
|
||||||
|
0x0d, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x13,
|
||||||
|
0x0a, 0x11, 0x5f, 0x69, 0x64, 0x70, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x5f,
|
||||||
|
0x75, 0x72, 0x6c, 0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a,
|
||||||
|
0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69,
|
||||||
|
0x63, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x1c, 0x0a, 0x1a, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72,
|
||||||
|
0x69, 0x64, 0x65, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f,
|
||||||
|
0x6e, 0x61, 0x6d, 0x65, 0x42, 0x18, 0x0a, 0x16, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69,
|
||||||
|
0x63, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x42, 0x0d,
|
||||||
|
0x0a, 0x0b, 0x5f, 0x64, 0x65, 0x72, 0x69, 0x76, 0x65, 0x5f, 0x74, 0x6c, 0x73, 0x42, 0x0e, 0x0a,
|
||||||
|
0x0c, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x1b, 0x0a,
|
||||||
|
0x19, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x75, 0x70, 0x73, 0x74, 0x72, 0x65,
|
||||||
|
0x61, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x6d,
|
||||||
|
0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x15,
|
||||||
|
0x0a, 0x13, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x62, 0x61, 0x73, 0x69, 0x63,
|
||||||
|
0x5f, 0x61, 0x75, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63,
|
||||||
|
0x73, 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x42, 0x14, 0x0a,
|
||||||
|
0x12, 0x5f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74,
|
||||||
|
0x5f, 0x63, 0x61, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x72, 0x61,
|
||||||
|
0x63, 0x65, 0x73, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x42, 0x1a, 0x0a, 0x18,
|
||||||
|
0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x73, 0x61, 0x6d,
|
||||||
|
0x70, 0x6c, 0x65, 0x72, 0x5f, 0x61, 0x72, 0x67, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x6f, 0x74, 0x65,
|
||||||
|
0x6c, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x24, 0x0a, 0x22, 0x5f,
|
||||||
|
0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76,
|
||||||
|
0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x5f, 0x6c, 0x69, 0x6d, 0x69,
|
||||||
|
0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72,
|
||||||
|
0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
|
||||||
|
0x74, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72,
|
||||||
|
0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f,
|
||||||
|
0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x6f, 0x74, 0x65,
|
||||||
|
0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f,
|
||||||
|
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x25, 0x0a, 0x23, 0x5f, 0x6f, 0x74, 0x65,
|
||||||
|
0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f,
|
||||||
|
0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42,
|
||||||
|
0x1d, 0x0a, 0x1b, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65,
|
||||||
|
0x72, 0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x24,
|
||||||
|
0x0a, 0x22, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72,
|
||||||
|
0x5f, 0x6f, 0x74, 0x6c, 0x70, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x65, 0x73, 0x5f, 0x74, 0x69, 0x6d,
|
||||||
|
0x65, 0x6f, 0x75, 0x74, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x62, 0x73,
|
||||||
|
0x70, 0x5f, 0x73, 0x63, 0x68, 0x65, 0x64, 0x75, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79,
|
||||||
|
0x42, 0x21, 0x0a, 0x1f, 0x5f, 0x6f, 0x74, 0x65, 0x6c, 0x5f, 0x62, 0x73, 0x70, 0x5f, 0x6d, 0x61,
|
||||||
|
0x78, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73,
|
||||||
|
0x69, 0x7a, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x61, 0x64, 0x64,
|
||||||
|
0x72, 0x65, 0x73, 0x73, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f, 0x69, 0x6e,
|
||||||
|
0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x67, 0x72, 0x70, 0x63, 0x5f,
|
||||||
|
0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x22,
|
||||||
|
0x0a, 0x20, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x69, 0x6e,
|
||||||
|
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x75,
|
||||||
|
0x72, 0x6c, 0x42, 0x1a, 0x0a, 0x18, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65,
|
||||||
|
0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x27,
|
||||||
|
0x0a, 0x25, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x72, 0x6f, 0x6b, 0x65, 0x72, 0x5f, 0x73, 0x74,
|
||||||
|
0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
|
||||||
|
0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x64, 0x6f, 0x77, 0x6e,
|
||||||
|
0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x6d, 0x74, 0x6c, 0x73, 0x42, 0x39, 0x0a, 0x37, 0x5f,
|
||||||
|
0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x5f, 0x73, 0x65, 0x72,
|
||||||
|
0x76, 0x65, 0x72, 0x6c, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69,
|
||||||
|
0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x61,
|
||||||
|
0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x70,
|
||||||
|
0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, 0x0b, 0x0a,
|
||||||
|
0x09, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x61,
|
||||||
|
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x61, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x61,
|
||||||
|
0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x17, 0x0a,
|
||||||
|
0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x5f, 0x73,
|
||||||
|
0x74, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63,
|
||||||
|
0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x42, 0x17,
|
||||||
|
0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x65, 0x61, 0x62, 0x5f,
|
||||||
|
0x6d, 0x61, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x42, 0x17, 0x0a, 0x15, 0x5f, 0x61, 0x75, 0x74, 0x6f,
|
||||||
|
0x63, 0x65, 0x72, 0x74, 0x5f, 0x6d, 0x75, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x65,
|
||||||
|
0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x64, 0x69,
|
||||||
|
0x72, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x61, 0x75, 0x74, 0x6f, 0x63, 0x65, 0x72, 0x74, 0x5f, 0x74,
|
||||||
|
0x72, 0x75, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x6b,
|
||||||
|
0x69, 0x70, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x61, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x42, 0x17, 0x0a,
|
||||||
|
0x15, 0x5f, 0x78, 0x66, 0x66, 0x5f, 0x6e, 0x75, 0x6d, 0x5f, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65,
|
||||||
|
0x64, 0x5f, 0x68, 0x6f, 0x70, 0x73, 0x42, 0x1e, 0x0a, 0x1c, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79,
|
||||||
|
0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f,
|
||||||
|
0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x42, 0x1b, 0x0a, 0x19, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79,
|
||||||
|
0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70,
|
||||||
|
0x61, 0x74, 0x68, 0x42, 0x16, 0x0a, 0x14, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x61, 0x64,
|
||||||
|
0x6d, 0x69, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x42, 0x23, 0x0a, 0x21, 0x5f,
|
||||||
|
0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
|
||||||
|
0x67, 0x5f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73,
|
||||||
|
0x42, 0x1d, 0x0a, 0x1b, 0x5f, 0x65, 0x6e, 0x76, 0x6f, 0x79, 0x5f, 0x62, 0x69, 0x6e, 0x64, 0x5f,
|
||||||
|
0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x66, 0x72, 0x65, 0x65, 0x62, 0x69, 0x6e, 0x64, 0x42,
|
||||||
|
0x0d, 0x0a, 0x0b, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x10,
|
||||||
|
0x0a, 0x0e, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72,
|
||||||
|
0x42, 0x12, 0x0a, 0x10, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63,
|
||||||
|
0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x19, 0x0a, 0x17, 0x5f, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64,
|
||||||
|
0x65, 0x5f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42,
|
||||||
|
0x1b, 0x0a, 0x19, 0x5f, 0x64, 0x61, 0x72, 0x6b, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x73, 0x65, 0x63,
|
||||||
|
0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x42, 0x0b, 0x0a, 0x09,
|
||||||
|
0x5f, 0x6c, 0x6f, 0x67, 0x6f, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x66, 0x61,
|
||||||
|
0x76, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x75, 0x72, 0x6c, 0x42, 0x20, 0x0a, 0x1e, 0x5f, 0x65, 0x72,
|
||||||
|
0x72, 0x6f, 0x72, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x66, 0x69, 0x72, 0x73,
|
||||||
|
0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x67, 0x72, 0x61, 0x70, 0x68, 0x42, 0x18, 0x0a, 0x16, 0x5f,
|
||||||
|
0x70, 0x61, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x65,
|
||||||
|
0x61, 0x64, 0x65, 0x72, 0x73, 0x4a, 0x04, 0x08, 0x29, 0x10, 0x2e, 0x4a, 0x04, 0x08, 0x62, 0x10,
|
||||||
|
0x63, 0x4a, 0x04, 0x08, 0x64, 0x10, 0x65, 0x4a, 0x04, 0x08, 0x6a, 0x10, 0x6b, 0x22, 0xc8, 0x02,
|
||||||
|
0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x4d, 0x74, 0x6c, 0x73,
|
||||||
|
0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x13, 0x0a, 0x02, 0x63, 0x61, 0x18, 0x01,
|
||||||
|
0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x63, 0x61, 0x88, 0x01, 0x01, 0x12, 0x15, 0x0a,
|
||||||
|
0x03, 0x63, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x03, 0x63, 0x72,
|
||||||
|
0x6c, 0x88, 0x01, 0x01, 0x12, 0x4b, 0x0a, 0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d,
|
||||||
|
0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x70, 0x6f, 0x6d, 0x65,
|
||||||
|
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x74, 0x6c, 0x73,
|
||||||
|
0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x48,
|
||||||
|
0x02, 0x52, 0x0b, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x88, 0x01,
|
||||||
|
0x01, 0x12, 0x52, 0x0a, 0x17, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65,
|
||||||
|
0x63, 0x74, 0x5f, 0x61, 0x6c, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03,
|
||||||
|
0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f,
|
||||||
|
0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x41, 0x4e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x52,
|
||||||
|
0x14, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x6c, 0x74,
|
||||||
|
0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x2d, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72,
|
||||||
|
0x69, 0x66, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x48,
|
||||||
|
0x03, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x44, 0x65, 0x70, 0x74,
|
||||||
|
0x68, 0x88, 0x01, 0x01, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x63, 0x61, 0x42, 0x06, 0x0a, 0x04, 0x5f,
|
||||||
|
0x63, 0x72, 0x6c, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x65, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d,
|
||||||
|
0x65, 0x6e, 0x74, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x69,
|
||||||
|
0x66, 0x79, 0x5f, 0x64, 0x65, 0x70, 0x74, 0x68, 0x22, 0xd1, 0x01, 0x0a, 0x0a, 0x53, 0x41, 0x4e,
|
||||||
|
0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x61, 0x6e, 0x5f, 0x74,
|
||||||
|
0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x70, 0x6f, 0x6d, 0x65,
|
||||||
|
0x72, 0x69, 0x75, 0x6d, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x53, 0x41, 0x4e, 0x4d,
|
||||||
|
0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x2e, 0x53, 0x41, 0x4e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07,
|
||||||
|
0x73, 0x61, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65,
|
||||||
|
0x72, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72,
|
||||||
|
0x6e, 0x22, 0x69, 0x0a, 0x07, 0x53, 0x41, 0x4e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14,
|
||||||
|
0x53, 0x41, 0x4e, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49,
|
||||||
|
0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x10,
|
||||||
|
0x01, 0x12, 0x07, 0x0a, 0x03, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x52,
|
||||||
|
0x49, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x50, 0x5f, 0x41, 0x44, 0x44, 0x52, 0x45, 0x53,
|
||||||
|
0x53, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x50, 0x52, 0x49, 0x4e,
|
||||||
|
0x43, 0x49, 0x50, 0x41, 0x4c, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x2a, 0x31, 0x0a, 0x0c,
|
||||||
|
0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x0e,
|
||||||
|
0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x48, 0x6f, 0x73, 0x74, 0x4f, 0x6e, 0x6c, 0x79, 0x10, 0x00,
|
||||||
|
0x12, 0x0d, 0x0a, 0x09, 0x49, 0x73, 0x73, 0x75, 0x65, 0x72, 0x55, 0x52, 0x49, 0x10, 0x01, 0x2a,
|
||||||
|
0x63, 0x0a, 0x13, 0x4d, 0x74, 0x6c, 0x73, 0x45, 0x6e, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x6d, 0x65,
|
||||||
|
0x6e, 0x74, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57,
|
||||||
|
0x4e, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x01, 0x12,
|
||||||
|
0x1c, 0x0a, 0x18, 0x50, 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x44,
|
||||||
|
0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x02, 0x12, 0x15, 0x0a,
|
||||||
|
0x11, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49,
|
||||||
|
0x4f, 0x4e, 0x10, 0x03, 0x42, 0x2e, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
|
||||||
|
0x6f, 0x6d, 0x2f, 0x70, 0x6f, 0x6d, 0x65, 0x72, 0x69, 0x75, 0x6d, 0x2f, 0x70, 0x6f, 0x6d, 0x65,
|
||||||
|
0x72, 0x69, 0x75, 0x6d, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f,
|
||||||
|
0x6e, 0x66, 0x69, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -3060,20 +3220,23 @@ var file_config_proto_depIdxs = []int32{
|
||||||
21, // 24: pomerium.config.Settings.jwt_claims_headers:type_name -> pomerium.config.Settings.JwtClaimsHeadersEntry
|
21, // 24: pomerium.config.Settings.jwt_claims_headers:type_name -> pomerium.config.Settings.JwtClaimsHeadersEntry
|
||||||
23, // 25: pomerium.config.Settings.default_upstream_timeout:type_name -> google.protobuf.Duration
|
23, // 25: pomerium.config.Settings.default_upstream_timeout:type_name -> google.protobuf.Duration
|
||||||
17, // 26: pomerium.config.Settings.metrics_certificate:type_name -> pomerium.config.Settings.Certificate
|
17, // 26: pomerium.config.Settings.metrics_certificate:type_name -> pomerium.config.Settings.Certificate
|
||||||
23, // 27: pomerium.config.Settings.grpc_client_timeout:type_name -> google.protobuf.Duration
|
23, // 27: pomerium.config.Settings.otel_exporter_otlp_timeout:type_name -> google.protobuf.Duration
|
||||||
11, // 28: pomerium.config.Settings.downstream_mtls:type_name -> pomerium.config.DownstreamMtlsSettings
|
23, // 28: pomerium.config.Settings.otel_exporter_otlp_traces_timeout:type_name -> google.protobuf.Duration
|
||||||
25, // 29: pomerium.config.Settings.codec_type:type_name -> envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.CodecType
|
23, // 29: pomerium.config.Settings.otel_bsp_schedule_delay:type_name -> google.protobuf.Duration
|
||||||
22, // 30: pomerium.config.Settings.runtime_flags:type_name -> pomerium.config.Settings.RuntimeFlagsEntry
|
23, // 30: pomerium.config.Settings.grpc_client_timeout:type_name -> google.protobuf.Duration
|
||||||
1, // 31: pomerium.config.DownstreamMtlsSettings.enforcement:type_name -> pomerium.config.MtlsEnforcementMode
|
11, // 31: pomerium.config.Settings.downstream_mtls:type_name -> pomerium.config.DownstreamMtlsSettings
|
||||||
12, // 32: pomerium.config.DownstreamMtlsSettings.match_subject_alt_names:type_name -> pomerium.config.SANMatcher
|
25, // 32: pomerium.config.Settings.codec_type:type_name -> envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager.CodecType
|
||||||
2, // 33: pomerium.config.SANMatcher.san_type:type_name -> pomerium.config.SANMatcher.SANType
|
22, // 33: pomerium.config.Settings.runtime_flags:type_name -> pomerium.config.Settings.RuntimeFlagsEntry
|
||||||
26, // 34: pomerium.config.Route.AllowedIdpClaimsEntry.value:type_name -> google.protobuf.ListValue
|
1, // 34: pomerium.config.DownstreamMtlsSettings.enforcement:type_name -> pomerium.config.MtlsEnforcementMode
|
||||||
26, // 35: pomerium.config.Policy.AllowedIdpClaimsEntry.value:type_name -> google.protobuf.ListValue
|
12, // 35: pomerium.config.DownstreamMtlsSettings.match_subject_alt_names:type_name -> pomerium.config.SANMatcher
|
||||||
36, // [36:36] is the sub-list for method output_type
|
2, // 36: pomerium.config.SANMatcher.san_type:type_name -> pomerium.config.SANMatcher.SANType
|
||||||
36, // [36:36] is the sub-list for method input_type
|
26, // 37: pomerium.config.Route.AllowedIdpClaimsEntry.value:type_name -> google.protobuf.ListValue
|
||||||
36, // [36:36] is the sub-list for extension type_name
|
26, // 38: pomerium.config.Policy.AllowedIdpClaimsEntry.value:type_name -> google.protobuf.ListValue
|
||||||
36, // [36:36] is the sub-list for extension extendee
|
39, // [39:39] is the sub-list for method output_type
|
||||||
0, // [0:36] is the sub-list for field type_name
|
39, // [39:39] is the sub-list for method input_type
|
||||||
|
39, // [39:39] is the sub-list for extension type_name
|
||||||
|
39, // [39:39] is the sub-list for extension extendee
|
||||||
|
0, // [0:39] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_config_proto_init() }
|
func init() { file_config_proto_init() }
|
||||||
|
|
|
@ -149,7 +149,7 @@ message Policy {
|
||||||
string remediation = 9;
|
string remediation = 9;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Next ID: 122.
|
// Next ID: 136.
|
||||||
message Settings {
|
message Settings {
|
||||||
message Certificate {
|
message Certificate {
|
||||||
bytes cert_bytes = 3;
|
bytes cert_bytes = 3;
|
||||||
|
@ -208,14 +208,22 @@ message Settings {
|
||||||
optional string metrics_basic_auth = 64;
|
optional string metrics_basic_auth = 64;
|
||||||
optional Certificate metrics_certificate = 65;
|
optional Certificate metrics_certificate = 65;
|
||||||
optional string metrics_client_ca = 66;
|
optional string metrics_client_ca = 66;
|
||||||
optional string tracing_provider = 41;
|
optional string otel_traces_exporter = 121;
|
||||||
optional double tracing_sample_rate = 42;
|
optional double otel_traces_sampler_arg = 122;
|
||||||
optional string tracing_otlp_endpoint = 120;
|
repeated string otel_resource_attributes = 123;
|
||||||
optional string tracing_otlp_protocol = 121;
|
optional string otel_log_level = 124;
|
||||||
reserved 98; // tracing_datadog_address
|
optional int32 otel_attribute_value_length_limit = 125;
|
||||||
reserved 43; // tracing_jaeger_collector_endpoint
|
optional string otel_exporter_otlp_endpoint = 126;
|
||||||
reserved 44; // tracing_jaeger_agent_endpoint
|
optional string otel_exporter_otlp_traces_endpoint = 127;
|
||||||
reserved 45; // tracing_zipkin_endpoint
|
optional string otel_exporter_otlp_protocol = 128;
|
||||||
|
optional string otel_exporter_otlp_traces_protocol = 129;
|
||||||
|
repeated string otel_exporter_otlp_headers = 130;
|
||||||
|
repeated string otel_exporter_otlp_traces_headers = 131;
|
||||||
|
optional google.protobuf.Duration otel_exporter_otlp_timeout = 132;
|
||||||
|
optional google.protobuf.Duration otel_exporter_otlp_traces_timeout = 133;
|
||||||
|
optional google.protobuf.Duration otel_bsp_schedule_delay = 134;
|
||||||
|
optional int32 otel_bsp_max_export_batch_size = 135;
|
||||||
|
reserved 41 to 45, 98; // legacy tracing fields
|
||||||
optional string grpc_address = 46;
|
optional string grpc_address = 46;
|
||||||
optional bool grpc_insecure = 47;
|
optional bool grpc_insecure = 47;
|
||||||
optional google.protobuf.Duration grpc_client_timeout = 99;
|
optional google.protobuf.Duration grpc_client_timeout = 99;
|
||||||
|
|
Loading…
Add table
Reference in a new issue