diff --git a/api/workers/worker.gen.go b/api/workers/worker.gen.go index 430122ee0..7064228a3 100644 --- a/api/workers/worker.gen.go +++ b/api/workers/worker.gen.go @@ -12,23 +12,23 @@ import ( ) type Worker struct { - Id string `json:"id,omitempty"` - ScopeId string `json:"scope_id,omitempty"` - Scope *scopes.ScopeInfo `json:"scope,omitempty"` - Name string `json:"name,omitempty"` - Description string `json:"description,omitempty"` - CreatedTime time.Time `json:"created_time,omitempty"` - UpdatedTime time.Time `json:"updated_time,omitempty"` - Version uint32 `json:"version,omitempty"` - Address string `json:"address,omitempty"` - CanonicalAddress string `json:"canonical_address,omitempty"` - Tags map[string][]string `json:"tags,omitempty"` - CanonicalTags map[string][]string `json:"canonical_tags,omitempty"` - LastStatusTime time.Time `json:"last_status_time,omitempty"` - WorkerConfig *WorkerConfig `json:"worker_config,omitempty"` - WorkerAuthToken string `json:"worker_auth_token,omitempty"` - ActiveConnectionCount uint32 `json:"active_connection_count,omitempty"` - AuthorizedActions []string `json:"authorized_actions,omitempty"` + Id string `json:"id,omitempty"` + ScopeId string `json:"scope_id,omitempty"` + Scope *scopes.ScopeInfo `json:"scope,omitempty"` + Name string `json:"name,omitempty"` + Description string `json:"description,omitempty"` + CreatedTime time.Time `json:"created_time,omitempty"` + UpdatedTime time.Time `json:"updated_time,omitempty"` + Version uint32 `json:"version,omitempty"` + Address string `json:"address,omitempty"` + CanonicalAddress string `json:"canonical_address,omitempty"` + Tags map[string][]string `json:"tags,omitempty"` + CanonicalTags map[string][]string `json:"canonical_tags,omitempty"` + LastStatusTime time.Time `json:"last_status_time,omitempty"` + WorkerProvidedConfiguration *WorkerProvidedConfiguration `json:"worker_provided_configuration,omitempty"` + WorkerGeneratedAuthToken string `json:"worker_generated_auth_token,omitempty"` + ActiveConnectionCount uint32 `json:"active_connection_count,omitempty"` + AuthorizedActions []string `json:"authorized_actions,omitempty"` response *api.Response } @@ -93,7 +93,7 @@ func (c *Client) ApiClient() *api.Client { return c.client } -func (c *Client) CreateWorkerLed(ctx context.Context, workerAuthToken string, scopeId string, opt ...Option) (*WorkerCreateResult, error) { +func (c *Client) CreateWorkerLed(ctx context.Context, workerGeneratedAuthToken string, scopeId string, opt ...Option) (*WorkerCreateResult, error) { if scopeId == "" { return nil, fmt.Errorf("empty scopeId value passed into CreateWorkerLed request") } @@ -103,10 +103,10 @@ func (c *Client) CreateWorkerLed(ctx context.Context, workerAuthToken string, sc if c.client == nil { return nil, fmt.Errorf("nil client") } - if workerAuthToken == "" { - return nil, fmt.Errorf("empty workerAuthToken value passed into CreateWorkerLed request") + if workerGeneratedAuthToken == "" { + return nil, fmt.Errorf("empty workerGeneratedAuthToken value passed into CreateWorkerLed request") } else { - opts.postMap["worker_auth_token"] = workerAuthToken + opts.postMap["worker_generated_auth_token"] = workerGeneratedAuthToken } opts.postMap["scope_id"] = scopeId diff --git a/api/workers/worker_config.gen.go b/api/workers/worker_provided_configuration.gen.go similarity index 84% rename from api/workers/worker_config.gen.go rename to api/workers/worker_provided_configuration.gen.go index 1e31a3681..4a276211a 100644 --- a/api/workers/worker_config.gen.go +++ b/api/workers/worker_provided_configuration.gen.go @@ -1,7 +1,7 @@ // Code generated by "make api"; DO NOT EDIT. package workers -type WorkerConfig struct { +type WorkerProvidedConfiguration struct { Address string `json:"address,omitempty"` Name string `json:"name,omitempty"` Tags map[string][]string `json:"tags,omitempty"` diff --git a/globals/fields.go b/globals/fields.go index 491b00c8d..84c23f810 100644 --- a/globals/fields.go +++ b/globals/fields.go @@ -79,7 +79,7 @@ const ( TagsField = "tags" CanonicalTagsField = "canonical_tags" ConfigurationField = "configuration" - WorkerAuthTokenField = "worker_auth_token" - WorkerConfigField = "worker_config" + WorkerGeneratedAuthTokenField = "worker_generated_auth_token" + WorkerProvidedConfigurationField = "worker_provided_configuration" ActiveConnectionCountField = "active_session_count" ) diff --git a/internal/api/genapi/input.go b/internal/api/genapi/input.go index 943c1b85f..46d90b06a 100644 --- a/internal/api/genapi/input.go +++ b/internal/api/genapi/input.go @@ -761,9 +761,9 @@ var inputStructs = []*structInfo{ }, extraRequiredParams: []requiredParam{ { - Name: "workerAuthToken", + Name: "workerGeneratedAuthToken", Typ: "string", - PostType: "worker_auth_token", + PostType: "worker_generated_auth_token", }, }, pluralResourceName: "workers", @@ -771,7 +771,7 @@ var inputStructs = []*structInfo{ recursiveListing: true, }, { - inProto: &workers.WorkerConfig{}, - outFile: "workers/worker_config.gen.go", + inProto: &workers.WorkerProvidedConfiguration{}, + outFile: "workers/worker_provided_configuration.gen.go", }, } diff --git a/internal/cmd/commands/server/worker_shutdown_reload_test.go b/internal/cmd/commands/server/worker_shutdown_reload_test.go index bf77ad451..7876e870e 100644 --- a/internal/cmd/commands/server/worker_shutdown_reload_test.go +++ b/internal/cmd/commands/server/worker_shutdown_reload_test.go @@ -25,7 +25,7 @@ import ( _ "github.com/hashicorp/boundary/internal/daemon/controller/handlers/targets/tcp" ) -const shutdownReloadWorkerConfig = ` +const shutdownReloadWorkerProvidedConfiguration = ` disable_mlock = true worker { @@ -58,7 +58,7 @@ func TestServer_ShutdownWorker(t *testing.T) { // Start the worker workerCmd := testServerCommand(t, testServerCommandOpts{}) - workerCmd.presetConfig = atomic.NewString(fmt.Sprintf(shutdownReloadWorkerConfig, testController.ClusterAddrs()[0], key)) + workerCmd.presetConfig = atomic.NewString(fmt.Sprintf(shutdownReloadWorkerProvidedConfiguration, testController.ClusterAddrs()[0], key)) workerCodeChan := make(chan int) go func() { diff --git a/internal/cmd/config/config_test.go b/internal/cmd/config/config_test.go index 6efbf8d2f..44bbc5e34 100644 --- a/internal/cmd/config/config_test.go +++ b/internal/cmd/config/config_test.go @@ -405,13 +405,13 @@ func TestDevCombined(t *testing.T) { func TestDevWorkerCredentialStorageDir(t *testing.T) { t.Parallel() tests := []struct { - name string - devWorkerConfig string - storagePath string + name string + devWorkerProvidedConfiguration string + storagePath string }{ { name: "Relative Storage Directory", - devWorkerConfig: ` + devWorkerProvidedConfiguration: ` listener "tcp" { purpose = "proxy" } @@ -430,7 +430,7 @@ func TestDevWorkerCredentialStorageDir(t *testing.T) { }, { name: "Nonexistent Storage Directory", - devWorkerConfig: ` + devWorkerProvidedConfiguration: ` listener "tcp" { purpose = "proxy" } @@ -450,7 +450,7 @@ func TestDevWorkerCredentialStorageDir(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - parsed, err := Parse(devConfig + tt.devWorkerConfig) + parsed, err := Parse(devConfig + tt.devWorkerProvidedConfiguration) require.NoError(t, err) require.Equal(t, tt.storagePath, parsed.Worker.AuthStoragePath) }) diff --git a/internal/daemon/controller/handlers/workers/worker_service.go b/internal/daemon/controller/handlers/workers/worker_service.go index 98f054bab..b19540974 100644 --- a/internal/daemon/controller/handlers/workers/worker_service.go +++ b/internal/daemon/controller/handlers/workers/worker_service.go @@ -200,7 +200,7 @@ func (s Service) CreateWorkerLed(ctx context.Context, req *pbs.CreateWorkerLedRe if authResults.Error != nil { return nil, authResults.Error } - reqBytes, err := base58.FastBase58Decoding(req.GetItem().WorkerAuthToken.GetValue()) + reqBytes, err := base58.FastBase58Decoding(req.GetItem().WorkerGeneratedAuthToken.GetValue()) if err != nil { return nil, fmt.Errorf("%s: error decoding node_credentials_token: %w", op, err) } @@ -483,18 +483,18 @@ func toProto(ctx context.Context, in *servers.Worker, opt ...handlers.Option) (* if in.GetWorkerReportedAddress() != "" || in.GetWorkerReportedName() != "" || len(in.GetConfigTags()) > 0 { - out.WorkerConfig = &pb.WorkerConfig{} + out.WorkerProvidedConfiguration = &pb.WorkerProvidedConfiguration{} } if len(in.GetConfigTags()) > 0 { var err error - out.GetWorkerConfig().Tags, err = tagsToMapProto(in.GetConfigTags()) + out.GetWorkerProvidedConfiguration().Tags, err = tagsToMapProto(in.GetConfigTags()) if err != nil { return nil, errors.Wrap(ctx, err, op, errors.WithMsg("error preparing config tags proto")) } } - if out.WorkerConfig != nil { - out.GetWorkerConfig().Address = in.GetWorkerReportedAddress() - out.GetWorkerConfig().Name = in.GetWorkerReportedName() + if out.WorkerProvidedConfiguration != nil { + out.GetWorkerProvidedConfiguration().Address = in.GetWorkerReportedAddress() + out.GetWorkerProvidedConfiguration().Name = in.GetWorkerReportedName() } } @@ -551,7 +551,7 @@ func validateDeleteRequest(req *pbs.DeleteWorkerRequest) error { func validateUpdateRequest(req *pbs.UpdateWorkerRequest) error { return handlers.ValidateUpdateRequest(req, req.GetItem(), func() map[string]string { badFields := map[string]string{} - if req.GetItem().GetWorkerConfig() != nil { + if req.GetItem().GetWorkerProvidedConfiguration() != nil { badFields[globals.ConfigurationField] = "This is a read only field." } if req.GetItem().GetCanonicalAddress() != "" { @@ -580,8 +580,8 @@ func validateCreateRequest(req *pbs.CreateWorkerLedRequest) error { } // FIXME: in the future, we won't require this token since we'll support // the server led flow where a token is returned when a worker is created. - if req.GetItem().WorkerAuthToken == nil { - badFields[globals.WorkerAuthTokenField] = cannotBeEmptyMsg + if req.GetItem().WorkerGeneratedAuthToken == nil { + badFields[globals.WorkerGeneratedAuthTokenField] = cannotBeEmptyMsg } if req.GetItem().CanonicalAddress != "" { badFields[globals.CanonicalAddressField] = readOnlyFieldMsg @@ -595,8 +595,8 @@ func validateCreateRequest(req *pbs.CreateWorkerLedRequest) error { if req.GetItem().LastStatusTime != nil { badFields[globals.LastStatusTimeField] = readOnlyFieldMsg } - if req.GetItem().WorkerConfig != nil { - badFields[globals.WorkerConfigField] = readOnlyFieldMsg + if req.GetItem().WorkerProvidedConfiguration != nil { + badFields[globals.WorkerProvidedConfigurationField] = readOnlyFieldMsg } if req.GetItem().AuthorizedActions != nil { badFields[globals.AuthorizedActionsField] = readOnlyFieldMsg diff --git a/internal/daemon/controller/handlers/workers/worker_service_test.go b/internal/daemon/controller/handlers/workers/worker_service_test.go index f6e200d61..20ef70d9c 100644 --- a/internal/daemon/controller/handlers/workers/worker_service_test.go +++ b/internal/daemon/controller/handlers/workers/worker_service_test.go @@ -67,7 +67,7 @@ func TestGet(t *testing.T) { servers.WithName("test worker names"), servers.WithDescription("test worker description"), servers.WithAddress("test worker address"), - servers.WithWorkerTags(&servers.Tag{"key", "val"})) + servers.WithWorkerTags(&servers.Tag{Key: "key", Value: "val"})) // Add config tags to the created worker worker, err = repo.UpsertWorkerStatus(context.Background(), servers.NewWorkerForStatus(worker.GetScopeId(), @@ -101,7 +101,7 @@ func TestGet(t *testing.T) { Tags: map[string]*structpb.ListValue{ "key": structListValue(t, "val"), }, - WorkerConfig: &pb.WorkerConfig{ + WorkerProvidedConfiguration: &pb.WorkerProvidedConfiguration{ Address: worker.GetWorkerReportedAddress(), Name: worker.GetWorkerReportedName(), Tags: map[string]*structpb.ListValue{ @@ -124,7 +124,7 @@ func TestGet(t *testing.T) { res: &pbs.GetWorkerResponse{Item: wantWorker}, }, { - name: "Get a non existant Worker", + name: "Get a non-existent Worker", req: &pbs.GetWorkerRequest{Id: servers.WorkerPrefix + "_DoesntExis"}, res: nil, err: handlers.ApiErrorWithCode(codes.NotFound), @@ -136,7 +136,7 @@ func TestGet(t *testing.T) { err: handlers.ApiErrorWithCode(codes.InvalidArgument), }, { - name: "space in id", + name: "Space in id", req: &pbs.GetWorkerRequest{Id: servers.WorkerPrefix + "_1 23456789"}, res: nil, err: handlers.ApiErrorWithCode(codes.InvalidArgument), @@ -186,7 +186,7 @@ func TestList(t *testing.T) { AuthorizedActions: testAuthorizedActions, CanonicalAddress: w.CanonicalAddress(), LastStatusTime: w.GetLastStatusTime().GetTimestamp(), - WorkerConfig: &pb.WorkerConfig{ + WorkerProvidedConfiguration: &pb.WorkerProvidedConfiguration{ Address: w.GetWorkerReportedAddress(), Name: w.GetWorkerReportedName(), }, @@ -370,7 +370,7 @@ func TestUpdate(t *testing.T) { workerService, err := NewService(ctx, repoFn, iamRepoFn) require.NoError(t, err) expectedScope := &scopes.ScopeInfo{Id: scope.Global.String(), Type: scope.Global.String(), Name: scope.Global.String(), Description: "Global Scope"} - expectedConfig := &pb.WorkerConfig{ + expectedConfig := &pb.WorkerProvidedConfiguration{ Address: wkr.GetWorkerReportedAddress(), Name: wkr.GetWorkerReportedName(), } @@ -395,17 +395,17 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Name: wrapperspb.String("name"), - Description: wrapperspb.String("desc"), - Address: wrapperspb.String("address"), - CanonicalAddress: "address", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Name: wrapperspb.String("name"), + Description: wrapperspb.String("desc"), + Address: wrapperspb.String("address"), + CanonicalAddress: "address", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -422,17 +422,17 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Name: wrapperspb.String("name"), - Description: wrapperspb.String("desc"), - Address: wrapperspb.String("default"), - CanonicalAddress: "default", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Name: wrapperspb.String("name"), + Description: wrapperspb.String("desc"), + Address: wrapperspb.String("default"), + CanonicalAddress: "default", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -488,16 +488,16 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Description: wrapperspb.String("default"), - Address: wrapperspb.String("default"), - CanonicalAddress: "default", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Description: wrapperspb.String("default"), + Address: wrapperspb.String("default"), + CanonicalAddress: "default", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -513,16 +513,16 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Name: wrapperspb.String("default"), - Address: wrapperspb.String("default"), - CanonicalAddress: "default", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Name: wrapperspb.String("default"), + Address: wrapperspb.String("default"), + CanonicalAddress: "default", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -539,17 +539,17 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Name: wrapperspb.String("updated"), - Description: wrapperspb.String("default"), - Address: wrapperspb.String("default"), - CanonicalAddress: "default", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Name: wrapperspb.String("updated"), + Description: wrapperspb.String("default"), + Address: wrapperspb.String("default"), + CanonicalAddress: "default", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -566,17 +566,17 @@ func TestUpdate(t *testing.T) { }, res: &pbs.UpdateWorkerResponse{ Item: &pb.Worker{ - Id: wkr.GetPublicId(), - ScopeId: wkr.GetScopeId(), - Scope: expectedScope, - Name: wrapperspb.String("default"), - Description: wrapperspb.String("notignored"), - Address: wrapperspb.String("default"), - CanonicalAddress: "default", - CreatedTime: wkr.GetCreateTime().GetTimestamp(), - LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), - WorkerConfig: expectedConfig, - AuthorizedActions: testAuthorizedActions, + Id: wkr.GetPublicId(), + ScopeId: wkr.GetScopeId(), + Scope: expectedScope, + Name: wrapperspb.String("default"), + Description: wrapperspb.String("notignored"), + Address: wrapperspb.String("default"), + CanonicalAddress: "default", + CreatedTime: wkr.GetCreateTime().GetTimestamp(), + LastStatusTime: wkr.GetLastStatusTime().GetTimestamp(), + WorkerProvidedConfiguration: expectedConfig, + AuthorizedActions: testAuthorizedActions, }, }, }, @@ -598,10 +598,10 @@ func TestUpdate(t *testing.T) { req: &pbs.UpdateWorkerRequest{ Id: wkr.GetPublicId(), UpdateMask: &field_mask.FieldMask{ - Paths: []string{"worker_config.name"}, + Paths: []string{"worker_provided_configuration.name"}, }, Item: &pb.Worker{ - WorkerConfig: &pb.WorkerConfig{ + WorkerProvidedConfiguration: &pb.WorkerProvidedConfiguration{ Name: "name", }, }, @@ -614,10 +614,10 @@ func TestUpdate(t *testing.T) { req: &pbs.UpdateWorkerRequest{ Id: wkr.GetPublicId(), UpdateMask: &field_mask.FieldMask{ - Paths: []string{"worker_config.address"}, + Paths: []string{"worker_provided_configuration.address"}, }, Item: &pb.Worker{ - WorkerConfig: &pb.WorkerConfig{ + WorkerProvidedConfiguration: &pb.WorkerProvidedConfiguration{ Address: "address", }, }, @@ -840,8 +840,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: "invalid-scope", - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: "invalid-scope", + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, }, }, wantErr: true, @@ -859,7 +859,7 @@ func TestCreateWorkerLed(t *testing.T) { }, wantErr: true, wantErrIs: handlers.ApiErrorWithCode(codes.InvalidArgument), - wantErrContains: globals.WorkerAuthTokenField, + wantErrContains: globals.WorkerGeneratedAuthTokenField, }, { name: "invalid-id", @@ -867,9 +867,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - Id: "invalid-id", + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + Id: "invalid-id", }, }, wantErr: true, @@ -882,9 +882,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - CanonicalAddress: "invalid-canonical-address", + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + CanonicalAddress: "invalid-canonical-address", }, }, wantErr: true, @@ -897,8 +897,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, Tags: map[string]*structpb.ListValue{ "invalid": {Values: []*structpb.Value{ structpb.NewStringValue("invalid-tags"), @@ -916,8 +916,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, CanonicalTags: map[string]*structpb.ListValue{ "invalid": {Values: []*structpb.Value{ structpb.NewStringValue("invalid-canonical-tags"), @@ -935,9 +935,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - LastStatusTime: timestamppb.Now(), + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + LastStatusTime: timestamppb.Now(), }, }, wantErr: true, @@ -950,14 +950,14 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - WorkerConfig: &pb.WorkerConfig{}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + WorkerProvidedConfiguration: &pb.WorkerProvidedConfiguration{}, }, }, wantErr: true, wantErrIs: handlers.ApiErrorWithCode(codes.InvalidArgument), - wantErrContains: globals.WorkerConfigField, + wantErrContains: globals.WorkerProvidedConfigurationField, }, { name: "invalid-authorized-actions", @@ -965,9 +965,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - AuthorizedActions: []string{"invalid-authorized-actions"}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + AuthorizedActions: []string{"invalid-authorized-actions"}, }, }, wantErr: true, @@ -980,9 +980,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - CreatedTime: timestamppb.Now(), + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + CreatedTime: timestamppb.Now(), }, }, wantErr: true, @@ -995,9 +995,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - UpdatedTime: timestamppb.Now(), + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + UpdatedTime: timestamppb.Now(), }, }, wantErr: true, @@ -1010,9 +1010,9 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, - Version: 1, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + Version: 1, }, }, wantErr: true, @@ -1025,8 +1025,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: "splat-auth-scope", req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, }, }, wantErr: true, @@ -1038,8 +1038,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: "invalid;semicolon"}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: "invalid;semicolon"}, }, }, wantErr: true, @@ -1051,8 +1051,8 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - WorkerAuthToken: &wrapperspb.StringValue{Value: "notNodeCreds"}, + ScopeId: scope.Global.String(), + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: "notNodeCreds"}, }, }, wantErr: true, @@ -1071,10 +1071,10 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - Name: &wrapperspb.StringValue{Value: "success"}, - Description: &wrapperspb.StringValue{Value: "success-description"}, - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + Name: &wrapperspb.StringValue{Value: "success"}, + Description: &wrapperspb.StringValue{Value: "success-description"}, + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, }, }, wantErr: true, @@ -1104,10 +1104,10 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - Name: &wrapperspb.StringValue{Value: "success"}, - Description: &wrapperspb.StringValue{Value: "success-description"}, - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + Name: &wrapperspb.StringValue{Value: "success"}, + Description: &wrapperspb.StringValue{Value: "success-description"}, + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, }, }, wantErr: true, @@ -1119,10 +1119,10 @@ func TestCreateWorkerLed(t *testing.T) { scopeId: scope.Global.String(), req: &pbs.CreateWorkerLedRequest{ Item: &workers.Worker{ - ScopeId: scope.Global.String(), - Name: &wrapperspb.StringValue{Value: "success"}, - Description: &wrapperspb.StringValue{Value: "success-description"}, - WorkerAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, + ScopeId: scope.Global.String(), + Name: &wrapperspb.StringValue{Value: "success"}, + Description: &wrapperspb.StringValue{Value: "success-description"}, + WorkerGeneratedAuthToken: &wrapperspb.StringValue{Value: fetchReqFn()}, }, }, res: &pbs.CreateWorkerLedResponse{ diff --git a/internal/daemon/controller/intercepting_listener.go b/internal/daemon/controller/intercepting_listener.go index 8d0d08c54..6a95f18ae 100644 --- a/internal/daemon/controller/intercepting_listener.go +++ b/internal/daemon/controller/intercepting_listener.go @@ -86,7 +86,7 @@ func (m *interceptingListener) Accept() (net.Conn, error) { } return nil, newTempError(fmt.Errorf("error deriving key id from newly-authenticated node: %w", err)) } - event.WriteSysEvent(ctx, op, "worker successfully authed", "key_id", keyId) + event.WriteSysEvent(ctx, op, "worker successfully authenticated", "key_id", keyId) return conn, nil case strings.HasPrefix(tlsConn.ConnectionState().NegotiatedProtocol, "v1workerauth"): diff --git a/internal/daemon/worker/listeners.go b/internal/daemon/worker/listeners.go index 7a8a9a5c6..54ca63ea6 100644 --- a/internal/daemon/worker/listeners.go +++ b/internal/daemon/worker/listeners.go @@ -159,7 +159,12 @@ func (w *Worker) configureForWorker(ln *base.ServerListener, logger *log.Logger) return func() { go w.workerAuthSplitListener.Start() go httpServer.Serve(w.workerAuthSplitListener.OtherListener()) - go ln.GrpcServer.Serve(w.workerAuthSplitListener.NodeEnrollmentListener()) + go ln.GrpcServer.Serve( + &eventingListener{ + ctx: cancelCtx, + baseLn: w.workerAuthSplitListener.NodeEnrollmentListener(), + }, + ) }, nil } @@ -270,3 +275,36 @@ func listenerCloseErrorCheck(lnType string, err error) error { return err } + +type eventingListener struct { + ctx context.Context + baseLn net.Listener +} + +func (e *eventingListener) Accept() (net.Conn, error) { + const op = "worker.(eventingListener).Accept" + conn, err := e.baseLn.Accept() + if err != nil || conn == nil { + return conn, err + } + + // This is all best-effort; anything going wrong here shouldn't disrupt the + // connection, so on error simply stop trying to get to an event + tlsConn, ok := conn.(*tls.Conn) + if ok && len(tlsConn.ConnectionState().PeerCertificates) > 0 { + keyId, err := nodee.KeyIdFromPkix(tlsConn.ConnectionState().PeerCertificates[0].SubjectKeyId) + if err == nil { + event.WriteSysEvent(e.ctx, op, "worker successfully authenticated", "key_id", keyId) + } + } + + return conn, err +} + +func (e *eventingListener) Close() error { + return e.baseLn.Close() +} + +func (e *eventingListener) Addr() net.Addr { + return e.baseLn.Addr() +} diff --git a/internal/gen/controller.swagger.json b/internal/gen/controller.swagger.json index 750f1d0e9..98dffffe8 100644 --- a/internal/gen/controller.swagger.json +++ b/internal/gen/controller.swagger.json @@ -5577,14 +5577,14 @@ "description": "Output only. The time this worker daemon last reported its status.", "readOnly": true }, - "worker_config": { - "$ref": "#/definitions/controller.api.resources.workers.v1.WorkerConfig", + "worker_provided_configuration": { + "$ref": "#/definitions/controller.api.resources.workers.v1.WorkerProvidedConfiguration", "description": "Output only. The set of information the worker daemon has reported about\nitself.", "readOnly": true }, - "worker_auth_token": { + "worker_generated_auth_token": { "type": "string", - "title": "worker_auth_token is input only. Supports the worker led node\nenrollment flow where this credentials token is produced by a worker. This\ntoken is a base58 encoded types.FetchNodeCredentialsRequest from\nhttps://github.com/hashicorp/nodeenrollment" + "title": "worker_generated_auth_token is input only. Supports the worker led node\nenrollment flow where this credentials token is produced by a worker. This\ntoken is a base58 encoded types.FetchNodeCredentialsRequest from\nhttps://github.com/hashicorp/nodeenrollment" }, "active_connection_count": { "type": "integer", @@ -5603,7 +5603,7 @@ }, "title": "Worker contains all fields related to a Worker resource" }, - "controller.api.resources.workers.v1.WorkerConfig": { + "controller.api.resources.workers.v1.WorkerProvidedConfiguration": { "type": "object", "properties": { "address": { @@ -5628,7 +5628,7 @@ "readOnly": true } }, - "description": "WorkerConfig contains configuration values reported by the worker daemon." + "description": "WorkerProvidedConfiguration contains configuration values reported by the worker daemon." }, "controller.api.services.v1.AddGroupMembersResponse": { "type": "object", diff --git a/internal/proto/controller/api/resources/workers/v1/worker.proto b/internal/proto/controller/api/resources/workers/v1/worker.proto index 6a925c9a6..f54a7d955 100644 --- a/internal/proto/controller/api/resources/workers/v1/worker.proto +++ b/internal/proto/controller/api/resources/workers/v1/worker.proto @@ -10,8 +10,8 @@ import "google/protobuf/wrappers.proto"; option go_package = "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/workers;workers"; -// WorkerConfig contains configuration values reported by the worker daemon. -message WorkerConfig { +// WorkerProvidedConfiguration contains configuration values reported by the worker daemon. +message WorkerProvidedConfiguration { // Output only. The address the worker daemon reports itself as reachable at. string address = 10; @@ -88,13 +88,13 @@ message Worker { // Output only. The set of information the worker daemon has reported about // itself. - WorkerConfig worker_config = 140 [json_name = "worker_config"]; + WorkerProvidedConfiguration worker_provided_configuration = 140 [json_name = "worker_provided_configuration"]; - // worker_auth_token is input only. Supports the worker led node + // worker_generated_auth_token is input only. Supports the worker led node // enrollment flow where this credentials token is produced by a worker. This // token is a base58 encoded types.FetchNodeCredentialsRequest from // https://github.com/hashicorp/nodeenrollment - google.protobuf.StringValue worker_auth_token = 150 [json_name = "worker_auth_token"]; // @gotags: `class:"public"` + google.protobuf.StringValue worker_generated_auth_token = 150 [json_name = "worker_generated_auth_token"]; // @gotags: `class:"public"` // Output only. The number of connections that this worker is currently handling. uint32 active_connection_count = 160 [json_name = "active_connection_count"]; // @gotags: `class:"public"` diff --git a/sdk/pbs/controller/api/resources/workers/worker.pb.go b/sdk/pbs/controller/api/resources/workers/worker.pb.go index bf4791563..57e01edab 100644 --- a/sdk/pbs/controller/api/resources/workers/worker.pb.go +++ b/sdk/pbs/controller/api/resources/workers/worker.pb.go @@ -25,8 +25,8 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -// WorkerConfig contains configuration values reported by the worker daemon. -type WorkerConfig struct { +// WorkerProvidedConfiguration contains configuration values reported by the worker daemon. +type WorkerProvidedConfiguration struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -39,8 +39,8 @@ type WorkerConfig struct { Tags map[string]*structpb.ListValue `protobuf:"bytes,40,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (x *WorkerConfig) Reset() { - *x = WorkerConfig{} +func (x *WorkerProvidedConfiguration) Reset() { + *x = WorkerProvidedConfiguration{} if protoimpl.UnsafeEnabled { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -48,13 +48,13 @@ func (x *WorkerConfig) Reset() { } } -func (x *WorkerConfig) String() string { +func (x *WorkerProvidedConfiguration) String() string { return protoimpl.X.MessageStringOf(x) } -func (*WorkerConfig) ProtoMessage() {} +func (*WorkerProvidedConfiguration) ProtoMessage() {} -func (x *WorkerConfig) ProtoReflect() protoreflect.Message { +func (x *WorkerProvidedConfiguration) ProtoReflect() protoreflect.Message { mi := &file_controller_api_resources_workers_v1_worker_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -66,26 +66,26 @@ func (x *WorkerConfig) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use WorkerConfig.ProtoReflect.Descriptor instead. -func (*WorkerConfig) Descriptor() ([]byte, []int) { +// Deprecated: Use WorkerProvidedConfiguration.ProtoReflect.Descriptor instead. +func (*WorkerProvidedConfiguration) Descriptor() ([]byte, []int) { return file_controller_api_resources_workers_v1_worker_proto_rawDescGZIP(), []int{0} } -func (x *WorkerConfig) GetAddress() string { +func (x *WorkerProvidedConfiguration) GetAddress() string { if x != nil { return x.Address } return "" } -func (x *WorkerConfig) GetName() string { +func (x *WorkerProvidedConfiguration) GetName() string { if x != nil { return x.Name } return "" } -func (x *WorkerConfig) GetTags() map[string]*structpb.ListValue { +func (x *WorkerProvidedConfiguration) GetTags() map[string]*structpb.ListValue { if x != nil { return x.Tags } @@ -131,12 +131,12 @@ type Worker struct { LastStatusTime *timestamppb.Timestamp `protobuf:"bytes,130,opt,name=last_status_time,proto3" json:"last_status_time,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The set of information the worker daemon has reported about // itself. - WorkerConfig *WorkerConfig `protobuf:"bytes,140,opt,name=worker_config,proto3" json:"worker_config,omitempty"` - // worker_auth_token is input only. Supports the worker led node + WorkerProvidedConfiguration *WorkerProvidedConfiguration `protobuf:"bytes,140,opt,name=worker_provided_configuration,proto3" json:"worker_provided_configuration,omitempty"` + // worker_generated_auth_token is input only. Supports the worker led node // enrollment flow where this credentials token is produced by a worker. This // token is a base58 encoded types.FetchNodeCredentialsRequest from // https://github.com/hashicorp/nodeenrollment - WorkerAuthToken *wrapperspb.StringValue `protobuf:"bytes,150,opt,name=worker_auth_token,proto3" json:"worker_auth_token,omitempty" class:"public"` // @gotags: `class:"public"` + WorkerGeneratedAuthToken *wrapperspb.StringValue `protobuf:"bytes,150,opt,name=worker_generated_auth_token,proto3" json:"worker_generated_auth_token,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The number of connections that this worker is currently handling. ActiveConnectionCount uint32 `protobuf:"varint,160,opt,name=active_connection_count,proto3" json:"active_connection_count,omitempty" class:"public"` // @gotags: `class:"public"` // Output only. The available actions on this resource for the requester. @@ -266,16 +266,16 @@ func (x *Worker) GetLastStatusTime() *timestamppb.Timestamp { return nil } -func (x *Worker) GetWorkerConfig() *WorkerConfig { +func (x *Worker) GetWorkerProvidedConfiguration() *WorkerProvidedConfiguration { if x != nil { - return x.WorkerConfig + return x.WorkerProvidedConfiguration } return nil } -func (x *Worker) GetWorkerAuthToken() *wrapperspb.StringValue { +func (x *Worker) GetWorkerGeneratedAuthToken() *wrapperspb.StringValue { if x != nil { - return x.WorkerAuthToken + return x.WorkerGeneratedAuthToken } return nil } @@ -314,107 +314,113 @@ var file_controller_api_resources_workers_v1_worker_proto_rawDesc = []byte{ 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xe2, 0x01, 0x0a, 0x0c, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x4f, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x3b, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, - 0x67, 0x73, 0x1a, 0x53, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x83, 0x0a, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, - 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x43, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, - 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x63, - 0x6f, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, - 0x14, 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd, 0x29, 0x0c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x22, - 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd, 0x29, 0x1a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, - 0x3e, 0x0a, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x3c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x3e, 0x0a, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, - 0x46, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd, - 0x29, 0x12, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a, - 0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, - 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x04, 0x74, - 0x61, 0x67, 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x6e, 0x74, - 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x12, 0x66, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, - 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x78, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, + 0x74, 0x6f, 0x22, 0x80, 0x02, 0x0a, 0x1b, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x5e, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x28, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4a, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x6f, - 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, - 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x12, 0x47, - 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x58, 0x0a, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x31, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, - 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, - 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x4b, 0x0a, 0x11, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x96, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x11, 0x77, 0x6f, 0x72, - 0x6b, 0x65, 0x72, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, - 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x12, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0xac, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, - 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, 0x0a, 0x09, 0x54, 0x61, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, + 0x1a, 0x53, 0x0a, 0x09, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xc7, 0x0a, 0x0a, 0x06, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x14, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x5f, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x63, 0x6f, + 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x73, 0x63, 0x6f, 0x70, 0x65, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x70, + 0x65, 0x12, 0x46, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x14, 0xa0, + 0xda, 0x29, 0x01, 0xc2, 0xdd, 0x29, 0x0c, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x62, 0x0a, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x22, 0xa0, 0xda, + 0x29, 0x01, 0xc2, 0xdd, 0x29, 0x1a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x12, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3c, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x3e, 0x0a, + 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x46, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x0c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x50, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x52, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x18, 0x5a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0xa0, 0xda, 0x29, 0x01, 0xc2, 0xdd, 0x29, 0x12, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x63, + 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x18, 0x64, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, + 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x49, 0x0a, 0x04, 0x74, 0x61, 0x67, + 0x73, 0x18, 0x6e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, + 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, + 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x74, 0x61, 0x67, 0x73, 0x12, 0x66, 0x0a, 0x0e, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, + 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x18, 0x78, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x63, + 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x2e, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, + 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x63, 0x61, + 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x67, 0x73, 0x12, 0x47, 0x0a, 0x10, + 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x82, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x87, 0x01, 0x0a, 0x1d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x8c, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x40, + 0x2e, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x2e, 0x61, 0x70, 0x69, 0x2e, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2e, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x1d, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x64, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x5f, 0x0a, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x96, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x1b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x5f, 0x67, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x39, 0x0a, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0xa0, 0x01, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x17, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2f, 0x0a, 0x12, 0x61, + 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0xac, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x12, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, + 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x53, 0x0a, 0x09, + 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x1a, 0x5c, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, - 0x5c, 0x0a, 0x12, 0x43, 0x61, 0x6e, 0x6f, 0x6e, 0x69, 0x63, 0x61, 0x6c, 0x54, 0x61, 0x67, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x50, 0x5a, - 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, 0x73, 0x68, - 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x2f, 0x73, - 0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, - 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2f, - 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x3b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, + 0x50, 0x5a, 0x4e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x68, 0x61, + 0x73, 0x68, 0x69, 0x63, 0x6f, 0x72, 0x70, 0x2f, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, + 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x70, 0x62, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, + 0x6c, 0x65, 0x72, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x73, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x3b, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, + 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -431,18 +437,18 @@ func file_controller_api_resources_workers_v1_worker_proto_rawDescGZIP() []byte var file_controller_api_resources_workers_v1_worker_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_controller_api_resources_workers_v1_worker_proto_goTypes = []interface{}{ - (*WorkerConfig)(nil), // 0: controller.api.resources.workers.v1.WorkerConfig - (*Worker)(nil), // 1: controller.api.resources.workers.v1.Worker - nil, // 2: controller.api.resources.workers.v1.WorkerConfig.TagsEntry - nil, // 3: controller.api.resources.workers.v1.Worker.TagsEntry - nil, // 4: controller.api.resources.workers.v1.Worker.CanonicalTagsEntry - (*scopes.ScopeInfo)(nil), // 5: controller.api.resources.scopes.v1.ScopeInfo - (*wrapperspb.StringValue)(nil), // 6: google.protobuf.StringValue - (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp - (*structpb.ListValue)(nil), // 8: google.protobuf.ListValue + (*WorkerProvidedConfiguration)(nil), // 0: controller.api.resources.workers.v1.WorkerProvidedConfiguration + (*Worker)(nil), // 1: controller.api.resources.workers.v1.Worker + nil, // 2: controller.api.resources.workers.v1.WorkerProvidedConfiguration.TagsEntry + nil, // 3: controller.api.resources.workers.v1.Worker.TagsEntry + nil, // 4: controller.api.resources.workers.v1.Worker.CanonicalTagsEntry + (*scopes.ScopeInfo)(nil), // 5: controller.api.resources.scopes.v1.ScopeInfo + (*wrapperspb.StringValue)(nil), // 6: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 7: google.protobuf.Timestamp + (*structpb.ListValue)(nil), // 8: google.protobuf.ListValue } var file_controller_api_resources_workers_v1_worker_proto_depIdxs = []int32{ - 2, // 0: controller.api.resources.workers.v1.WorkerConfig.tags:type_name -> controller.api.resources.workers.v1.WorkerConfig.TagsEntry + 2, // 0: controller.api.resources.workers.v1.WorkerProvidedConfiguration.tags:type_name -> controller.api.resources.workers.v1.WorkerProvidedConfiguration.TagsEntry 5, // 1: controller.api.resources.workers.v1.Worker.scope:type_name -> controller.api.resources.scopes.v1.ScopeInfo 6, // 2: controller.api.resources.workers.v1.Worker.name:type_name -> google.protobuf.StringValue 6, // 3: controller.api.resources.workers.v1.Worker.description:type_name -> google.protobuf.StringValue @@ -452,9 +458,9 @@ var file_controller_api_resources_workers_v1_worker_proto_depIdxs = []int32{ 3, // 7: controller.api.resources.workers.v1.Worker.tags:type_name -> controller.api.resources.workers.v1.Worker.TagsEntry 4, // 8: controller.api.resources.workers.v1.Worker.canonical_tags:type_name -> controller.api.resources.workers.v1.Worker.CanonicalTagsEntry 7, // 9: controller.api.resources.workers.v1.Worker.last_status_time:type_name -> google.protobuf.Timestamp - 0, // 10: controller.api.resources.workers.v1.Worker.worker_config:type_name -> controller.api.resources.workers.v1.WorkerConfig - 6, // 11: controller.api.resources.workers.v1.Worker.worker_auth_token:type_name -> google.protobuf.StringValue - 8, // 12: controller.api.resources.workers.v1.WorkerConfig.TagsEntry.value:type_name -> google.protobuf.ListValue + 0, // 10: controller.api.resources.workers.v1.Worker.worker_provided_configuration:type_name -> controller.api.resources.workers.v1.WorkerProvidedConfiguration + 6, // 11: controller.api.resources.workers.v1.Worker.worker_generated_auth_token:type_name -> google.protobuf.StringValue + 8, // 12: controller.api.resources.workers.v1.WorkerProvidedConfiguration.TagsEntry.value:type_name -> google.protobuf.ListValue 8, // 13: controller.api.resources.workers.v1.Worker.TagsEntry.value:type_name -> google.protobuf.ListValue 8, // 14: controller.api.resources.workers.v1.Worker.CanonicalTagsEntry.value:type_name -> google.protobuf.ListValue 15, // [15:15] is the sub-list for method output_type @@ -471,7 +477,7 @@ func file_controller_api_resources_workers_v1_worker_proto_init() { } if !protoimpl.UnsafeEnabled { file_controller_api_resources_workers_v1_worker_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WorkerConfig); i { + switch v := v.(*WorkerProvidedConfiguration); i { case 0: return &v.state case 1: