From b9e30643b67341d55ae10c14d1124fbbcda88b59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Eriksson?= Date: Mon, 16 Dec 2024 11:11:00 +0100 Subject: [PATCH] make worker pooling configurable per-service in runtime config --- cli/daemon/run/runtime_config2.go | 22 +- pkg/rtconfgen/base_builder.go | 43 +- pkg/rtconfgen/convert.go | 24 +- proto/encore/runtime/v1/runtime.pb.go | 921 ++++++++---------- proto/encore/runtime/v1/runtime.proto | 35 +- runtimes/core/src/infracfg.rs | 28 +- runtimes/core/src/lib.rs | 39 +- runtimes/core/src/proccfg.rs | 18 +- .../go/appruntime/exported/config/config.go | 4 +- .../exported/config/infra/config.go | 9 +- .../go/appruntime/exported/config/parse.go | 2 +- 11 files changed, 508 insertions(+), 637 deletions(-) diff --git a/cli/daemon/run/runtime_config2.go b/cli/daemon/run/runtime_config2.go index 679ac7651c..bbd4da66a1 100644 --- a/cli/daemon/run/runtime_config2.go +++ b/cli/daemon/run/runtime_config2.go @@ -83,7 +83,6 @@ type RuntimeConfigGenerator struct { SvcConfigs map[string]string conf *rtconfgen.Builder - compute *runtimev1.Compute authKeys []*runtimev1.EncoreAuthKey } @@ -145,11 +144,13 @@ func (g *RuntimeConfigGenerator) initialize() error { if err != nil { return errors.Wrap(err, "failed to get app's build settings") } - g.compute = &runtimev1.Compute{} - if buildSettings.WorkerPooling { - // Auto-detect the number of worker threads. - n := int32(0) - g.compute.WorkerThreads = &n + for _, svc := range g.md.Svcs { + cfg := &runtimev1.HostedService{Name: svc.Name} + if buildSettings.WorkerPooling { + n := int32(0) + cfg.WorkerThreads = &n + } + g.conf.ServiceConfig(cfg) } g.conf.AuthMethods([]*runtimev1.ServiceAuth{ @@ -449,7 +450,6 @@ func (g *RuntimeConfigGenerator) ProcPerService(proxy *svcproxy.SvcProxy) (servi // Set up the service processes. for _, svc := range g.md.Svcs { conf, err := g.conf.Deployment(newRid()). - Compute(g.compute). ServiceDiscovery(sd). HostsServices(svc.Name). ReduceWithMeta(g.md). @@ -473,7 +473,7 @@ func (g *RuntimeConfigGenerator) ProcPerService(proxy *svcproxy.SvcProxy) (servi // Set up the gateways. for _, gw := range g.md.Gateways { - conf, err := g.conf.Deployment(newRid()).Compute(g.compute).ServiceDiscovery(sd).HostsGateways(gw.EncoreName).ReduceWithMeta(g.md).BuildRuntimeConfig() + conf, err := g.conf.Deployment(newRid()).ServiceDiscovery(sd).HostsGateways(gw.EncoreName).ReduceWithMeta(g.md).BuildRuntimeConfig() if err != nil { return nil, nil, errors.Wrap(err, "failed to generate runtime config") } @@ -500,7 +500,7 @@ func (g *RuntimeConfigGenerator) AllInOneProc() (*ProcConfig, error) { sd := &runtimev1.ServiceDiscovery{Services: make(map[string]*runtimev1.ServiceDiscovery_Location)} - d := g.conf.Deployment(newRid()).Compute(g.compute).ServiceDiscovery(sd) + d := g.conf.Deployment(newRid()).ServiceDiscovery(sd) for _, gw := range g.md.Gateways { d.HostsGateways(gw.EncoreName) } @@ -570,7 +570,6 @@ func (g *RuntimeConfigGenerator) ProcPerServiceWithNewRuntimeConfig(proxy *svcpr for _, svc := range g.md.Svcs { conf, err = g.conf.Deployment(newRid()). - Compute(g.compute). ServiceDiscovery(sd). HostsServices(svc.Name). ReduceWithMeta(g.md). @@ -594,7 +593,6 @@ func (g *RuntimeConfigGenerator) ProcPerServiceWithNewRuntimeConfig(proxy *svcpr } conf, err = g.conf.Deployment(newRid()). - Compute(g.compute). ServiceDiscovery(sd). HostsGateways(gw.EncoreName). //ReduceWithMeta(g.md). @@ -620,7 +618,7 @@ func (g *RuntimeConfigGenerator) ForTests(newRuntimeConf bool) (envs []string, e sd := &runtimev1.ServiceDiscovery{Services: make(map[string]*runtimev1.ServiceDiscovery_Location)} - d := g.conf.Deployment(newRid()).Compute(g.compute).ServiceDiscovery(sd) + d := g.conf.Deployment(newRid()).ServiceDiscovery(sd) for _, gw := range g.md.Gateways { d.HostsGateways(gw.EncoreName) } diff --git a/pkg/rtconfgen/base_builder.go b/pkg/rtconfgen/base_builder.go index bd434ad398..4f0b6975ce 100644 --- a/pkg/rtconfgen/base_builder.go +++ b/pkg/rtconfgen/base_builder.go @@ -1,7 +1,9 @@ package rtconfgen import ( + "cmp" "fmt" + "slices" "time" "github.com/cockroachdb/errors" @@ -41,6 +43,7 @@ type Builder struct { defaultDeployedAt time.Time deployments map[string]*Deployment + services map[string]*runtimev1.HostedService } func NewBuilder() *Builder { @@ -50,6 +53,7 @@ func NewBuilder() *Builder { rs: rs, obs: &runtimev1.Observability{}, deployments: make(map[string]*Deployment), + services: make(map[string]*runtimev1.HostedService), } return b @@ -109,6 +113,10 @@ func (b *Builder) LogsProviderFn(rid string, fn func() *runtimev1.LogsProvider) addResFunc(&b.obs.Logs, b.rs, rid, fn) } +func (b *Builder) ServiceConfig(svc *runtimev1.HostedService) { + b.services[svc.Name] = svc +} + func (b *Builder) Deployment(rid string) *Deployment { if d, ok := b.deployments[rid]; ok { return d @@ -135,14 +143,11 @@ type Deployment struct { // The service-discovery configuration for this deployment. sd *runtimev1.ServiceDiscovery - // The compute configuration for this deployment. - compute *runtimev1.Compute - // The base URL for reaching this deployment from another service. svc2svcBaseURL string - hostedGateways []string - hostedServices []string + hostedGateways []string + hostedServiceNames []string } // DeployID sets the deploy id. @@ -165,7 +170,7 @@ func (d *Deployment) DynamicExperiments(experiments []string) *Deployment { // HostsServices adds the given service names as being hosted by this deployment. // It appends and doesn't overwrite any existing hosted services. func (d *Deployment) HostsServices(names ...string) *Deployment { - d.hostedServices = append(d.hostedServices, names...) + d.hostedServiceNames = append(d.hostedServiceNames, names...) return d } @@ -188,11 +193,6 @@ func (d *Deployment) ServiceDiscovery(sd *runtimev1.ServiceDiscovery) *Deploymen return d } -func (d *Deployment) Compute(c *runtimev1.Compute) *Deployment { - d.compute = c - return d -} - func (d *Deployment) ReduceWithMeta(md *meta.Data) *Deployment { d.reduceWith = option.Some(md) return d @@ -206,17 +206,27 @@ func (d *Deployment) BuildRuntimeConfig() (*runtimev1.RuntimeConfig, error) { return nil, err } if reduced, ok := d.reduceWith.Get(); ok { - infra = reduceForServices(infra, reduced, d.hostedServices) + infra = reduceForServices(infra, reduced, d.hostedServiceNames) } graceful := d.gracefulShutdown.GetOrElse(d.b.defaultGracefulShutdown) var hostedServices []*runtimev1.HostedService - for _, svcName := range d.hostedServices { - hostedServices = append(hostedServices, &runtimev1.HostedService{ - Name: svcName, - }) + { + for _, svcName := range d.hostedServiceNames { + // If we have a service config defined for this service, use it. + cfg := b.services[svcName] + if cfg == nil { + cfg = &runtimev1.HostedService{ + Name: svcName, + } + } + hostedServices = append(hostedServices, cfg) + } } + slices.SortFunc(hostedServices, func(a, b *runtimev1.HostedService) int { + return cmp.Compare(a.Name, b.Name) + }) gatewaysByName := make(map[string]*runtimev1.Gateway) for _, gw := range infra.Resources.Gateways { @@ -236,7 +246,6 @@ func (d *Deployment) BuildRuntimeConfig() (*runtimev1.RuntimeConfig, error) { HostedGateways: gatewayRids, HostedServices: hostedServices, ServiceDiscovery: d.sd, - Compute: d.compute, GracefulShutdown: graceful, DynamicExperiments: d.dynamicExperiments, Observability: b.obs, diff --git a/pkg/rtconfgen/convert.go b/pkg/rtconfgen/convert.go index 111aa8cb2d..72aa7e3cdb 100644 --- a/pkg/rtconfgen/convert.go +++ b/pkg/rtconfgen/convert.go @@ -7,6 +7,7 @@ import ( "slices" "github.com/cockroachdb/errors" + "github.com/rs/zerolog" "go.encore.dev/platform-sdk/pkg/auth" @@ -53,7 +54,6 @@ func (c *legacyConverter) Convert() (*config.Runtime, error) { PubsubTopics: make(map[string]*config.PubsubTopic), Buckets: make(map[string]*config.Bucket), CORS: &config.CORS{}, - LogLevel: "trace", } // Deployment handling. @@ -135,24 +135,16 @@ func (c *legacyConverter) Convert() (*config.Runtime, error) { } } - if compute := deployment.Compute; compute != nil { - if compute.LogLevel != nil { - switch *compute.LogLevel { - case runtimev1.Compute_LOG_LEVEL_DISABLED: - cfg.LogLevel = "disabled" - case runtimev1.Compute_LOG_LEVEL_ERROR: - cfg.LogLevel = "error" - case runtimev1.Compute_LOG_LEVEL_WARN: - cfg.LogLevel = "warn" - case runtimev1.Compute_LOG_LEVEL_INFO: - cfg.LogLevel = "info" - case runtimev1.Compute_LOG_LEVEL_DEBUG: - cfg.LogLevel = "debug" - case runtimev1.Compute_LOG_LEVEL_TRACE: - cfg.LogLevel = "trace" + // Use the most verbose logging requested. + currLevel := zerolog.TraceLevel + for _, svc := range deployment.HostedServices { + if svc.LogConfig != nil { + if level, err := zerolog.ParseLevel(*svc.LogConfig); err == nil && level < currLevel { + currLevel = level } } } + cfg.LogConfig = currLevel.String() } // Infrastructure handling. diff --git a/proto/encore/runtime/v1/runtime.pb.go b/proto/encore/runtime/v1/runtime.pb.go index 2e48111c33..7c2da3106b 100644 --- a/proto/encore/runtime/v1/runtime.pb.go +++ b/proto/encore/runtime/v1/runtime.pb.go @@ -135,64 +135,6 @@ func (Environment_Cloud) EnumDescriptor() ([]byte, []int) { return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{1, 1} } -type Compute_LogLevel int32 - -const ( - Compute_LOG_LEVEL_DISABLED Compute_LogLevel = 0 - Compute_LOG_LEVEL_ERROR Compute_LogLevel = 1 - Compute_LOG_LEVEL_WARN Compute_LogLevel = 2 - Compute_LOG_LEVEL_INFO Compute_LogLevel = 3 - Compute_LOG_LEVEL_DEBUG Compute_LogLevel = 4 - Compute_LOG_LEVEL_TRACE Compute_LogLevel = 5 -) - -// Enum value maps for Compute_LogLevel. -var ( - Compute_LogLevel_name = map[int32]string{ - 0: "LOG_LEVEL_DISABLED", - 1: "LOG_LEVEL_ERROR", - 2: "LOG_LEVEL_WARN", - 3: "LOG_LEVEL_INFO", - 4: "LOG_LEVEL_DEBUG", - 5: "LOG_LEVEL_TRACE", - } - Compute_LogLevel_value = map[string]int32{ - "LOG_LEVEL_DISABLED": 0, - "LOG_LEVEL_ERROR": 1, - "LOG_LEVEL_WARN": 2, - "LOG_LEVEL_INFO": 3, - "LOG_LEVEL_DEBUG": 4, - "LOG_LEVEL_TRACE": 5, - } -) - -func (x Compute_LogLevel) Enum() *Compute_LogLevel { - p := new(Compute_LogLevel) - *p = x - return p -} - -func (x Compute_LogLevel) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Compute_LogLevel) Descriptor() protoreflect.EnumDescriptor { - return file_encore_runtime_v1_runtime_proto_enumTypes[2].Descriptor() -} - -func (Compute_LogLevel) Type() protoreflect.EnumType { - return &file_encore_runtime_v1_runtime_proto_enumTypes[2] -} - -func (x Compute_LogLevel) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Compute_LogLevel.Descriptor instead. -func (Compute_LogLevel) EnumDescriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{3, 0} -} - type RuntimeConfig struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -377,8 +319,6 @@ type Deployment struct { ServiceDiscovery *ServiceDiscovery `protobuf:"bytes,8,opt,name=service_discovery,json=serviceDiscovery,proto3" json:"service_discovery,omitempty"` // Graceful shutdown behavior. GracefulShutdown *GracefulShutdown `protobuf:"bytes,9,opt,name=graceful_shutdown,json=gracefulShutdown,proto3" json:"graceful_shutdown,omitempty"` - // Compute configuration. - Compute *Compute `protobuf:"bytes,10,opt,name=compute,proto3" json:"compute,omitempty"` } func (x *Deployment) Reset() { @@ -476,74 +416,6 @@ func (x *Deployment) GetGracefulShutdown() *GracefulShutdown { return nil } -func (x *Deployment) GetCompute() *Compute { - if x != nil { - return x.Compute - } - return nil -} - -type Compute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Number of worker threads to use. - // If unset it defaults to 1. If set to 0 the runtime - // automatically determines the number of threads to use - // based on the number of CPUs available. - WorkerThreads *int32 `protobuf:"varint,1,opt,name=worker_threads,json=workerThreads,proto3,oneof" json:"worker_threads,omitempty"` - // The minimum log level to use. - // If unset it defaults to LOG_LEVEL_TRACE. - LogLevel *Compute_LogLevel `protobuf:"varint,2,opt,name=log_level,json=logLevel,proto3,enum=encore.runtime.v1.Compute_LogLevel,oneof" json:"log_level,omitempty"` -} - -func (x *Compute) Reset() { - *x = Compute{} - if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Compute) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Compute) ProtoMessage() {} - -func (x *Compute) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Compute.ProtoReflect.Descriptor instead. -func (*Compute) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{3} -} - -func (x *Compute) GetWorkerThreads() int32 { - if x != nil && x.WorkerThreads != nil { - return *x.WorkerThreads - } - return 0 -} - -func (x *Compute) GetLogLevel() Compute_LogLevel { - if x != nil && x.LogLevel != nil { - return *x.LogLevel - } - return Compute_LOG_LEVEL_DISABLED -} - type Observability struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -558,7 +430,7 @@ type Observability struct { func (x *Observability) Reset() { *x = Observability{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[4] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -571,7 +443,7 @@ func (x *Observability) String() string { func (*Observability) ProtoMessage() {} func (x *Observability) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[4] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -584,7 +456,7 @@ func (x *Observability) ProtoReflect() protoreflect.Message { // Deprecated: Use Observability.ProtoReflect.Descriptor instead. func (*Observability) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{4} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{3} } func (x *Observability) GetTracing() []*TracingProvider { @@ -615,12 +487,20 @@ type HostedService struct { // The name of the service. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Number of worker threads to use. + // If unset it defaults to 1. If set to 0 the runtime + // automatically determines the number of threads to use + // based on the number of CPUs available. + WorkerThreads *int32 `protobuf:"varint,2,opt,name=worker_threads,json=workerThreads,proto3,oneof" json:"worker_threads,omitempty"` + // The log configuration to use for this service. + // If unset it defaults to "trace". + LogConfig *string `protobuf:"bytes,3,opt,name=log_config,json=logConfig,proto3,oneof" json:"log_config,omitempty"` } func (x *HostedService) Reset() { *x = HostedService{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[5] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -633,7 +513,7 @@ func (x *HostedService) String() string { func (*HostedService) ProtoMessage() {} func (x *HostedService) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[5] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -646,7 +526,7 @@ func (x *HostedService) ProtoReflect() protoreflect.Message { // Deprecated: Use HostedService.ProtoReflect.Descriptor instead. func (*HostedService) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{5} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{4} } func (x *HostedService) GetName() string { @@ -656,6 +536,20 @@ func (x *HostedService) GetName() string { return "" } +func (x *HostedService) GetWorkerThreads() int32 { + if x != nil && x.WorkerThreads != nil { + return *x.WorkerThreads + } + return 0 +} + +func (x *HostedService) GetLogConfig() string { + if x != nil && x.LogConfig != nil { + return *x.LogConfig + } + return "" +} + type ServiceAuth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -673,7 +567,7 @@ type ServiceAuth struct { func (x *ServiceAuth) Reset() { *x = ServiceAuth{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[6] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -686,7 +580,7 @@ func (x *ServiceAuth) String() string { func (*ServiceAuth) ProtoMessage() {} func (x *ServiceAuth) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[6] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -699,7 +593,7 @@ func (x *ServiceAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceAuth.ProtoReflect.Descriptor instead. func (*ServiceAuth) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{6} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{5} } func (m *ServiceAuth) GetAuthMethod() isServiceAuth_AuthMethod { @@ -756,7 +650,7 @@ type TracingProvider struct { func (x *TracingProvider) Reset() { *x = TracingProvider{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[7] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -769,7 +663,7 @@ func (x *TracingProvider) String() string { func (*TracingProvider) ProtoMessage() {} func (x *TracingProvider) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[7] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -782,7 +676,7 @@ func (x *TracingProvider) ProtoReflect() protoreflect.Message { // Deprecated: Use TracingProvider.ProtoReflect.Descriptor instead. func (*TracingProvider) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{6} } func (x *TracingProvider) GetRid() string { @@ -837,7 +731,7 @@ type MetricsProvider struct { func (x *MetricsProvider) Reset() { *x = MetricsProvider{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[8] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -850,7 +744,7 @@ func (x *MetricsProvider) String() string { func (*MetricsProvider) ProtoMessage() {} func (x *MetricsProvider) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[8] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -863,7 +757,7 @@ func (x *MetricsProvider) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsProvider.ProtoReflect.Descriptor instead. func (*MetricsProvider) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7} } func (x *MetricsProvider) GetRid() string { @@ -968,7 +862,7 @@ type LogsProvider struct { func (x *LogsProvider) Reset() { *x = LogsProvider{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[9] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -981,7 +875,7 @@ func (x *LogsProvider) String() string { func (*LogsProvider) ProtoMessage() {} func (x *LogsProvider) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[9] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -994,7 +888,7 @@ func (x *LogsProvider) ProtoReflect() protoreflect.Message { // Deprecated: Use LogsProvider.ProtoReflect.Descriptor instead. func (*LogsProvider) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{9} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8} } func (x *LogsProvider) GetRid() string { @@ -1016,7 +910,7 @@ type EncoreAuthKey struct { func (x *EncoreAuthKey) Reset() { *x = EncoreAuthKey{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[10] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1029,7 +923,7 @@ func (x *EncoreAuthKey) String() string { func (*EncoreAuthKey) ProtoMessage() {} func (x *EncoreAuthKey) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[10] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1042,7 +936,7 @@ func (x *EncoreAuthKey) ProtoReflect() protoreflect.Message { // Deprecated: Use EncoreAuthKey.ProtoReflect.Descriptor instead. func (*EncoreAuthKey) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{10} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{9} } func (x *EncoreAuthKey) GetId() uint32 { @@ -1072,7 +966,7 @@ type ServiceDiscovery struct { func (x *ServiceDiscovery) Reset() { *x = ServiceDiscovery{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[11] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1085,7 +979,7 @@ func (x *ServiceDiscovery) String() string { func (*ServiceDiscovery) ProtoMessage() {} func (x *ServiceDiscovery) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[11] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1098,7 +992,7 @@ func (x *ServiceDiscovery) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceDiscovery.ProtoReflect.Descriptor instead. func (*ServiceDiscovery) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{11} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{10} } func (x *ServiceDiscovery) GetServices() map[string]*ServiceDiscovery_Location { @@ -1134,7 +1028,7 @@ type GracefulShutdown struct { func (x *GracefulShutdown) Reset() { *x = GracefulShutdown{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[12] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1147,7 +1041,7 @@ func (x *GracefulShutdown) String() string { func (*GracefulShutdown) ProtoMessage() {} func (x *GracefulShutdown) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[12] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1160,7 +1054,7 @@ func (x *GracefulShutdown) ProtoReflect() protoreflect.Message { // Deprecated: Use GracefulShutdown.ProtoReflect.Descriptor instead. func (*GracefulShutdown) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{12} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{11} } func (x *GracefulShutdown) GetTotal() *durationpb.Duration { @@ -1198,7 +1092,7 @@ type EncorePlatform struct { func (x *EncorePlatform) Reset() { *x = EncorePlatform{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[13] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1211,7 +1105,7 @@ func (x *EncorePlatform) String() string { func (*EncorePlatform) ProtoMessage() {} func (x *EncorePlatform) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[13] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1224,7 +1118,7 @@ func (x *EncorePlatform) ProtoReflect() protoreflect.Message { // Deprecated: Use EncorePlatform.ProtoReflect.Descriptor instead. func (*EncorePlatform) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{13} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{12} } func (x *EncorePlatform) GetPlatformSigningKeys() []*EncoreAuthKey { @@ -1255,7 +1149,7 @@ type RateLimiter struct { func (x *RateLimiter) Reset() { *x = RateLimiter{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[14] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1268,7 +1162,7 @@ func (x *RateLimiter) String() string { func (*RateLimiter) ProtoMessage() {} func (x *RateLimiter) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[14] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1281,7 +1175,7 @@ func (x *RateLimiter) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimiter.ProtoReflect.Descriptor instead. func (*RateLimiter) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{14} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{13} } func (m *RateLimiter) GetKind() isRateLimiter_Kind { @@ -1323,7 +1217,7 @@ type EncoreCloudProvider struct { func (x *EncoreCloudProvider) Reset() { *x = EncoreCloudProvider{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[15] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1336,7 +1230,7 @@ func (x *EncoreCloudProvider) String() string { func (*EncoreCloudProvider) ProtoMessage() {} func (x *EncoreCloudProvider) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[15] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1349,7 +1243,7 @@ func (x *EncoreCloudProvider) ProtoReflect() protoreflect.Message { // Deprecated: Use EncoreCloudProvider.ProtoReflect.Descriptor instead. func (*EncoreCloudProvider) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{15} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{14} } func (x *EncoreCloudProvider) GetRid() string { @@ -1382,7 +1276,7 @@ type ServiceAuth_NoopAuth struct { func (x *ServiceAuth_NoopAuth) Reset() { *x = ServiceAuth_NoopAuth{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[16] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1395,7 +1289,7 @@ func (x *ServiceAuth_NoopAuth) String() string { func (*ServiceAuth_NoopAuth) ProtoMessage() {} func (x *ServiceAuth_NoopAuth) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[16] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1408,7 +1302,7 @@ func (x *ServiceAuth_NoopAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceAuth_NoopAuth.ProtoReflect.Descriptor instead. func (*ServiceAuth_NoopAuth) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{6, 0} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{5, 0} } type ServiceAuth_EncoreAuth struct { @@ -1422,7 +1316,7 @@ type ServiceAuth_EncoreAuth struct { func (x *ServiceAuth_EncoreAuth) Reset() { *x = ServiceAuth_EncoreAuth{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[17] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1435,7 +1329,7 @@ func (x *ServiceAuth_EncoreAuth) String() string { func (*ServiceAuth_EncoreAuth) ProtoMessage() {} func (x *ServiceAuth_EncoreAuth) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[17] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1448,7 +1342,7 @@ func (x *ServiceAuth_EncoreAuth) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceAuth_EncoreAuth.ProtoReflect.Descriptor instead. func (*ServiceAuth_EncoreAuth) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{6, 1} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{5, 1} } func (x *ServiceAuth_EncoreAuth) GetAuthKeys() []*EncoreAuthKey { @@ -1472,7 +1366,7 @@ type TracingProvider_EncoreTracingProvider struct { func (x *TracingProvider_EncoreTracingProvider) Reset() { *x = TracingProvider_EncoreTracingProvider{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[18] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1485,7 +1379,7 @@ func (x *TracingProvider_EncoreTracingProvider) String() string { func (*TracingProvider_EncoreTracingProvider) ProtoMessage() {} func (x *TracingProvider_EncoreTracingProvider) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[18] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1498,7 +1392,7 @@ func (x *TracingProvider_EncoreTracingProvider) ProtoReflect() protoreflect.Mess // Deprecated: Use TracingProvider_EncoreTracingProvider.ProtoReflect.Descriptor instead. func (*TracingProvider_EncoreTracingProvider) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7, 0} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{6, 0} } func (x *TracingProvider_EncoreTracingProvider) GetTraceEndpoint() string { @@ -1536,7 +1430,7 @@ type MetricsProvider_GCPCloudMonitoring struct { func (x *MetricsProvider_GCPCloudMonitoring) Reset() { *x = MetricsProvider_GCPCloudMonitoring{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[19] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1549,7 +1443,7 @@ func (x *MetricsProvider_GCPCloudMonitoring) String() string { func (*MetricsProvider_GCPCloudMonitoring) ProtoMessage() {} func (x *MetricsProvider_GCPCloudMonitoring) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[19] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1562,7 +1456,7 @@ func (x *MetricsProvider_GCPCloudMonitoring) ProtoReflect() protoreflect.Message // Deprecated: Use MetricsProvider_GCPCloudMonitoring.ProtoReflect.Descriptor instead. func (*MetricsProvider_GCPCloudMonitoring) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8, 0} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7, 0} } func (x *MetricsProvider_GCPCloudMonitoring) GetProjectId() string { @@ -1605,7 +1499,7 @@ type MetricsProvider_AWSCloudWatch struct { func (x *MetricsProvider_AWSCloudWatch) Reset() { *x = MetricsProvider_AWSCloudWatch{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[20] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1618,7 +1512,7 @@ func (x *MetricsProvider_AWSCloudWatch) String() string { func (*MetricsProvider_AWSCloudWatch) ProtoMessage() {} func (x *MetricsProvider_AWSCloudWatch) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[20] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1631,7 +1525,7 @@ func (x *MetricsProvider_AWSCloudWatch) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsProvider_AWSCloudWatch.ProtoReflect.Descriptor instead. func (*MetricsProvider_AWSCloudWatch) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8, 1} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7, 1} } func (x *MetricsProvider_AWSCloudWatch) GetNamespace() string { @@ -1653,7 +1547,7 @@ type MetricsProvider_PrometheusRemoteWrite struct { func (x *MetricsProvider_PrometheusRemoteWrite) Reset() { *x = MetricsProvider_PrometheusRemoteWrite{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[21] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1666,7 +1560,7 @@ func (x *MetricsProvider_PrometheusRemoteWrite) String() string { func (*MetricsProvider_PrometheusRemoteWrite) ProtoMessage() {} func (x *MetricsProvider_PrometheusRemoteWrite) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[21] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1679,7 +1573,7 @@ func (x *MetricsProvider_PrometheusRemoteWrite) ProtoReflect() protoreflect.Mess // Deprecated: Use MetricsProvider_PrometheusRemoteWrite.ProtoReflect.Descriptor instead. func (*MetricsProvider_PrometheusRemoteWrite) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8, 2} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7, 2} } func (x *MetricsProvider_PrometheusRemoteWrite) GetRemoteWriteUrl() *SecretData { @@ -1701,7 +1595,7 @@ type MetricsProvider_Datadog struct { func (x *MetricsProvider_Datadog) Reset() { *x = MetricsProvider_Datadog{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[22] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1714,7 +1608,7 @@ func (x *MetricsProvider_Datadog) String() string { func (*MetricsProvider_Datadog) ProtoMessage() {} func (x *MetricsProvider_Datadog) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[22] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1727,7 +1621,7 @@ func (x *MetricsProvider_Datadog) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsProvider_Datadog.ProtoReflect.Descriptor instead. func (*MetricsProvider_Datadog) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{8, 3} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{7, 3} } func (x *MetricsProvider_Datadog) GetSite() string { @@ -1758,7 +1652,7 @@ type ServiceDiscovery_Location struct { func (x *ServiceDiscovery_Location) Reset() { *x = ServiceDiscovery_Location{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[26] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1771,7 +1665,7 @@ func (x *ServiceDiscovery_Location) String() string { func (*ServiceDiscovery_Location) ProtoMessage() {} func (x *ServiceDiscovery_Location) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[26] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1784,7 +1678,7 @@ func (x *ServiceDiscovery_Location) ProtoReflect() protoreflect.Message { // Deprecated: Use ServiceDiscovery_Location.ProtoReflect.Descriptor instead. func (*ServiceDiscovery_Location) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{11, 1} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{10, 1} } func (x *ServiceDiscovery_Location) GetBaseUrl() string { @@ -1815,7 +1709,7 @@ type RateLimiter_TokenBucket struct { func (x *RateLimiter_TokenBucket) Reset() { *x = RateLimiter_TokenBucket{} if protoimpl.UnsafeEnabled { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[27] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1828,7 +1722,7 @@ func (x *RateLimiter_TokenBucket) String() string { func (*RateLimiter_TokenBucket) ProtoMessage() {} func (x *RateLimiter_TokenBucket) ProtoReflect() protoreflect.Message { - mi := &file_encore_runtime_v1_runtime_proto_msgTypes[27] + mi := &file_encore_runtime_v1_runtime_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1841,7 +1735,7 @@ func (x *RateLimiter_TokenBucket) ProtoReflect() protoreflect.Message { // Deprecated: Use RateLimiter_TokenBucket.ProtoReflect.Descriptor instead. func (*RateLimiter_TokenBucket) Descriptor() ([]byte, []int) { - return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{14, 0} + return file_encore_runtime_v1_runtime_proto_rawDescGZIP(), []int{13, 0} } func (x *RateLimiter_TokenBucket) GetRate() float64 { @@ -1920,7 +1814,7 @@ var file_encore_runtime_v1_runtime_proto_rawDesc = []byte{ 0x45, 0x4e, 0x43, 0x4f, 0x52, 0x45, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x41, 0x57, 0x53, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, 0x47, 0x43, 0x50, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x5f, - 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x05, 0x22, 0xf0, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, + 0x41, 0x5a, 0x55, 0x52, 0x45, 0x10, 0x05, 0x22, 0xba, 0x04, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x5f, @@ -1956,229 +1850,214 @@ var file_encore_runtime_v1_runtime_proto_rawDesc = []byte{ 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x10, 0x67, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x68, 0x75, 0x74, - 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x65, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x22, 0xa9, 0x02, 0x0a, 0x07, 0x43, - 0x6f, 0x6d, 0x70, 0x75, 0x74, 0x65, 0x12, 0x2a, 0x0a, 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, - 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, - 0x01, 0x01, 0x12, 0x45, 0x0a, 0x09, 0x6c, 0x6f, 0x67, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6d, 0x70, 0x75, 0x74, - 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x48, 0x01, 0x52, 0x08, 0x6c, 0x6f, - 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x88, 0x01, 0x01, 0x22, 0x89, 0x01, 0x0a, 0x08, 0x4c, 0x6f, - 0x67, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x12, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, - 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, - 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x45, 0x52, 0x52, 0x4f, - 0x52, 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, - 0x5f, 0x57, 0x41, 0x52, 0x4e, 0x10, 0x02, 0x12, 0x12, 0x0a, 0x0e, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, - 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4c, - 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x10, 0x04, - 0x12, 0x13, 0x0a, 0x0f, 0x4c, 0x4f, 0x47, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x45, 0x10, 0x05, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x42, 0x0c, 0x0a, 0x0a, 0x5f, 0x6c, 0x6f, 0x67, - 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, - 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x74, - 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x48, 0x6f, 0x73, - 0x74, 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x82, - 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x3d, - 0x0a, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, - 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x4e, 0x6f, 0x6f, - 0x70, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x4c, 0x0a, - 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, - 0x74, 0x68, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, - 0x0a, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x1a, 0x0a, 0x0a, 0x08, 0x4e, - 0x6f, 0x6f, 0x70, 0x41, 0x75, 0x74, 0x68, 0x1a, 0x4b, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x6f, 0x72, - 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, - 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, - 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, - 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, - 0x4b, 0x65, 0x79, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x52, 0x0a, 0x06, 0x65, 0x6e, 0x63, - 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, 0x6e, - 0x63, 0x6f, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x7a, 0x0a, - 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x65, 0x5f, - 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x74, 0x72, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, 0x0a, - 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, - 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xf6, 0x09, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x13, 0x63, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, - 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x5a, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x72, - 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x64, 0x6f, 0x77, 0x6e, 0x22, 0xc0, 0x01, 0x0a, 0x0d, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, + 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x07, 0x74, 0x72, 0x61, 0x63, 0x69, 0x6e, + 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x61, 0x63, + 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x74, 0x72, 0x61, + 0x63, 0x69, 0x6e, 0x67, 0x12, 0x3c, 0x0a, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x18, + 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x07, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x12, 0x33, 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x0d, 0x48, 0x6f, 0x73, 0x74, + 0x65, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2a, 0x0a, + 0x0e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x54, + 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, 0x88, 0x01, 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x6c, 0x6f, 0x67, + 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x09, 0x6c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x88, 0x01, 0x01, 0x42, 0x11, 0x0a, + 0x0f, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x61, 0x64, 0x73, + 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x82, 0x02, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, + 0x3d, 0x0a, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, - 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x12, 0x49, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x2e, 0x4e, 0x6f, + 0x6f, 0x70, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, 0x52, 0x04, 0x6e, 0x6f, 0x6f, 0x70, 0x12, 0x4c, + 0x0a, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x18, 0x0b, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, + 0x75, 0x74, 0x68, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x48, 0x00, + 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x1a, 0x0a, 0x0a, 0x08, + 0x4e, 0x6f, 0x6f, 0x70, 0x41, 0x75, 0x74, 0x68, 0x1a, 0x4b, 0x0a, 0x0a, 0x45, 0x6e, 0x63, 0x6f, + 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, + 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x63, 0x6f, + 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, + 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x61, 0x75, 0x74, + 0x68, 0x4b, 0x65, 0x79, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x22, 0xff, 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x52, 0x0a, 0x06, 0x65, 0x6e, + 0x63, 0x6f, 0x72, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x45, + 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x06, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x7a, + 0x0a, 0x15, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x54, 0x72, 0x61, 0x63, 0x69, 0x6e, 0x67, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x65, + 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x74, 0x72, 0x61, 0x63, 0x65, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x28, + 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, + 0x67, 0x52, 0x61, 0x74, 0x65, 0x88, 0x01, 0x01, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xf6, 0x09, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, 0x64, 0x12, 0x4a, 0x0a, 0x13, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x5a, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, + 0x72, 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, + 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, + 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x12, 0x49, 0x0a, 0x03, 0x67, 0x63, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x35, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, + 0x44, 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, + 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x2e, 0x41, 0x57, 0x53, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x57, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, + 0x52, 0x03, 0x61, 0x77, 0x73, 0x12, 0x66, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x03, 0x67, 0x63, 0x70, 0x12, 0x44, - 0x0a, 0x03, 0x61, 0x77, 0x73, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x65, 0x6e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, - 0x41, 0x57, 0x53, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x57, 0x61, 0x74, 0x63, 0x68, 0x48, 0x00, 0x52, - 0x03, 0x61, 0x77, 0x73, 0x12, 0x66, 0x0a, 0x11, 0x70, 0x72, 0x6f, 0x6d, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x38, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, 0x6f, - 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x46, 0x0a, 0x07, - 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x69, 0x64, 0x65, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x70, 0x72, + 0x6f, 0x6d, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x12, 0x46, 0x0a, + 0x07, 0x64, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x07, 0x64, 0x61, + 0x74, 0x61, 0x64, 0x6f, 0x67, 0x1a, 0xf3, 0x03, 0x0a, 0x12, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, + 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x6d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6d, 0x6f, + 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, + 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x4d, + 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x6d, 0x6f, 0x6e, + 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, + 0x62, 0x65, 0x6c, 0x73, 0x12, 0x69, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x63, + 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, + 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, + 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, + 0x4a, 0x0a, 0x1c, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3e, 0x0a, 0x10, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, + 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 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, 0x2d, 0x0a, 0x0d, 0x41, + 0x57, 0x53, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x60, 0x0a, 0x15, 0x50, 0x72, + 0x6f, 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, + 0x69, 0x74, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x77, 0x72, + 0x69, 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x48, 0x00, 0x52, 0x07, 0x64, 0x61, 0x74, - 0x61, 0x64, 0x6f, 0x67, 0x1a, 0xf3, 0x03, 0x0a, 0x12, 0x47, 0x43, 0x50, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x17, 0x6d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6d, 0x6f, 0x6e, - 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x8e, 0x01, 0x0a, 0x19, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x52, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x43, 0x50, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x6f, - 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x17, 0x6d, 0x6f, 0x6e, 0x69, - 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x12, 0x69, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x46, 0x2e, 0x65, 0x6e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2e, 0x47, 0x43, - 0x50, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x69, 0x6e, 0x67, - 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x1a, 0x4a, - 0x0a, 0x1c, 0x4d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x65, 0x64, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x3e, 0x0a, 0x10, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 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, 0x2d, 0x0a, 0x0d, 0x41, 0x57, - 0x53, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x57, 0x61, 0x74, 0x63, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x1a, 0x60, 0x0a, 0x15, 0x50, 0x72, 0x6f, - 0x6d, 0x65, 0x74, 0x68, 0x65, 0x75, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, - 0x74, 0x65, 0x12, 0x47, 0x0a, 0x10, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, + 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x55, 0x0a, 0x07, + 0x44, 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x61, + 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x57, 0x72, 0x69, 0x74, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x55, 0x0a, 0x07, 0x44, - 0x61, 0x74, 0x61, 0x64, 0x6f, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x74, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x61, 0x70, - 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x65, 0x6e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, - 0x65, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x20, - 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x10, - 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, 0x64, - 0x22, 0x52, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, - 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, - 0x64, 0x61, 0x74, 0x61, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, 0x6e, + 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x06, 0x61, 0x70, 0x69, + 0x4b, 0x65, 0x79, 0x42, 0x0a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, + 0x20, 0x0a, 0x0c, 0x4c, 0x6f, 0x67, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, + 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, 0x69, + 0x64, 0x22, 0x52, 0x0a, 0x0d, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, + 0x65, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x31, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, + 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xb6, 0x02, 0x0a, 0x10, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x12, 0x4d, 0x0a, 0x08, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x65, + 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, + 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, + 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x69, 0x0a, 0x0d, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x1a, 0x69, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x42, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x65, 0x6e, 0x63, - 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x76, 0x65, 0x72, 0x79, 0x2e, - 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, - 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x61, 0x75, - 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, - 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0xbc, 0x01, - 0x0a, 0x10, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x68, 0x75, 0x74, 0x64, 0x6f, - 0x77, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 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, 0x52, 0x05, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0e, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, 0x5f, - 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, - 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x22, 0xc7, 0x01, 0x0a, - 0x0e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, - 0x54, 0x0a, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x69, 0x67, 0x6e, - 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, - 0x52, 0x13, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, - 0x67, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x5f, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, - 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x52, 0x61, 0x74, 0x65, 0x4c, - 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5f, - 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x65, + 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x68, 0x0a, 0x08, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x19, 0x0a, 0x08, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x62, 0x61, 0x73, 0x65, 0x55, 0x72, 0x6c, 0x12, 0x41, 0x0a, 0x0c, 0x61, + 0x75, 0x74, 0x68, 0x5f, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1e, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, + 0x68, 0x52, 0x0b, 0x61, 0x75, 0x74, 0x68, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x73, 0x22, 0xbc, + 0x01, 0x0a, 0x10, 0x47, 0x72, 0x61, 0x63, 0x65, 0x66, 0x75, 0x6c, 0x53, 0x68, 0x75, 0x74, 0x64, + 0x6f, 0x77, 0x6e, 0x12, 0x2f, 0x0a, 0x05, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 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, 0x52, 0x05, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x40, 0x0a, 0x0e, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, 0x6e, + 0x5f, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x68, 0x75, 0x74, 0x64, 0x6f, 0x77, + 0x6e, 0x48, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x35, 0x0a, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, + 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x73, 0x22, 0xc7, 0x01, + 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x12, 0x54, 0x0a, 0x15, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x5f, 0x73, 0x69, 0x67, + 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x20, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, + 0x79, 0x52, 0x13, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x53, 0x69, 0x67, 0x6e, 0x69, + 0x6e, 0x67, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x4e, 0x0a, 0x0c, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, + 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, 0x6b, - 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, 0x65, - 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x37, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, 0x6e, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x75, - 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x75, 0x72, 0x73, 0x74, - 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x45, 0x6e, 0x63, - 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x72, - 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, 0x6c, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, 0x72, - 0x6c, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x41, - 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x73, - 0x42, 0x2c, 0x5a, 0x2a, 0x65, 0x6e, 0x63, 0x72, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, + 0x6f, 0x75, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x72, + 0x65, 0x5f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x0b, 0x52, 0x61, 0x74, 0x65, + 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x0c, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, + 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x2e, 0x54, 0x6f, + 0x6b, 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x1a, 0x37, 0x0a, 0x0b, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x72, 0x61, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x62, + 0x75, 0x72, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x62, 0x75, 0x72, 0x73, + 0x74, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x85, 0x01, 0x0a, 0x13, 0x45, 0x6e, + 0x63, 0x6f, 0x72, 0x65, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x72, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x55, + 0x72, 0x6c, 0x12, 0x3d, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x72, 0x65, + 0x41, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, 0x52, 0x08, 0x61, 0x75, 0x74, 0x68, 0x4b, 0x65, 0x79, + 0x73, 0x42, 0x2c, 0x5a, 0x2a, 0x65, 0x6e, 0x63, 0x72, 0x2e, 0x64, 0x65, 0x76, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2193,93 +2072,89 @@ func file_encore_runtime_v1_runtime_proto_rawDescGZIP() []byte { return file_encore_runtime_v1_runtime_proto_rawDescData } -var file_encore_runtime_v1_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_encore_runtime_v1_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_encore_runtime_v1_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_encore_runtime_v1_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 27) var file_encore_runtime_v1_runtime_proto_goTypes = []interface{}{ (Environment_Type)(0), // 0: encore.runtime.v1.Environment.Type (Environment_Cloud)(0), // 1: encore.runtime.v1.Environment.Cloud - (Compute_LogLevel)(0), // 2: encore.runtime.v1.Compute.LogLevel - (*RuntimeConfig)(nil), // 3: encore.runtime.v1.RuntimeConfig - (*Environment)(nil), // 4: encore.runtime.v1.Environment - (*Deployment)(nil), // 5: encore.runtime.v1.Deployment - (*Compute)(nil), // 6: encore.runtime.v1.Compute - (*Observability)(nil), // 7: encore.runtime.v1.Observability - (*HostedService)(nil), // 8: encore.runtime.v1.HostedService - (*ServiceAuth)(nil), // 9: encore.runtime.v1.ServiceAuth - (*TracingProvider)(nil), // 10: encore.runtime.v1.TracingProvider - (*MetricsProvider)(nil), // 11: encore.runtime.v1.MetricsProvider - (*LogsProvider)(nil), // 12: encore.runtime.v1.LogsProvider - (*EncoreAuthKey)(nil), // 13: encore.runtime.v1.EncoreAuthKey - (*ServiceDiscovery)(nil), // 14: encore.runtime.v1.ServiceDiscovery - (*GracefulShutdown)(nil), // 15: encore.runtime.v1.GracefulShutdown - (*EncorePlatform)(nil), // 16: encore.runtime.v1.EncorePlatform - (*RateLimiter)(nil), // 17: encore.runtime.v1.RateLimiter - (*EncoreCloudProvider)(nil), // 18: encore.runtime.v1.EncoreCloudProvider - (*ServiceAuth_NoopAuth)(nil), // 19: encore.runtime.v1.ServiceAuth.NoopAuth - (*ServiceAuth_EncoreAuth)(nil), // 20: encore.runtime.v1.ServiceAuth.EncoreAuth - (*TracingProvider_EncoreTracingProvider)(nil), // 21: encore.runtime.v1.TracingProvider.EncoreTracingProvider - (*MetricsProvider_GCPCloudMonitoring)(nil), // 22: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring - (*MetricsProvider_AWSCloudWatch)(nil), // 23: encore.runtime.v1.MetricsProvider.AWSCloudWatch - (*MetricsProvider_PrometheusRemoteWrite)(nil), // 24: encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite - (*MetricsProvider_Datadog)(nil), // 25: encore.runtime.v1.MetricsProvider.Datadog - nil, // 26: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MonitoredResourceLabelsEntry - nil, // 27: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MetricNamesEntry - nil, // 28: encore.runtime.v1.ServiceDiscovery.ServicesEntry - (*ServiceDiscovery_Location)(nil), // 29: encore.runtime.v1.ServiceDiscovery.Location - (*RateLimiter_TokenBucket)(nil), // 30: encore.runtime.v1.RateLimiter.TokenBucket - (*Infrastructure)(nil), // 31: encore.runtime.v1.Infrastructure - (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 33: google.protobuf.Duration - (*SecretData)(nil), // 34: encore.runtime.v1.SecretData + (*RuntimeConfig)(nil), // 2: encore.runtime.v1.RuntimeConfig + (*Environment)(nil), // 3: encore.runtime.v1.Environment + (*Deployment)(nil), // 4: encore.runtime.v1.Deployment + (*Observability)(nil), // 5: encore.runtime.v1.Observability + (*HostedService)(nil), // 6: encore.runtime.v1.HostedService + (*ServiceAuth)(nil), // 7: encore.runtime.v1.ServiceAuth + (*TracingProvider)(nil), // 8: encore.runtime.v1.TracingProvider + (*MetricsProvider)(nil), // 9: encore.runtime.v1.MetricsProvider + (*LogsProvider)(nil), // 10: encore.runtime.v1.LogsProvider + (*EncoreAuthKey)(nil), // 11: encore.runtime.v1.EncoreAuthKey + (*ServiceDiscovery)(nil), // 12: encore.runtime.v1.ServiceDiscovery + (*GracefulShutdown)(nil), // 13: encore.runtime.v1.GracefulShutdown + (*EncorePlatform)(nil), // 14: encore.runtime.v1.EncorePlatform + (*RateLimiter)(nil), // 15: encore.runtime.v1.RateLimiter + (*EncoreCloudProvider)(nil), // 16: encore.runtime.v1.EncoreCloudProvider + (*ServiceAuth_NoopAuth)(nil), // 17: encore.runtime.v1.ServiceAuth.NoopAuth + (*ServiceAuth_EncoreAuth)(nil), // 18: encore.runtime.v1.ServiceAuth.EncoreAuth + (*TracingProvider_EncoreTracingProvider)(nil), // 19: encore.runtime.v1.TracingProvider.EncoreTracingProvider + (*MetricsProvider_GCPCloudMonitoring)(nil), // 20: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring + (*MetricsProvider_AWSCloudWatch)(nil), // 21: encore.runtime.v1.MetricsProvider.AWSCloudWatch + (*MetricsProvider_PrometheusRemoteWrite)(nil), // 22: encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite + (*MetricsProvider_Datadog)(nil), // 23: encore.runtime.v1.MetricsProvider.Datadog + nil, // 24: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MonitoredResourceLabelsEntry + nil, // 25: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MetricNamesEntry + nil, // 26: encore.runtime.v1.ServiceDiscovery.ServicesEntry + (*ServiceDiscovery_Location)(nil), // 27: encore.runtime.v1.ServiceDiscovery.Location + (*RateLimiter_TokenBucket)(nil), // 28: encore.runtime.v1.RateLimiter.TokenBucket + (*Infrastructure)(nil), // 29: encore.runtime.v1.Infrastructure + (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 31: google.protobuf.Duration + (*SecretData)(nil), // 32: encore.runtime.v1.SecretData } var file_encore_runtime_v1_runtime_proto_depIdxs = []int32{ - 4, // 0: encore.runtime.v1.RuntimeConfig.environment:type_name -> encore.runtime.v1.Environment - 31, // 1: encore.runtime.v1.RuntimeConfig.infra:type_name -> encore.runtime.v1.Infrastructure - 5, // 2: encore.runtime.v1.RuntimeConfig.deployment:type_name -> encore.runtime.v1.Deployment - 16, // 3: encore.runtime.v1.RuntimeConfig.encore_platform:type_name -> encore.runtime.v1.EncorePlatform + 3, // 0: encore.runtime.v1.RuntimeConfig.environment:type_name -> encore.runtime.v1.Environment + 29, // 1: encore.runtime.v1.RuntimeConfig.infra:type_name -> encore.runtime.v1.Infrastructure + 4, // 2: encore.runtime.v1.RuntimeConfig.deployment:type_name -> encore.runtime.v1.Deployment + 14, // 3: encore.runtime.v1.RuntimeConfig.encore_platform:type_name -> encore.runtime.v1.EncorePlatform 0, // 4: encore.runtime.v1.Environment.env_type:type_name -> encore.runtime.v1.Environment.Type 1, // 5: encore.runtime.v1.Environment.cloud:type_name -> encore.runtime.v1.Environment.Cloud - 32, // 6: encore.runtime.v1.Deployment.deployed_at:type_name -> google.protobuf.Timestamp - 8, // 7: encore.runtime.v1.Deployment.hosted_services:type_name -> encore.runtime.v1.HostedService - 9, // 8: encore.runtime.v1.Deployment.auth_methods:type_name -> encore.runtime.v1.ServiceAuth - 7, // 9: encore.runtime.v1.Deployment.observability:type_name -> encore.runtime.v1.Observability - 14, // 10: encore.runtime.v1.Deployment.service_discovery:type_name -> encore.runtime.v1.ServiceDiscovery - 15, // 11: encore.runtime.v1.Deployment.graceful_shutdown:type_name -> encore.runtime.v1.GracefulShutdown - 6, // 12: encore.runtime.v1.Deployment.compute:type_name -> encore.runtime.v1.Compute - 2, // 13: encore.runtime.v1.Compute.log_level:type_name -> encore.runtime.v1.Compute.LogLevel - 10, // 14: encore.runtime.v1.Observability.tracing:type_name -> encore.runtime.v1.TracingProvider - 11, // 15: encore.runtime.v1.Observability.metrics:type_name -> encore.runtime.v1.MetricsProvider - 12, // 16: encore.runtime.v1.Observability.logs:type_name -> encore.runtime.v1.LogsProvider - 19, // 17: encore.runtime.v1.ServiceAuth.noop:type_name -> encore.runtime.v1.ServiceAuth.NoopAuth - 20, // 18: encore.runtime.v1.ServiceAuth.encore_auth:type_name -> encore.runtime.v1.ServiceAuth.EncoreAuth - 21, // 19: encore.runtime.v1.TracingProvider.encore:type_name -> encore.runtime.v1.TracingProvider.EncoreTracingProvider - 33, // 20: encore.runtime.v1.MetricsProvider.collection_interval:type_name -> google.protobuf.Duration - 22, // 21: encore.runtime.v1.MetricsProvider.encore_cloud:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring - 22, // 22: encore.runtime.v1.MetricsProvider.gcp:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring - 23, // 23: encore.runtime.v1.MetricsProvider.aws:type_name -> encore.runtime.v1.MetricsProvider.AWSCloudWatch - 24, // 24: encore.runtime.v1.MetricsProvider.prom_remote_write:type_name -> encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite - 25, // 25: encore.runtime.v1.MetricsProvider.datadog:type_name -> encore.runtime.v1.MetricsProvider.Datadog - 34, // 26: encore.runtime.v1.EncoreAuthKey.data:type_name -> encore.runtime.v1.SecretData - 28, // 27: encore.runtime.v1.ServiceDiscovery.services:type_name -> encore.runtime.v1.ServiceDiscovery.ServicesEntry - 33, // 28: encore.runtime.v1.GracefulShutdown.total:type_name -> google.protobuf.Duration - 33, // 29: encore.runtime.v1.GracefulShutdown.shutdown_hooks:type_name -> google.protobuf.Duration - 33, // 30: encore.runtime.v1.GracefulShutdown.handlers:type_name -> google.protobuf.Duration - 13, // 31: encore.runtime.v1.EncorePlatform.platform_signing_keys:type_name -> encore.runtime.v1.EncoreAuthKey - 18, // 32: encore.runtime.v1.EncorePlatform.encore_cloud:type_name -> encore.runtime.v1.EncoreCloudProvider - 30, // 33: encore.runtime.v1.RateLimiter.token_bucket:type_name -> encore.runtime.v1.RateLimiter.TokenBucket - 13, // 34: encore.runtime.v1.EncoreCloudProvider.auth_keys:type_name -> encore.runtime.v1.EncoreAuthKey - 13, // 35: encore.runtime.v1.ServiceAuth.EncoreAuth.auth_keys:type_name -> encore.runtime.v1.EncoreAuthKey - 26, // 36: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.monitored_resource_labels:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MonitoredResourceLabelsEntry - 27, // 37: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.metric_names:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MetricNamesEntry - 34, // 38: encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite.remote_write_url:type_name -> encore.runtime.v1.SecretData - 34, // 39: encore.runtime.v1.MetricsProvider.Datadog.api_key:type_name -> encore.runtime.v1.SecretData - 29, // 40: encore.runtime.v1.ServiceDiscovery.ServicesEntry.value:type_name -> encore.runtime.v1.ServiceDiscovery.Location - 9, // 41: encore.runtime.v1.ServiceDiscovery.Location.auth_methods:type_name -> encore.runtime.v1.ServiceAuth - 42, // [42:42] is the sub-list for method output_type - 42, // [42:42] is the sub-list for method input_type - 42, // [42:42] is the sub-list for extension type_name - 42, // [42:42] is the sub-list for extension extendee - 0, // [0:42] is the sub-list for field type_name + 30, // 6: encore.runtime.v1.Deployment.deployed_at:type_name -> google.protobuf.Timestamp + 6, // 7: encore.runtime.v1.Deployment.hosted_services:type_name -> encore.runtime.v1.HostedService + 7, // 8: encore.runtime.v1.Deployment.auth_methods:type_name -> encore.runtime.v1.ServiceAuth + 5, // 9: encore.runtime.v1.Deployment.observability:type_name -> encore.runtime.v1.Observability + 12, // 10: encore.runtime.v1.Deployment.service_discovery:type_name -> encore.runtime.v1.ServiceDiscovery + 13, // 11: encore.runtime.v1.Deployment.graceful_shutdown:type_name -> encore.runtime.v1.GracefulShutdown + 8, // 12: encore.runtime.v1.Observability.tracing:type_name -> encore.runtime.v1.TracingProvider + 9, // 13: encore.runtime.v1.Observability.metrics:type_name -> encore.runtime.v1.MetricsProvider + 10, // 14: encore.runtime.v1.Observability.logs:type_name -> encore.runtime.v1.LogsProvider + 17, // 15: encore.runtime.v1.ServiceAuth.noop:type_name -> encore.runtime.v1.ServiceAuth.NoopAuth + 18, // 16: encore.runtime.v1.ServiceAuth.encore_auth:type_name -> encore.runtime.v1.ServiceAuth.EncoreAuth + 19, // 17: encore.runtime.v1.TracingProvider.encore:type_name -> encore.runtime.v1.TracingProvider.EncoreTracingProvider + 31, // 18: encore.runtime.v1.MetricsProvider.collection_interval:type_name -> google.protobuf.Duration + 20, // 19: encore.runtime.v1.MetricsProvider.encore_cloud:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring + 20, // 20: encore.runtime.v1.MetricsProvider.gcp:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring + 21, // 21: encore.runtime.v1.MetricsProvider.aws:type_name -> encore.runtime.v1.MetricsProvider.AWSCloudWatch + 22, // 22: encore.runtime.v1.MetricsProvider.prom_remote_write:type_name -> encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite + 23, // 23: encore.runtime.v1.MetricsProvider.datadog:type_name -> encore.runtime.v1.MetricsProvider.Datadog + 32, // 24: encore.runtime.v1.EncoreAuthKey.data:type_name -> encore.runtime.v1.SecretData + 26, // 25: encore.runtime.v1.ServiceDiscovery.services:type_name -> encore.runtime.v1.ServiceDiscovery.ServicesEntry + 31, // 26: encore.runtime.v1.GracefulShutdown.total:type_name -> google.protobuf.Duration + 31, // 27: encore.runtime.v1.GracefulShutdown.shutdown_hooks:type_name -> google.protobuf.Duration + 31, // 28: encore.runtime.v1.GracefulShutdown.handlers:type_name -> google.protobuf.Duration + 11, // 29: encore.runtime.v1.EncorePlatform.platform_signing_keys:type_name -> encore.runtime.v1.EncoreAuthKey + 16, // 30: encore.runtime.v1.EncorePlatform.encore_cloud:type_name -> encore.runtime.v1.EncoreCloudProvider + 28, // 31: encore.runtime.v1.RateLimiter.token_bucket:type_name -> encore.runtime.v1.RateLimiter.TokenBucket + 11, // 32: encore.runtime.v1.EncoreCloudProvider.auth_keys:type_name -> encore.runtime.v1.EncoreAuthKey + 11, // 33: encore.runtime.v1.ServiceAuth.EncoreAuth.auth_keys:type_name -> encore.runtime.v1.EncoreAuthKey + 24, // 34: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.monitored_resource_labels:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MonitoredResourceLabelsEntry + 25, // 35: encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.metric_names:type_name -> encore.runtime.v1.MetricsProvider.GCPCloudMonitoring.MetricNamesEntry + 32, // 36: encore.runtime.v1.MetricsProvider.PrometheusRemoteWrite.remote_write_url:type_name -> encore.runtime.v1.SecretData + 32, // 37: encore.runtime.v1.MetricsProvider.Datadog.api_key:type_name -> encore.runtime.v1.SecretData + 27, // 38: encore.runtime.v1.ServiceDiscovery.ServicesEntry.value:type_name -> encore.runtime.v1.ServiceDiscovery.Location + 7, // 39: encore.runtime.v1.ServiceDiscovery.Location.auth_methods:type_name -> encore.runtime.v1.ServiceAuth + 40, // [40:40] is the sub-list for method output_type + 40, // [40:40] is the sub-list for method input_type + 40, // [40:40] is the sub-list for extension type_name + 40, // [40:40] is the sub-list for extension extendee + 0, // [0:40] is the sub-list for field type_name } func init() { file_encore_runtime_v1_runtime_proto_init() } @@ -2327,18 +2202,6 @@ func file_encore_runtime_v1_runtime_proto_init() { } } file_encore_runtime_v1_runtime_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Compute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_encore_runtime_v1_runtime_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Observability); i { case 0: return &v.state @@ -2350,7 +2213,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*HostedService); i { case 0: return &v.state @@ -2362,7 +2225,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceAuth); i { case 0: return &v.state @@ -2374,7 +2237,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TracingProvider); i { case 0: return &v.state @@ -2386,7 +2249,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsProvider); i { case 0: return &v.state @@ -2398,7 +2261,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*LogsProvider); i { case 0: return &v.state @@ -2410,7 +2273,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EncoreAuthKey); i { case 0: return &v.state @@ -2422,7 +2285,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceDiscovery); i { case 0: return &v.state @@ -2434,7 +2297,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GracefulShutdown); i { case 0: return &v.state @@ -2446,7 +2309,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EncorePlatform); i { case 0: return &v.state @@ -2458,7 +2321,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RateLimiter); i { case 0: return &v.state @@ -2470,7 +2333,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EncoreCloudProvider); i { case 0: return &v.state @@ -2482,7 +2345,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceAuth_NoopAuth); i { case 0: return &v.state @@ -2494,7 +2357,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceAuth_EncoreAuth); i { case 0: return &v.state @@ -2506,7 +2369,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TracingProvider_EncoreTracingProvider); i { case 0: return &v.state @@ -2518,7 +2381,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsProvider_GCPCloudMonitoring); i { case 0: return &v.state @@ -2530,7 +2393,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsProvider_AWSCloudWatch); i { case 0: return &v.state @@ -2542,7 +2405,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsProvider_PrometheusRemoteWrite); i { case 0: return &v.state @@ -2554,7 +2417,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsProvider_Datadog); i { case 0: return &v.state @@ -2566,7 +2429,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ServiceDiscovery_Location); i { case 0: return &v.state @@ -2578,7 +2441,7 @@ func file_encore_runtime_v1_runtime_proto_init() { return nil } } - file_encore_runtime_v1_runtime_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_encore_runtime_v1_runtime_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RateLimiter_TokenBucket); i { case 0: return &v.state @@ -2592,33 +2455,33 @@ func file_encore_runtime_v1_runtime_proto_init() { } } file_encore_runtime_v1_runtime_proto_msgTypes[0].OneofWrappers = []interface{}{} - file_encore_runtime_v1_runtime_proto_msgTypes[3].OneofWrappers = []interface{}{} - file_encore_runtime_v1_runtime_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_encore_runtime_v1_runtime_proto_msgTypes[4].OneofWrappers = []interface{}{} + file_encore_runtime_v1_runtime_proto_msgTypes[5].OneofWrappers = []interface{}{ (*ServiceAuth_Noop)(nil), (*ServiceAuth_EncoreAuth_)(nil), } - file_encore_runtime_v1_runtime_proto_msgTypes[7].OneofWrappers = []interface{}{ + file_encore_runtime_v1_runtime_proto_msgTypes[6].OneofWrappers = []interface{}{ (*TracingProvider_Encore)(nil), } - file_encore_runtime_v1_runtime_proto_msgTypes[8].OneofWrappers = []interface{}{ + file_encore_runtime_v1_runtime_proto_msgTypes[7].OneofWrappers = []interface{}{ (*MetricsProvider_EncoreCloud)(nil), (*MetricsProvider_Gcp)(nil), (*MetricsProvider_Aws)(nil), (*MetricsProvider_PromRemoteWrite)(nil), (*MetricsProvider_Datadog_)(nil), } - file_encore_runtime_v1_runtime_proto_msgTypes[13].OneofWrappers = []interface{}{} - file_encore_runtime_v1_runtime_proto_msgTypes[14].OneofWrappers = []interface{}{ + file_encore_runtime_v1_runtime_proto_msgTypes[12].OneofWrappers = []interface{}{} + file_encore_runtime_v1_runtime_proto_msgTypes[13].OneofWrappers = []interface{}{ (*RateLimiter_TokenBucket_)(nil), } - file_encore_runtime_v1_runtime_proto_msgTypes[18].OneofWrappers = []interface{}{} + file_encore_runtime_v1_runtime_proto_msgTypes[17].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_encore_runtime_v1_runtime_proto_rawDesc, - NumEnums: 3, - NumMessages: 28, + NumEnums: 2, + NumMessages: 27, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/encore/runtime/v1/runtime.proto b/proto/encore/runtime/v1/runtime.proto index 6fe7ecfea0..ec860382df 100644 --- a/proto/encore/runtime/v1/runtime.proto +++ b/proto/encore/runtime/v1/runtime.proto @@ -70,30 +70,6 @@ message Deployment { // Graceful shutdown behavior. GracefulShutdown graceful_shutdown = 9; - - // Compute configuration. - Compute compute = 10; -} - -message Compute { - // Number of worker threads to use. - // If unset it defaults to 1. If set to 0 the runtime - // automatically determines the number of threads to use - // based on the number of CPUs available. - optional int32 worker_threads = 1; - - // The minimum log level to use. - // If unset it defaults to LOG_LEVEL_TRACE. - optional LogLevel log_level = 2; - - enum LogLevel { - LOG_LEVEL_DISABLED = 0; - LOG_LEVEL_ERROR = 1; - LOG_LEVEL_WARN = 2; - LOG_LEVEL_INFO = 3; - LOG_LEVEL_DEBUG = 4; - LOG_LEVEL_TRACE = 5; - } } message Observability { @@ -107,8 +83,15 @@ message HostedService { // The name of the service. string name = 1; - // The infrastructure resources this service has access to, as resource ids. - // repeated string infra_access_rids = 3; + // Number of worker threads to use. + // If unset it defaults to 1. If set to 0 the runtime + // automatically determines the number of threads to use + // based on the number of CPUs available. + optional int32 worker_threads = 2; + + // The log configuration to use for this service. + // If unset it defaults to "trace". + optional string log_config = 3; } message ServiceAuth { diff --git a/runtimes/core/src/infracfg.rs b/runtimes/core/src/infracfg.rs index 8431957848..0e9c8d50ed 100644 --- a/runtimes/core/src/infracfg.rs +++ b/runtimes/core/src/infracfg.rs @@ -26,18 +26,7 @@ pub struct InfraConfig { pub cors: Option, pub object_storage: Option>, pub worker_threads: Option, - pub log_level: Option, -} - -#[derive(Debug, Serialize, Deserialize)] -#[serde(rename_all = "lowercase")] -pub enum LogLevel { - Disabled, - Error, - Warn, - Info, - Debug, - Trace, + pub log_config: Option, } #[derive(Debug, Serialize, Deserialize)] @@ -583,18 +572,6 @@ pub fn map_infra_to_runtime(infra: InfraConfig) -> RuntimeConfig { }) .unwrap_or_default(); - let compute = Some(pbruntime::Compute { - worker_threads: infra.worker_threads, - log_level: infra.log_level.map(|l| match l { - LogLevel::Disabled => pbruntime::compute::LogLevel::Disabled, - LogLevel::Error => pbruntime::compute::LogLevel::Error, - LogLevel::Warn => pbruntime::compute::LogLevel::Warn, - LogLevel::Info => pbruntime::compute::LogLevel::Info, - LogLevel::Debug => pbruntime::compute::LogLevel::Debug, - LogLevel::Trace => pbruntime::compute::LogLevel::Trace, - } as i32), - }); - // Map Deployment let deployment = Some(Deployment { deploy_id: String::new(), @@ -608,6 +585,8 @@ pub fn map_infra_to_runtime(infra: InfraConfig) -> RuntimeConfig { .iter() .map(|service| pbruntime::HostedService { name: service.clone(), + worker_threads: infra.worker_threads, + log_config: infra.log_config.clone(), }) .collect() }) @@ -616,7 +595,6 @@ pub fn map_infra_to_runtime(infra: InfraConfig) -> RuntimeConfig { observability, service_discovery, graceful_shutdown, - compute, }); let mut credentials = Credentials { diff --git a/runtimes/core/src/lib.rs b/runtimes/core/src/lib.rs index 9362c746c1..c07ab1c6d9 100644 --- a/runtimes/core/src/lib.rs +++ b/runtimes/core/src/lib.rs @@ -207,8 +207,8 @@ pub struct Runtime { objects: objects::Manager, api: api::Manager, app_meta: meta::AppMeta, + compute: ComputeConfig, runtime: tokio::runtime::Runtime, - compute: runtimepb::Compute, } impl Runtime { @@ -237,7 +237,6 @@ impl Runtime { let encore_platform = cfg.encore_platform.take().unwrap_or_default(); let mut deployment = cfg.deployment.take().unwrap_or_default(); - let compute = deployment.compute.take().unwrap_or_default(); let service_discovery = deployment.service_discovery.take().unwrap_or_default(); let http_client = reqwest::Client::builder() @@ -344,6 +343,33 @@ impl Runtime { .build() .context("unable to initialize sqldb proxy")?; + // Determine the compute configuration. + let compute = { + let mut cfg = ComputeConfig::default(); + for svc in deployment.hosted_services.iter() { + if let Some(log_config) = &svc.log_config { + cfg.log_level = Some(log_config.clone()); + } + if let Some(worker_threads) = svc.worker_threads { + // If we have worker threads already configured on the compute config, + // determine the new value. + cfg.worker_threads = Some(match (cfg.worker_threads, worker_threads) { + // If either explicitly wants 1 worker threads (disabling it), set it to 1. + (Some(1), _) | (_, 1) => 1, + + // If we have worker threads enabled on both, set it to the minimum. + (Some(a), b) if a > 1 && b > 1 => a.min(b), + + // Otherwise use the existing value, if any. + (Some(a), _) => a, + // If we don't have an existing value, use the new value. + (None, b) => b, + }); + } + } + cfg + }; + let api = api::ManagerConfig { meta: &md, environment: &environment, @@ -439,13 +465,18 @@ impl Runtime { &self.app_meta } - /// Reports the experiments enabled in the metadata. #[inline] - pub fn compute(&self) -> &runtimepb::Compute { + pub fn compute(&self) -> &ComputeConfig { &self.compute } } +#[derive(Debug, Clone, Default)] +pub struct ComputeConfig { + pub log_level: Option, + pub worker_threads: Option, +} + #[derive(Debug)] enum ParseError { EnvNotPresent, diff --git a/runtimes/core/src/proccfg.rs b/runtimes/core/src/proccfg.rs index 067a37bb38..986814117e 100644 --- a/runtimes/core/src/proccfg.rs +++ b/runtimes/core/src/proccfg.rs @@ -16,10 +16,26 @@ impl ProcessConfig { pub fn apply(&self, cfg: &mut runtimepb::RuntimeConfig) -> Result<()> { let deployment = cfg.deployment.get_or_insert_with(Default::default); + // Construct a map of existing hosted services, keyed by name. + let hosted_services = deployment + .hosted_services + .iter() + .map(|s| (s.name.clone(), s.clone())) + .collect::>(); + deployment.hosted_services = self .hosted_services .iter() - .map(|s| runtimepb::HostedService { name: s.clone() }) + .map(|s| { + hosted_services + .get(s) + .cloned() + .unwrap_or_else(|| runtimepb::HostedService { + name: s.clone(), + log_config: None, + worker_threads: None, + }) + }) .collect(); deployment.hosted_gateways = self .hosted_gateways diff --git a/runtimes/go/appruntime/exported/config/config.go b/runtimes/go/appruntime/exported/config/config.go index e85e3abd6c..158c16c874 100644 --- a/runtimes/go/appruntime/exported/config/config.go +++ b/runtimes/go/appruntime/exported/config/config.go @@ -89,9 +89,9 @@ type Runtime struct { // and added to the static config. DynamicExperiments []string `json:"dynamic_experiments,omitempty"` - // LogLevel to set for the application. + // Log configuration to set for the application. // If empty it defaults to "trace". - LogLevel string `json:"log_level"` + LogConfig string `json:"log_config"` } // GracefulShutdownTimings defines the timings for the graceful shutdown process. diff --git a/runtimes/go/appruntime/exported/config/infra/config.go b/runtimes/go/appruntime/exported/config/infra/config.go index 6872a7a697..60cb7eba88 100644 --- a/runtimes/go/appruntime/exported/config/infra/config.go +++ b/runtimes/go/appruntime/exported/config/infra/config.go @@ -21,13 +21,14 @@ type InfraConfig struct { Secrets Secrets `json:"secrets,omitempty"` ObjectStorage []*ObjectStorage `json:"object_storage,omitempty"` - // Minimum log level for the application. + // Log configuration for the application. // If empty it defaults to "trace". - LogLevel string `json:"log_level,omitemty"` + LogConfig string `json:"log_config,omitemty"` // Number of worker threads to use for the application. - // If empty or 0 it defaults to the number of CPUs. - WorkerThreads int `json:"worker_threads,omitempty"` + // If unset it defaults to a single worker thread. + // If set to 0 it defaults to the number of CPUs. + WorkerThreads *int `json:"worker_threads,omitempty"` // These fields are not defined in the json schema and should not be // set by the user. They're computed during the build/eject process. diff --git a/runtimes/go/appruntime/exported/config/parse.go b/runtimes/go/appruntime/exported/config/parse.go index 7de24b8a1c..7fbf6abe50 100644 --- a/runtimes/go/appruntime/exported/config/parse.go +++ b/runtimes/go/appruntime/exported/config/parse.go @@ -137,7 +137,7 @@ func parseInfraConfigEnv(infraCfgPath string) *Runtime { cfg.EnvType = infraCfg.Metadata.EnvType cfg.EnvCloud = infraCfg.Metadata.Cloud cfg.APIBaseURL = infraCfg.Metadata.BaseURL - cfg.LogLevel = infraCfg.LogLevel + cfg.LogConfig = infraCfg.LogConfig // Map graceful shutdown configuration if infraCfg.GracefulShutdown != nil {