From 1f204c56ebbf7d80653216da28a07938a99d0b12 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 13:12:53 +0200 Subject: [PATCH 01/13] feat: add GetTenantConfig and UpdateTenantConfig RPCs for tenant-specific configuration Signed-off-by: Pawel Szelag --- .../api/cmk/eventprocessor/task/v1/task.pb.go | 138 +++-- .../api/cmk/eventprocessor/task/v1/task.proto | 7 + .../api/cmk/registry/tenant/v1/tenant.pb.go | 513 +++++++++++++++--- .../api/cmk/registry/tenant/v1/tenant.proto | 44 ++ .../cmk/registry/tenant/v1/tenant_grpc.pb.go | 80 ++- 5 files changed, 674 insertions(+), 108 deletions(-) diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go index 812418a..a43c72f 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.11 -// protoc v7.35.1 +// protoc-gen-go v1.36.12 +// protoc v5.29.3 // source: kms/api/cmk/eventprocessor/task/v1/task.proto package taskv1 @@ -24,14 +24,15 @@ const ( type TaskType int32 const ( - TaskType_KEY_ENABLE TaskType = 0 - TaskType_KEY_DISABLE TaskType = 1 - TaskType_KEY_DELETE TaskType = 2 - TaskType_KEY_ROTATE TaskType = 3 - TaskType_SYSTEM_LINK TaskType = 4 - TaskType_SYSTEM_UNLINK TaskType = 5 - TaskType_SYSTEM_SWITCH TaskType = 6 - TaskType_KEY_DETACH TaskType = 7 + TaskType_KEY_ENABLE TaskType = 0 + TaskType_KEY_DISABLE TaskType = 1 + TaskType_KEY_DELETE TaskType = 2 + TaskType_KEY_ROTATE TaskType = 3 + TaskType_SYSTEM_LINK TaskType = 4 + TaskType_SYSTEM_UNLINK TaskType = 5 + TaskType_SYSTEM_SWITCH TaskType = 6 + TaskType_KEY_DETACH TaskType = 7 + TaskType_TENANT_RECONFIGURE TaskType = 8 ) // Enum value maps for TaskType. @@ -45,16 +46,18 @@ var ( 5: "SYSTEM_UNLINK", 6: "SYSTEM_SWITCH", 7: "KEY_DETACH", + 8: "TENANT_RECONFIGURE", } TaskType_value = map[string]int32{ - "KEY_ENABLE": 0, - "KEY_DISABLE": 1, - "KEY_DELETE": 2, - "KEY_ROTATE": 3, - "SYSTEM_LINK": 4, - "SYSTEM_UNLINK": 5, - "SYSTEM_SWITCH": 6, - "KEY_DETACH": 7, + "KEY_ENABLE": 0, + "KEY_DISABLE": 1, + "KEY_DELETE": 2, + "KEY_ROTATE": 3, + "SYSTEM_LINK": 4, + "SYSTEM_UNLINK": 5, + "SYSTEM_SWITCH": 6, + "KEY_DETACH": 7, + "TENANT_RECONFIGURE": 8, } ) @@ -93,6 +96,7 @@ type Data struct { // // *Data_KeyAction // *Data_SystemAction + // *Data_TenantConfigAction Data isData_Data `protobuf_oneof:"data"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -160,6 +164,15 @@ func (x *Data) GetSystemAction() *SystemAction { return nil } +func (x *Data) GetTenantConfigAction() *TenantConfigAction { + if x != nil { + if x, ok := x.Data.(*Data_TenantConfigAction); ok { + return x.TenantConfigAction + } + } + return nil +} + type isData_Data interface { isData_Data() } @@ -172,10 +185,16 @@ type Data_SystemAction struct { SystemAction *SystemAction `protobuf:"bytes,20,opt,name=system_action,json=systemAction,proto3,oneof"` } +type Data_TenantConfigAction struct { + TenantConfigAction *TenantConfigAction `protobuf:"bytes,30,opt,name=tenant_config_action,json=tenantConfigAction,proto3,oneof"` +} + func (*Data_KeyAction) isData_Data() {} func (*Data_SystemAction) isData_Data() {} +func (*Data_TenantConfigAction) isData_Data() {} + // TaskType KEY_ENABLE, KEY_DISABLE, KEY_DELETE, KEY_ROTATE, KEY_DETACH type KeyAction struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -362,17 +381,63 @@ func (x *SystemAction) GetCmkRegion() string { return "" } +// TaskType TENANT_RECONFIGURE +type TenantConfigAction struct { + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,10,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantConfigAction) Reset() { + *x = TenantConfigAction{} + mi := &file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantConfigAction) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantConfigAction) ProtoMessage() {} + +func (x *TenantConfigAction) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantConfigAction.ProtoReflect.Descriptor instead. +func (*TenantConfigAction) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescGZIP(), []int{3} +} + +func (x *TenantConfigAction) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + var File_kms_api_cmk_eventprocessor_task_v1_task_proto protoreflect.FileDescriptor const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\n" + - "-kms/api/cmk/eventprocessor/task/v1/task.proto\x12\"kms.api.cmk.eventprocessor.task.v1\"\x82\x02\n" + + "-kms/api/cmk/eventprocessor/task/v1/task.proto\x12\"kms.api.cmk.eventprocessor.task.v1\"\xee\x02\n" + "\x04Data\x12I\n" + "\ttask_type\x18\x05 \x01(\x0e2,.kms.api.cmk.eventprocessor.task.v1.TaskTypeR\btaskType\x12N\n" + "\n" + "key_action\x18\n" + " \x01(\v2-.kms.api.cmk.eventprocessor.task.v1.KeyActionH\x00R\tkeyAction\x12W\n" + - "\rsystem_action\x18\x14 \x01(\v20.kms.api.cmk.eventprocessor.task.v1.SystemActionH\x00R\fsystemActionB\x06\n" + + "\rsystem_action\x18\x14 \x01(\v20.kms.api.cmk.eventprocessor.task.v1.SystemActionH\x00R\fsystemAction\x12j\n" + + "\x14tenant_config_action\x18\x1e \x01(\v26.kms.api.cmk.eventprocessor.task.v1.TenantConfigActionH\x00R\x12tenantConfigActionB\x06\n" + "\x04data\"^\n" + "\tKeyAction\x12\x15\n" + "\x06key_id\x18\n" + @@ -394,7 +459,10 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\x0ftenant_owner_id\x183 \x01(\tR\rtenantOwnerId\x12*\n" + "\x11tenant_owner_type\x184 \x01(\tR\x0ftenantOwnerType\x12\x1d\n" + "\n" + - "cmk_region\x18< \x01(\tR\tcmkRegion*\x92\x01\n" + + "cmk_region\x18< \x01(\tR\tcmkRegion\"1\n" + + "\x12TenantConfigAction\x12\x1b\n" + + "\ttenant_id\x18\n" + + " \x01(\tR\btenantId*\xaa\x01\n" + "\bTaskType\x12\x0e\n" + "\n" + "KEY_ENABLE\x10\x00\x12\x0f\n" + @@ -407,7 +475,8 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\rSYSTEM_UNLINK\x10\x05\x12\x11\n" + "\rSYSTEM_SWITCH\x10\x06\x12\x0e\n" + "\n" + - "KEY_DETACH\x10\aBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" + "KEY_DETACH\x10\a\x12\x16\n" + + "\x12TENANT_RECONFIGURE\x10\bBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" var ( file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescOnce sync.Once @@ -422,22 +491,24 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescGZIP() []byte { } var file_kms_api_cmk_eventprocessor_task_v1_task_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_kms_api_cmk_eventprocessor_task_v1_task_proto_goTypes = []any{ - (TaskType)(0), // 0: kms.api.cmk.eventprocessor.task.v1.TaskType - (*Data)(nil), // 1: kms.api.cmk.eventprocessor.task.v1.Data - (*KeyAction)(nil), // 2: kms.api.cmk.eventprocessor.task.v1.KeyAction - (*SystemAction)(nil), // 3: kms.api.cmk.eventprocessor.task.v1.SystemAction + (TaskType)(0), // 0: kms.api.cmk.eventprocessor.task.v1.TaskType + (*Data)(nil), // 1: kms.api.cmk.eventprocessor.task.v1.Data + (*KeyAction)(nil), // 2: kms.api.cmk.eventprocessor.task.v1.KeyAction + (*SystemAction)(nil), // 3: kms.api.cmk.eventprocessor.task.v1.SystemAction + (*TenantConfigAction)(nil), // 4: kms.api.cmk.eventprocessor.task.v1.TenantConfigAction } var file_kms_api_cmk_eventprocessor_task_v1_task_proto_depIdxs = []int32{ 0, // 0: kms.api.cmk.eventprocessor.task.v1.Data.task_type:type_name -> kms.api.cmk.eventprocessor.task.v1.TaskType 2, // 1: kms.api.cmk.eventprocessor.task.v1.Data.key_action:type_name -> kms.api.cmk.eventprocessor.task.v1.KeyAction 3, // 2: kms.api.cmk.eventprocessor.task.v1.Data.system_action:type_name -> kms.api.cmk.eventprocessor.task.v1.SystemAction - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name + 4, // 3: kms.api.cmk.eventprocessor.task.v1.Data.tenant_config_action:type_name -> kms.api.cmk.eventprocessor.task.v1.TenantConfigAction + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() } @@ -448,6 +519,7 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() { file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[0].OneofWrappers = []any{ (*Data_KeyAction)(nil), (*Data_SystemAction)(nil), + (*Data_TenantConfigAction)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -455,7 +527,7 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc), len(file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc)), NumEnums: 1, - NumMessages: 3, + NumMessages: 4, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto index 53830bb..6d6364e 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto @@ -13,6 +13,7 @@ enum TaskType { SYSTEM_UNLINK = 5; SYSTEM_SWITCH = 6; KEY_DETACH = 7; + TENANT_RECONFIGURE = 8; } // Wrapped proto for Orbital TaskRequest.data @@ -21,6 +22,7 @@ message Data { oneof data { KeyAction key_action = 10; SystemAction system_action = 20; + TenantConfigAction tenant_config_action = 30; } } @@ -45,3 +47,8 @@ message SystemAction { string tenant_owner_type = 52; string cmk_region = 60; } + +// TaskType TENANT_RECONFIGURE +message TenantConfigAction { + string tenant_id = 10; +} diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go index f7f20d2..1843387 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.11 -// protoc v7.35.1 +// protoc-gen-go v1.36.12 +// protoc v5.29.3 // source: kms/api/cmk/registry/tenant/v1/tenant.proto package tenantv1 @@ -10,6 +10,7 @@ import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -156,11 +157,12 @@ func (Role) EnumDescriptor() ([]byte, []int) { type ACTION int32 const ( - ACTION_ACTION_UNSPECIFIED ACTION = 0 - ACTION_ACTION_PROVISION_TENANT ACTION = 1 - ACTION_ACTION_BLOCK_TENANT ACTION = 2 - ACTION_ACTION_UNBLOCK_TENANT ACTION = 3 - ACTION_ACTION_TERMINATE_TENANT ACTION = 4 + ACTION_ACTION_UNSPECIFIED ACTION = 0 + ACTION_ACTION_PROVISION_TENANT ACTION = 1 + ACTION_ACTION_BLOCK_TENANT ACTION = 2 + ACTION_ACTION_UNBLOCK_TENANT ACTION = 3 + ACTION_ACTION_TERMINATE_TENANT ACTION = 4 + ACTION_ACTION_UPDATE_TENANT_CONFIG ACTION = 5 ) // Enum value maps for ACTION. @@ -171,13 +173,15 @@ var ( 2: "ACTION_BLOCK_TENANT", 3: "ACTION_UNBLOCK_TENANT", 4: "ACTION_TERMINATE_TENANT", + 5: "ACTION_UPDATE_TENANT_CONFIG", } ACTION_value = map[string]int32{ - "ACTION_UNSPECIFIED": 0, - "ACTION_PROVISION_TENANT": 1, - "ACTION_BLOCK_TENANT": 2, - "ACTION_UNBLOCK_TENANT": 3, - "ACTION_TERMINATE_TENANT": 4, + "ACTION_UNSPECIFIED": 0, + "ACTION_PROVISION_TENANT": 1, + "ACTION_BLOCK_TENANT": 2, + "ACTION_UNBLOCK_TENANT": 3, + "ACTION_TERMINATE_TENANT": 4, + "ACTION_UPDATE_TENANT_CONFIG": 5, } ) @@ -208,6 +212,58 @@ func (ACTION) EnumDescriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{2} } +type TenantConfigStatus int32 + +const ( + TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED TenantConfigStatus = 0 + TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING TenantConfigStatus = 1 + TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING_ERROR TenantConfigStatus = 2 + TenantConfigStatus_TENANT_CONFIG_STATUS_ACTIVE TenantConfigStatus = 3 +) + +// Enum value maps for TenantConfigStatus. +var ( + TenantConfigStatus_name = map[int32]string{ + 0: "TENANT_CONFIG_STATUS_UNSPECIFIED", + 1: "TENANT_CONFIG_STATUS_UPDATING", + 2: "TENANT_CONFIG_STATUS_UPDATING_ERROR", + 3: "TENANT_CONFIG_STATUS_ACTIVE", + } + TenantConfigStatus_value = map[string]int32{ + "TENANT_CONFIG_STATUS_UNSPECIFIED": 0, + "TENANT_CONFIG_STATUS_UPDATING": 1, + "TENANT_CONFIG_STATUS_UPDATING_ERROR": 2, + "TENANT_CONFIG_STATUS_ACTIVE": 3, + } +) + +func (x TenantConfigStatus) Enum() *TenantConfigStatus { + p := new(TenantConfigStatus) + *p = x + return p +} + +func (x TenantConfigStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TenantConfigStatus) Descriptor() protoreflect.EnumDescriptor { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes[3].Descriptor() +} + +func (TenantConfigStatus) Type() protoreflect.EnumType { + return &file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes[3] +} + +func (x TenantConfigStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TenantConfigStatus.Descriptor instead. +func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{3} +} + type Tenant struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -1274,11 +1330,279 @@ func (x *GetTenantResponse) GetTenant() *Tenant { return nil } +// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. +type TenantConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` + Status TenantConfigStatus `protobuf:"varint,2,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant.v1.TenantConfigStatus" json:"status,omitempty"` + ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + UpdatedAt string `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantConfiguration) Reset() { + *x = TenantConfiguration{} + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantConfiguration) ProtoMessage() {} + +func (x *TenantConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantConfiguration.ProtoReflect.Descriptor instead. +func (*TenantConfiguration) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{19} +} + +func (x *TenantConfiguration) GetSystemLimit() int32 { + if x != nil && x.SystemLimit != nil { + return *x.SystemLimit + } + return 0 +} + +func (x *TenantConfiguration) GetStatus() TenantConfigStatus { + if x != nil { + return x.Status + } + return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED +} + +func (x *TenantConfiguration) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *TenantConfiguration) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +type GetTenantConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantConfigRequest) Reset() { + *x = GetTenantConfigRequest{} + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantConfigRequest) ProtoMessage() {} + +func (x *GetTenantConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantConfigRequest.ProtoReflect.Descriptor instead. +func (*GetTenantConfigRequest) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{20} +} + +func (x *GetTenantConfigRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetTenantConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantConfigResponse) Reset() { + *x = GetTenantConfigResponse{} + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantConfigResponse) ProtoMessage() {} + +func (x *GetTenantConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantConfigResponse.ProtoReflect.Descriptor instead. +func (*GetTenantConfigResponse) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{21} +} + +func (x *GetTenantConfigResponse) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + +type UpdateTenantConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Configuration to update. + Config *TenantConfiguration `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // Fields to update. Only paths listed here are applied. + // To clear a field back to default, include it in update_mask + // but leave it unset (or set to default value) in config. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateTenantConfigRequest) Reset() { + *x = UpdateTenantConfigRequest{} + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateTenantConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTenantConfigRequest) ProtoMessage() {} + +func (x *UpdateTenantConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateTenantConfigRequest.ProtoReflect.Descriptor instead. +func (*UpdateTenantConfigRequest) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{22} +} + +func (x *UpdateTenantConfigRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateTenantConfigRequest) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + +func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +type UpdateTenantConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The updated configuration. + Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateTenantConfigResponse) Reset() { + *x = UpdateTenantConfigResponse{} + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateTenantConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTenantConfigResponse) ProtoMessage() {} + +func (x *UpdateTenantConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateTenantConfigResponse.ProtoReflect.Descriptor instead. +func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{23} +} + +func (x *UpdateTenantConfigResponse) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + var File_kms_api_cmk_registry_tenant_v1_tenant_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\n" + - "+kms/api/cmk/registry/tenant/v1/tenant.proto\x12\x1ekms.api.cmk.registry.tenant.v1\x1a\x1bbuf/validate/validate.proto\"\x8a\x04\n" + + "+kms/api/cmk/registry/tenant/v1/tenant.proto\x12\x1ekms.api.cmk.registry.tenant.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"\x8a\x04\n" + "\x06Tenant\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" + @@ -1366,7 +1690,25 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\x10GetTenantRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"S\n" + "\x11GetTenantResponse\x12>\n" + - "\x06tenant\x18\x01 \x01(\v2&.kms.api.cmk.registry.tenant.v1.TenantR\x06tenant*\xc6\x02\n" + + "\x06tenant\x18\x01 \x01(\v2&.kms.api.cmk.registry.tenant.v1.TenantR\x06tenant\"\xde\x01\n" + + "\x13TenantConfiguration\x12&\n" + + "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01\x12J\n" + + "\x06status\x18\x02 \x01(\x0e22.kms.api.cmk.registry.tenant.v1.TenantConfigStatusR\x06status\x12#\n" + + "\rerror_message\x18\x03 \x01(\tR\ferrorMessage\x12\x1d\n" + + "\n" + + "updated_at\x18\x04 \x01(\tR\tupdatedAtB\x0f\n" + + "\r_system_limit\"1\n" + + "\x16GetTenantConfigRequest\x12\x17\n" + + "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\"f\n" + + "\x17GetTenantConfigResponse\x12K\n" + + "\x06config\x18\x01 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config\"\xbe\x01\n" + + "\x19UpdateTenantConfigRequest\x12\x17\n" + + "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\x12K\n" + + "\x06config\x18\x02 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config\x12;\n" + + "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + + "updateMask\"i\n" + + "\x1aUpdateTenantConfigResponse\x12K\n" + + "\x06config\x18\x01 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config*\xc6\x02\n" + "\x06Status\x12\x16\n" + "\x12STATUS_UNSPECIFIED\x10\x00\x12\x14\n" + "\x10STATUS_REQUESTED\x10\x01\x12\x17\n" + @@ -1387,13 +1729,19 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\tROLE_LIVE\x10\x01\x12\r\n" + "\tROLE_TEST\x10\x02\x12\x0e\n" + "\n" + - "ROLE_TRIAL\x10\x03*\x8e\x01\n" + + "ROLE_TRIAL\x10\x03*\xaf\x01\n" + "\x06ACTION\x12\x16\n" + "\x12ACTION_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17ACTION_PROVISION_TENANT\x10\x01\x12\x17\n" + "\x13ACTION_BLOCK_TENANT\x10\x02\x12\x19\n" + "\x15ACTION_UNBLOCK_TENANT\x10\x03\x12\x1b\n" + - "\x17ACTION_TERMINATE_TENANT\x10\x042\xa6\t\n" + + "\x17ACTION_TERMINATE_TENANT\x10\x04\x12\x1f\n" + + "\x1bACTION_UPDATE_TENANT_CONFIG\x10\x05*\xa7\x01\n" + + "\x12TenantConfigStatus\x12$\n" + + " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + + "#TENANT_CONFIG_STATUS_UPDATING_ERROR\x10\x02\x12\x1f\n" + + "\x1bTENANT_CONFIG_STATUS_ACTIVE\x10\x032\xbd\v\n" + "\aService\x12\x81\x01\n" + "\x0eRegisterTenant\x125.kms.api.cmk.registry.tenant.v1.RegisterTenantRequest\x1a6.kms.api.cmk.registry.tenant.v1.RegisterTenantResponse\"\x00\x12x\n" + "\vListTenants\x122.kms.api.cmk.registry.tenant.v1.ListTenantsRequest\x1a3.kms.api.cmk.registry.tenant.v1.ListTenantsResponse\"\x00\x12r\n" + @@ -1403,7 +1751,9 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\x0fTerminateTenant\x126.kms.api.cmk.registry.tenant.v1.TerminateTenantRequest\x1a7.kms.api.cmk.registry.tenant.v1.TerminateTenantResponse\"\x00\x12\x84\x01\n" + "\x0fSetTenantLabels\x126.kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest\x1a7.kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse\"\x00\x12\x8d\x01\n" + "\x12RemoveTenantLabels\x129.kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest\x1a:.kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse\"\x00\x12\x90\x01\n" + - "\x13SetTenantUserGroups\x12:.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest\x1a;.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse\"\x00BJZHgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1b\x06proto3" + "\x13SetTenantUserGroups\x12:.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest\x1a;.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse\"\x00\x12\x84\x01\n" + + "\x0fGetTenantConfig\x126.kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest\x1a7.kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse\"\x00\x12\x8d\x01\n" + + "\x12UpdateTenantConfig\x129.kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest\x1a:.kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse\"\x00BJZHgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1b\x06proto3" var ( file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescOnce sync.Once @@ -1417,69 +1767,85 @@ func file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP() []byte { return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescData } -var file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_kms_api_cmk_registry_tenant_v1_tenant_proto_goTypes = []any{ (Status)(0), // 0: kms.api.cmk.registry.tenant.v1.Status (Role)(0), // 1: kms.api.cmk.registry.tenant.v1.Role (ACTION)(0), // 2: kms.api.cmk.registry.tenant.v1.ACTION - (*Tenant)(nil), // 3: kms.api.cmk.registry.tenant.v1.Tenant - (*RegisterTenantRequest)(nil), // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest - (*RegisterTenantResponse)(nil), // 5: kms.api.cmk.registry.tenant.v1.RegisterTenantResponse - (*ListTenantsRequest)(nil), // 6: kms.api.cmk.registry.tenant.v1.ListTenantsRequest - (*ListTenantsResponse)(nil), // 7: kms.api.cmk.registry.tenant.v1.ListTenantsResponse - (*BlockTenantRequest)(nil), // 8: kms.api.cmk.registry.tenant.v1.BlockTenantRequest - (*BlockTenantResponse)(nil), // 9: kms.api.cmk.registry.tenant.v1.BlockTenantResponse - (*UnblockTenantRequest)(nil), // 10: kms.api.cmk.registry.tenant.v1.UnblockTenantRequest - (*UnblockTenantResponse)(nil), // 11: kms.api.cmk.registry.tenant.v1.UnblockTenantResponse - (*TerminateTenantRequest)(nil), // 12: kms.api.cmk.registry.tenant.v1.TerminateTenantRequest - (*TerminateTenantResponse)(nil), // 13: kms.api.cmk.registry.tenant.v1.TerminateTenantResponse - (*SetTenantLabelsRequest)(nil), // 14: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest - (*SetTenantLabelsResponse)(nil), // 15: kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse - (*RemoveTenantLabelsRequest)(nil), // 16: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest - (*RemoveTenantLabelsResponse)(nil), // 17: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse - (*SetTenantUserGroupsRequest)(nil), // 18: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest - (*SetTenantUserGroupsResponse)(nil), // 19: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse - (*GetTenantRequest)(nil), // 20: kms.api.cmk.registry.tenant.v1.GetTenantRequest - (*GetTenantResponse)(nil), // 21: kms.api.cmk.registry.tenant.v1.GetTenantResponse - nil, // 22: kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry - nil, // 23: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry - nil, // 24: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry - nil, // 25: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry + (TenantConfigStatus)(0), // 3: kms.api.cmk.registry.tenant.v1.TenantConfigStatus + (*Tenant)(nil), // 4: kms.api.cmk.registry.tenant.v1.Tenant + (*RegisterTenantRequest)(nil), // 5: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest + (*RegisterTenantResponse)(nil), // 6: kms.api.cmk.registry.tenant.v1.RegisterTenantResponse + (*ListTenantsRequest)(nil), // 7: kms.api.cmk.registry.tenant.v1.ListTenantsRequest + (*ListTenantsResponse)(nil), // 8: kms.api.cmk.registry.tenant.v1.ListTenantsResponse + (*BlockTenantRequest)(nil), // 9: kms.api.cmk.registry.tenant.v1.BlockTenantRequest + (*BlockTenantResponse)(nil), // 10: kms.api.cmk.registry.tenant.v1.BlockTenantResponse + (*UnblockTenantRequest)(nil), // 11: kms.api.cmk.registry.tenant.v1.UnblockTenantRequest + (*UnblockTenantResponse)(nil), // 12: kms.api.cmk.registry.tenant.v1.UnblockTenantResponse + (*TerminateTenantRequest)(nil), // 13: kms.api.cmk.registry.tenant.v1.TerminateTenantRequest + (*TerminateTenantResponse)(nil), // 14: kms.api.cmk.registry.tenant.v1.TerminateTenantResponse + (*SetTenantLabelsRequest)(nil), // 15: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest + (*SetTenantLabelsResponse)(nil), // 16: kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse + (*RemoveTenantLabelsRequest)(nil), // 17: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest + (*RemoveTenantLabelsResponse)(nil), // 18: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse + (*SetTenantUserGroupsRequest)(nil), // 19: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest + (*SetTenantUserGroupsResponse)(nil), // 20: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse + (*GetTenantRequest)(nil), // 21: kms.api.cmk.registry.tenant.v1.GetTenantRequest + (*GetTenantResponse)(nil), // 22: kms.api.cmk.registry.tenant.v1.GetTenantResponse + (*TenantConfiguration)(nil), // 23: kms.api.cmk.registry.tenant.v1.TenantConfiguration + (*GetTenantConfigRequest)(nil), // 24: kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest + (*GetTenantConfigResponse)(nil), // 25: kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse + (*UpdateTenantConfigRequest)(nil), // 26: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest + (*UpdateTenantConfigResponse)(nil), // 27: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse + nil, // 28: kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry + nil, // 29: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry + nil, // 30: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry + nil, // 31: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry + (*fieldmaskpb.FieldMask)(nil), // 32: google.protobuf.FieldMask } var file_kms_api_cmk_registry_tenant_v1_tenant_proto_depIdxs = []int32{ 0, // 0: kms.api.cmk.registry.tenant.v1.Tenant.status:type_name -> kms.api.cmk.registry.tenant.v1.Status 1, // 1: kms.api.cmk.registry.tenant.v1.Tenant.role:type_name -> kms.api.cmk.registry.tenant.v1.Role - 22, // 2: kms.api.cmk.registry.tenant.v1.Tenant.labels:type_name -> kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry + 28, // 2: kms.api.cmk.registry.tenant.v1.Tenant.labels:type_name -> kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry 1, // 3: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.role:type_name -> kms.api.cmk.registry.tenant.v1.Role - 23, // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry - 24, // 5: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry - 3, // 6: kms.api.cmk.registry.tenant.v1.ListTenantsResponse.tenants:type_name -> kms.api.cmk.registry.tenant.v1.Tenant - 25, // 7: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry - 3, // 8: kms.api.cmk.registry.tenant.v1.GetTenantResponse.tenant:type_name -> kms.api.cmk.registry.tenant.v1.Tenant - 4, // 9: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:input_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest - 6, // 10: kms.api.cmk.registry.tenant.v1.Service.ListTenants:input_type -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest - 20, // 11: kms.api.cmk.registry.tenant.v1.Service.GetTenant:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantRequest - 8, // 12: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:input_type -> kms.api.cmk.registry.tenant.v1.BlockTenantRequest - 10, // 13: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:input_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantRequest - 12, // 14: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:input_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantRequest - 14, // 15: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest - 16, // 16: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest - 18, // 17: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest - 5, // 18: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:output_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantResponse - 7, // 19: kms.api.cmk.registry.tenant.v1.Service.ListTenants:output_type -> kms.api.cmk.registry.tenant.v1.ListTenantsResponse - 21, // 20: kms.api.cmk.registry.tenant.v1.Service.GetTenant:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantResponse - 9, // 21: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:output_type -> kms.api.cmk.registry.tenant.v1.BlockTenantResponse - 11, // 22: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:output_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantResponse - 13, // 23: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:output_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantResponse - 15, // 24: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse - 17, // 25: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse - 19, // 26: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse - 18, // [18:27] is the sub-list for method output_type - 9, // [9:18] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 29, // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry + 30, // 5: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry + 4, // 6: kms.api.cmk.registry.tenant.v1.ListTenantsResponse.tenants:type_name -> kms.api.cmk.registry.tenant.v1.Tenant + 31, // 7: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry + 4, // 8: kms.api.cmk.registry.tenant.v1.GetTenantResponse.tenant:type_name -> kms.api.cmk.registry.tenant.v1.Tenant + 3, // 9: kms.api.cmk.registry.tenant.v1.TenantConfiguration.status:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfigStatus + 23, // 10: kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration + 23, // 11: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration + 32, // 12: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask + 23, // 13: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration + 5, // 14: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:input_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest + 7, // 15: kms.api.cmk.registry.tenant.v1.Service.ListTenants:input_type -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest + 21, // 16: kms.api.cmk.registry.tenant.v1.Service.GetTenant:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantRequest + 9, // 17: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:input_type -> kms.api.cmk.registry.tenant.v1.BlockTenantRequest + 11, // 18: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:input_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantRequest + 13, // 19: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:input_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantRequest + 15, // 20: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest + 17, // 21: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest + 19, // 22: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest + 24, // 23: kms.api.cmk.registry.tenant.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest + 26, // 24: kms.api.cmk.registry.tenant.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest + 6, // 25: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:output_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantResponse + 8, // 26: kms.api.cmk.registry.tenant.v1.Service.ListTenants:output_type -> kms.api.cmk.registry.tenant.v1.ListTenantsResponse + 22, // 27: kms.api.cmk.registry.tenant.v1.Service.GetTenant:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantResponse + 10, // 28: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:output_type -> kms.api.cmk.registry.tenant.v1.BlockTenantResponse + 12, // 29: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:output_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantResponse + 14, // 30: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:output_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantResponse + 16, // 31: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse + 18, // 32: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse + 20, // 33: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse + 25, // 34: kms.api.cmk.registry.tenant.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse + 27, // 35: kms.api.cmk.registry.tenant.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse + 25, // [25:36] is the sub-list for method output_type + 14, // [14:25] is the sub-list for method input_type + 14, // [14:14] is the sub-list for extension type_name + 14, // [14:14] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_kms_api_cmk_registry_tenant_v1_tenant_proto_init() } @@ -1487,13 +1853,14 @@ func file_kms_api_cmk_registry_tenant_v1_tenant_proto_init() { if File_kms_api_cmk_registry_tenant_v1_tenant_proto != nil { return } + file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc)), - NumEnums: 3, - NumMessages: 23, + NumEnums: 4, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto index aa4f6bf..3a63136 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto @@ -3,6 +3,7 @@ syntax = "proto3"; package kms.api.cmk.registry.tenant.v1; import "buf/validate/validate.proto"; +import "google/protobuf/field_mask.proto"; option go_package = "github.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1"; @@ -16,6 +17,8 @@ service Service { rpc SetTenantLabels(SetTenantLabelsRequest) returns (SetTenantLabelsResponse) {} rpc RemoveTenantLabels(RemoveTenantLabelsRequest) returns (RemoveTenantLabelsResponse) {} rpc SetTenantUserGroups(SetTenantUserGroupsRequest) returns (SetTenantUserGroupsResponse) {} + rpc GetTenantConfig(GetTenantConfigRequest) returns (GetTenantConfigResponse) {} + rpc UpdateTenantConfig(UpdateTenantConfigRequest) returns (UpdateTenantConfigResponse) {} } message Tenant { @@ -134,6 +137,39 @@ message GetTenantResponse { Tenant tenant = 1; } +// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. +message TenantConfiguration { + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + optional int32 system_limit = 1; + TenantConfigStatus status = 2; + string error_message = 3; + string updated_at = 4; +} + +message GetTenantConfigRequest { + string id = 1 [(buf.validate.field).string.min_len = 1]; +} + +message GetTenantConfigResponse { + TenantConfiguration config = 1; +} + +message UpdateTenantConfigRequest { + string id = 1 [(buf.validate.field).string.min_len = 1]; + // Configuration to update. + TenantConfiguration config = 2; + // Fields to update. Only paths listed here are applied. + // To clear a field back to default, include it in update_mask + // but leave it unset (or set to default value) in config. + google.protobuf.FieldMask update_mask = 3; +} + +message UpdateTenantConfigResponse { + // The updated configuration. + TenantConfiguration config = 1; +} + enum Status { STATUS_UNSPECIFIED = 0; STATUS_REQUESTED = 1; @@ -163,4 +199,12 @@ enum ACTION { ACTION_BLOCK_TENANT = 2; ACTION_UNBLOCK_TENANT = 3; ACTION_TERMINATE_TENANT = 4; + ACTION_UPDATE_TENANT_CONFIG = 5; +} + +enum TenantConfigStatus { + TENANT_CONFIG_STATUS_UNSPECIFIED = 0; + TENANT_CONFIG_STATUS_UPDATING = 1; + TENANT_CONFIG_STATUS_UPDATING_ERROR = 2; + TENANT_CONFIG_STATUS_ACTIVE = 3; } diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go index 4d3a6b3..0fad2e9 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.1 -// - protoc v7.35.1 +// - protoc-gen-go-grpc v1.6.2 +// - protoc v5.29.3 // source: kms/api/cmk/registry/tenant/v1/tenant.proto package tenantv1 @@ -28,6 +28,8 @@ const ( Service_SetTenantLabels_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/SetTenantLabels" Service_RemoveTenantLabels_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/RemoveTenantLabels" Service_SetTenantUserGroups_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/SetTenantUserGroups" + Service_GetTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/GetTenantConfig" + Service_UpdateTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/UpdateTenantConfig" ) // ServiceClient is the client API for Service service. @@ -43,6 +45,8 @@ type ServiceClient interface { SetTenantLabels(ctx context.Context, in *SetTenantLabelsRequest, opts ...grpc.CallOption) (*SetTenantLabelsResponse, error) RemoveTenantLabels(ctx context.Context, in *RemoveTenantLabelsRequest, opts ...grpc.CallOption) (*RemoveTenantLabelsResponse, error) SetTenantUserGroups(ctx context.Context, in *SetTenantUserGroupsRequest, opts ...grpc.CallOption) (*SetTenantUserGroupsResponse, error) + GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) + UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) } type serviceClient struct { @@ -143,6 +147,26 @@ func (c *serviceClient) SetTenantUserGroups(ctx context.Context, in *SetTenantUs return out, nil } +func (c *serviceClient) GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetTenantConfigResponse) + err := c.cc.Invoke(ctx, Service_GetTenantConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateTenantConfigResponse) + err := c.cc.Invoke(ctx, Service_UpdateTenantConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // ServiceServer is the server API for Service service. // All implementations must embed UnimplementedServiceServer // for forward compatibility. @@ -156,6 +180,8 @@ type ServiceServer interface { SetTenantLabels(context.Context, *SetTenantLabelsRequest) (*SetTenantLabelsResponse, error) RemoveTenantLabels(context.Context, *RemoveTenantLabelsRequest) (*RemoveTenantLabelsResponse, error) SetTenantUserGroups(context.Context, *SetTenantUserGroupsRequest) (*SetTenantUserGroupsResponse, error) + GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) + UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) mustEmbedUnimplementedServiceServer() } @@ -193,6 +219,12 @@ func (UnimplementedServiceServer) RemoveTenantLabels(context.Context, *RemoveTen func (UnimplementedServiceServer) SetTenantUserGroups(context.Context, *SetTenantUserGroupsRequest) (*SetTenantUserGroupsResponse, error) { return nil, status.Error(codes.Unimplemented, "method SetTenantUserGroups not implemented") } +func (UnimplementedServiceServer) GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetTenantConfig not implemented") +} +func (UnimplementedServiceServer) UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) { + return nil, status.Error(codes.Unimplemented, "method UpdateTenantConfig not implemented") +} func (UnimplementedServiceServer) mustEmbedUnimplementedServiceServer() {} func (UnimplementedServiceServer) testEmbeddedByValue() {} @@ -376,6 +408,42 @@ func _Service_SetTenantUserGroups_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } +func _Service_GetTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTenantConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetTenantConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Service_GetTenantConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetTenantConfig(ctx, req.(*GetTenantConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_UpdateTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateTenantConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).UpdateTenantConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Service_UpdateTenantConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).UpdateTenantConfig(ctx, req.(*UpdateTenantConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + // Service_ServiceDesc is the grpc.ServiceDesc for Service service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -419,6 +487,14 @@ var Service_ServiceDesc = grpc.ServiceDesc{ MethodName: "SetTenantUserGroups", Handler: _Service_SetTenantUserGroups_Handler, }, + { + MethodName: "GetTenantConfig", + Handler: _Service_GetTenantConfig_Handler, + }, + { + MethodName: "UpdateTenantConfig", + Handler: _Service_UpdateTenantConfig_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "kms/api/cmk/registry/tenant/v1/tenant.proto", From 18e2e6d5ea2c47bc013e9eeef50e82334aefa98c Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 13:21:32 +0200 Subject: [PATCH 02/13] rename Signed-off-by: Pawel Szelag --- .../api/cmk/eventprocessor/task/v1/task.pb.go | 44 +++++++++---------- .../api/cmk/eventprocessor/task/v1/task.proto | 2 +- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go index a43c72f..0fabe7e 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go @@ -24,15 +24,15 @@ const ( type TaskType int32 const ( - TaskType_KEY_ENABLE TaskType = 0 - TaskType_KEY_DISABLE TaskType = 1 - TaskType_KEY_DELETE TaskType = 2 - TaskType_KEY_ROTATE TaskType = 3 - TaskType_SYSTEM_LINK TaskType = 4 - TaskType_SYSTEM_UNLINK TaskType = 5 - TaskType_SYSTEM_SWITCH TaskType = 6 - TaskType_KEY_DETACH TaskType = 7 - TaskType_TENANT_RECONFIGURE TaskType = 8 + TaskType_KEY_ENABLE TaskType = 0 + TaskType_KEY_DISABLE TaskType = 1 + TaskType_KEY_DELETE TaskType = 2 + TaskType_KEY_ROTATE TaskType = 3 + TaskType_SYSTEM_LINK TaskType = 4 + TaskType_SYSTEM_UNLINK TaskType = 5 + TaskType_SYSTEM_SWITCH TaskType = 6 + TaskType_KEY_DETACH TaskType = 7 + TaskType_TENANT_CONFIG TaskType = 8 ) // Enum value maps for TaskType. @@ -46,18 +46,18 @@ var ( 5: "SYSTEM_UNLINK", 6: "SYSTEM_SWITCH", 7: "KEY_DETACH", - 8: "TENANT_RECONFIGURE", + 8: "TENANT_CONFIG", } TaskType_value = map[string]int32{ - "KEY_ENABLE": 0, - "KEY_DISABLE": 1, - "KEY_DELETE": 2, - "KEY_ROTATE": 3, - "SYSTEM_LINK": 4, - "SYSTEM_UNLINK": 5, - "SYSTEM_SWITCH": 6, - "KEY_DETACH": 7, - "TENANT_RECONFIGURE": 8, + "KEY_ENABLE": 0, + "KEY_DISABLE": 1, + "KEY_DELETE": 2, + "KEY_ROTATE": 3, + "SYSTEM_LINK": 4, + "SYSTEM_UNLINK": 5, + "SYSTEM_SWITCH": 6, + "KEY_DETACH": 7, + "TENANT_CONFIG": 8, } ) @@ -462,7 +462,7 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "cmk_region\x18< \x01(\tR\tcmkRegion\"1\n" + "\x12TenantConfigAction\x12\x1b\n" + "\ttenant_id\x18\n" + - " \x01(\tR\btenantId*\xaa\x01\n" + + " \x01(\tR\btenantId*\xa5\x01\n" + "\bTaskType\x12\x0e\n" + "\n" + "KEY_ENABLE\x10\x00\x12\x0f\n" + @@ -475,8 +475,8 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\rSYSTEM_UNLINK\x10\x05\x12\x11\n" + "\rSYSTEM_SWITCH\x10\x06\x12\x0e\n" + "\n" + - "KEY_DETACH\x10\a\x12\x16\n" + - "\x12TENANT_RECONFIGURE\x10\bBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" + "KEY_DETACH\x10\a\x12\x11\n" + + "\rTENANT_CONFIG\x10\bBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" var ( file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescOnce sync.Once diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto index 6d6364e..9f8ba1d 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto @@ -13,7 +13,7 @@ enum TaskType { SYSTEM_UNLINK = 5; SYSTEM_SWITCH = 6; KEY_DETACH = 7; - TENANT_RECONFIGURE = 8; + TENANT_CONFIG = 8; } // Wrapped proto for Orbital TaskRequest.data From 375b143e88c5ab557ef1f3a2ccc4eb920c2ccca5 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 13:43:29 +0200 Subject: [PATCH 03/13] move tenant config to its own proto Signed-off-by: Pawel Szelag --- .../api/cmk/registry/tenant/v1/tenant.pb.go | 483 +++--------------- .../api/cmk/registry/tenant/v1/tenant.proto | 43 -- .../cmk/registry/tenant/v1/tenant_grpc.pb.go | 76 --- .../tenant_config/v1/tenant_config.pb.go | 442 ++++++++++++++++ .../tenant_config/v1/tenant_config.proto | 53 ++ .../tenant_config/v1/tenant_config_grpc.pb.go | 159 ++++++ 6 files changed, 714 insertions(+), 542 deletions(-) create mode 100644 proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go create mode 100644 proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto create mode 100644 proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go index 1843387..652b5f1 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go @@ -10,7 +10,6 @@ import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" - fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" reflect "reflect" sync "sync" unsafe "unsafe" @@ -212,58 +211,6 @@ func (ACTION) EnumDescriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{2} } -type TenantConfigStatus int32 - -const ( - TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED TenantConfigStatus = 0 - TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING TenantConfigStatus = 1 - TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING_ERROR TenantConfigStatus = 2 - TenantConfigStatus_TENANT_CONFIG_STATUS_ACTIVE TenantConfigStatus = 3 -) - -// Enum value maps for TenantConfigStatus. -var ( - TenantConfigStatus_name = map[int32]string{ - 0: "TENANT_CONFIG_STATUS_UNSPECIFIED", - 1: "TENANT_CONFIG_STATUS_UPDATING", - 2: "TENANT_CONFIG_STATUS_UPDATING_ERROR", - 3: "TENANT_CONFIG_STATUS_ACTIVE", - } - TenantConfigStatus_value = map[string]int32{ - "TENANT_CONFIG_STATUS_UNSPECIFIED": 0, - "TENANT_CONFIG_STATUS_UPDATING": 1, - "TENANT_CONFIG_STATUS_UPDATING_ERROR": 2, - "TENANT_CONFIG_STATUS_ACTIVE": 3, - } -) - -func (x TenantConfigStatus) Enum() *TenantConfigStatus { - p := new(TenantConfigStatus) - *p = x - return p -} - -func (x TenantConfigStatus) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (TenantConfigStatus) Descriptor() protoreflect.EnumDescriptor { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes[3].Descriptor() -} - -func (TenantConfigStatus) Type() protoreflect.EnumType { - return &file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes[3] -} - -func (x TenantConfigStatus) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use TenantConfigStatus.Descriptor instead. -func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{3} -} - type Tenant struct { state protoimpl.MessageState `protogen:"open.v1"` Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` @@ -1330,279 +1277,11 @@ func (x *GetTenantResponse) GetTenant() *Tenant { return nil } -// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. -type TenantConfiguration struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Maximum number of systems allowed per key configuration. - // Default: system default (global limit). - SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` - Status TenantConfigStatus `protobuf:"varint,2,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant.v1.TenantConfigStatus" json:"status,omitempty"` - ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - UpdatedAt string `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantConfiguration) Reset() { - *x = TenantConfiguration{} - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantConfiguration) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantConfiguration) ProtoMessage() {} - -func (x *TenantConfiguration) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantConfiguration.ProtoReflect.Descriptor instead. -func (*TenantConfiguration) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{19} -} - -func (x *TenantConfiguration) GetSystemLimit() int32 { - if x != nil && x.SystemLimit != nil { - return *x.SystemLimit - } - return 0 -} - -func (x *TenantConfiguration) GetStatus() TenantConfigStatus { - if x != nil { - return x.Status - } - return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED -} - -func (x *TenantConfiguration) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *TenantConfiguration) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - -type GetTenantConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTenantConfigRequest) Reset() { - *x = GetTenantConfigRequest{} - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTenantConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTenantConfigRequest) ProtoMessage() {} - -func (x *GetTenantConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[20] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTenantConfigRequest.ProtoReflect.Descriptor instead. -func (*GetTenantConfigRequest) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{20} -} - -func (x *GetTenantConfigRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -type GetTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *GetTenantConfigResponse) Reset() { - *x = GetTenantConfigResponse{} - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *GetTenantConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetTenantConfigResponse) ProtoMessage() {} - -func (x *GetTenantConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[21] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetTenantConfigResponse.ProtoReflect.Descriptor instead. -func (*GetTenantConfigResponse) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{21} -} - -func (x *GetTenantConfigResponse) GetConfig() *TenantConfiguration { - if x != nil { - return x.Config - } - return nil -} - -type UpdateTenantConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Configuration to update. - Config *TenantConfiguration `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // Fields to update. Only paths listed here are applied. - // To clear a field back to default, include it in update_mask - // but leave it unset (or set to default value) in config. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateTenantConfigRequest) Reset() { - *x = UpdateTenantConfigRequest{} - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateTenantConfigRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateTenantConfigRequest) ProtoMessage() {} - -func (x *UpdateTenantConfigRequest) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[22] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateTenantConfigRequest.ProtoReflect.Descriptor instead. -func (*UpdateTenantConfigRequest) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{22} -} - -func (x *UpdateTenantConfigRequest) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *UpdateTenantConfigRequest) GetConfig() *TenantConfiguration { - if x != nil { - return x.Config - } - return nil -} - -func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { - if x != nil { - return x.UpdateMask - } - return nil -} - -type UpdateTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The updated configuration. - Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *UpdateTenantConfigResponse) Reset() { - *x = UpdateTenantConfigResponse{} - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *UpdateTenantConfigResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UpdateTenantConfigResponse) ProtoMessage() {} - -func (x *UpdateTenantConfigResponse) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[23] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use UpdateTenantConfigResponse.ProtoReflect.Descriptor instead. -func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP(), []int{23} -} - -func (x *UpdateTenantConfigResponse) GetConfig() *TenantConfiguration { - if x != nil { - return x.Config - } - return nil -} - var File_kms_api_cmk_registry_tenant_v1_tenant_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\n" + - "+kms/api/cmk/registry/tenant/v1/tenant.proto\x12\x1ekms.api.cmk.registry.tenant.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"\x8a\x04\n" + + "+kms/api/cmk/registry/tenant/v1/tenant.proto\x12\x1ekms.api.cmk.registry.tenant.v1\x1a\x1bbuf/validate/validate.proto\"\x8a\x04\n" + "\x06Tenant\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" + "\x04name\x18\x02 \x01(\tR\x04name\x12\x16\n" + @@ -1690,25 +1369,7 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\x10GetTenantRequest\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\"S\n" + "\x11GetTenantResponse\x12>\n" + - "\x06tenant\x18\x01 \x01(\v2&.kms.api.cmk.registry.tenant.v1.TenantR\x06tenant\"\xde\x01\n" + - "\x13TenantConfiguration\x12&\n" + - "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01\x12J\n" + - "\x06status\x18\x02 \x01(\x0e22.kms.api.cmk.registry.tenant.v1.TenantConfigStatusR\x06status\x12#\n" + - "\rerror_message\x18\x03 \x01(\tR\ferrorMessage\x12\x1d\n" + - "\n" + - "updated_at\x18\x04 \x01(\tR\tupdatedAtB\x0f\n" + - "\r_system_limit\"1\n" + - "\x16GetTenantConfigRequest\x12\x17\n" + - "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\"f\n" + - "\x17GetTenantConfigResponse\x12K\n" + - "\x06config\x18\x01 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config\"\xbe\x01\n" + - "\x19UpdateTenantConfigRequest\x12\x17\n" + - "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\x12K\n" + - "\x06config\x18\x02 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config\x12;\n" + - "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + - "updateMask\"i\n" + - "\x1aUpdateTenantConfigResponse\x12K\n" + - "\x06config\x18\x01 \x01(\v23.kms.api.cmk.registry.tenant.v1.TenantConfigurationR\x06config*\xc6\x02\n" + + "\x06tenant\x18\x01 \x01(\v2&.kms.api.cmk.registry.tenant.v1.TenantR\x06tenant*\xc6\x02\n" + "\x06Status\x12\x16\n" + "\x12STATUS_UNSPECIFIED\x10\x00\x12\x14\n" + "\x10STATUS_REQUESTED\x10\x01\x12\x17\n" + @@ -1736,12 +1397,7 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\x13ACTION_BLOCK_TENANT\x10\x02\x12\x19\n" + "\x15ACTION_UNBLOCK_TENANT\x10\x03\x12\x1b\n" + "\x17ACTION_TERMINATE_TENANT\x10\x04\x12\x1f\n" + - "\x1bACTION_UPDATE_TENANT_CONFIG\x10\x05*\xa7\x01\n" + - "\x12TenantConfigStatus\x12$\n" + - " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + - "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + - "#TENANT_CONFIG_STATUS_UPDATING_ERROR\x10\x02\x12\x1f\n" + - "\x1bTENANT_CONFIG_STATUS_ACTIVE\x10\x032\xbd\v\n" + + "\x1bACTION_UPDATE_TENANT_CONFIG\x10\x052\xa6\t\n" + "\aService\x12\x81\x01\n" + "\x0eRegisterTenant\x125.kms.api.cmk.registry.tenant.v1.RegisterTenantRequest\x1a6.kms.api.cmk.registry.tenant.v1.RegisterTenantResponse\"\x00\x12x\n" + "\vListTenants\x122.kms.api.cmk.registry.tenant.v1.ListTenantsRequest\x1a3.kms.api.cmk.registry.tenant.v1.ListTenantsResponse\"\x00\x12r\n" + @@ -1751,9 +1407,7 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\x0fTerminateTenant\x126.kms.api.cmk.registry.tenant.v1.TerminateTenantRequest\x1a7.kms.api.cmk.registry.tenant.v1.TerminateTenantResponse\"\x00\x12\x84\x01\n" + "\x0fSetTenantLabels\x126.kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest\x1a7.kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse\"\x00\x12\x8d\x01\n" + "\x12RemoveTenantLabels\x129.kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest\x1a:.kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse\"\x00\x12\x90\x01\n" + - "\x13SetTenantUserGroups\x12:.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest\x1a;.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse\"\x00\x12\x84\x01\n" + - "\x0fGetTenantConfig\x126.kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest\x1a7.kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse\"\x00\x12\x8d\x01\n" + - "\x12UpdateTenantConfig\x129.kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest\x1a:.kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse\"\x00BJZHgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1b\x06proto3" + "\x13SetTenantUserGroups\x12:.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest\x1a;.kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse\"\x00BJZHgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1b\x06proto3" var ( file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescOnce sync.Once @@ -1767,85 +1421,69 @@ func file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescGZIP() []byte { return file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDescData } -var file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 28) +var file_kms_api_cmk_registry_tenant_v1_tenant_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_kms_api_cmk_registry_tenant_v1_tenant_proto_goTypes = []any{ (Status)(0), // 0: kms.api.cmk.registry.tenant.v1.Status (Role)(0), // 1: kms.api.cmk.registry.tenant.v1.Role (ACTION)(0), // 2: kms.api.cmk.registry.tenant.v1.ACTION - (TenantConfigStatus)(0), // 3: kms.api.cmk.registry.tenant.v1.TenantConfigStatus - (*Tenant)(nil), // 4: kms.api.cmk.registry.tenant.v1.Tenant - (*RegisterTenantRequest)(nil), // 5: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest - (*RegisterTenantResponse)(nil), // 6: kms.api.cmk.registry.tenant.v1.RegisterTenantResponse - (*ListTenantsRequest)(nil), // 7: kms.api.cmk.registry.tenant.v1.ListTenantsRequest - (*ListTenantsResponse)(nil), // 8: kms.api.cmk.registry.tenant.v1.ListTenantsResponse - (*BlockTenantRequest)(nil), // 9: kms.api.cmk.registry.tenant.v1.BlockTenantRequest - (*BlockTenantResponse)(nil), // 10: kms.api.cmk.registry.tenant.v1.BlockTenantResponse - (*UnblockTenantRequest)(nil), // 11: kms.api.cmk.registry.tenant.v1.UnblockTenantRequest - (*UnblockTenantResponse)(nil), // 12: kms.api.cmk.registry.tenant.v1.UnblockTenantResponse - (*TerminateTenantRequest)(nil), // 13: kms.api.cmk.registry.tenant.v1.TerminateTenantRequest - (*TerminateTenantResponse)(nil), // 14: kms.api.cmk.registry.tenant.v1.TerminateTenantResponse - (*SetTenantLabelsRequest)(nil), // 15: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest - (*SetTenantLabelsResponse)(nil), // 16: kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse - (*RemoveTenantLabelsRequest)(nil), // 17: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest - (*RemoveTenantLabelsResponse)(nil), // 18: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse - (*SetTenantUserGroupsRequest)(nil), // 19: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest - (*SetTenantUserGroupsResponse)(nil), // 20: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse - (*GetTenantRequest)(nil), // 21: kms.api.cmk.registry.tenant.v1.GetTenantRequest - (*GetTenantResponse)(nil), // 22: kms.api.cmk.registry.tenant.v1.GetTenantResponse - (*TenantConfiguration)(nil), // 23: kms.api.cmk.registry.tenant.v1.TenantConfiguration - (*GetTenantConfigRequest)(nil), // 24: kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest - (*GetTenantConfigResponse)(nil), // 25: kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse - (*UpdateTenantConfigRequest)(nil), // 26: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest - (*UpdateTenantConfigResponse)(nil), // 27: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse - nil, // 28: kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry - nil, // 29: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry - nil, // 30: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry - nil, // 31: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry - (*fieldmaskpb.FieldMask)(nil), // 32: google.protobuf.FieldMask + (*Tenant)(nil), // 3: kms.api.cmk.registry.tenant.v1.Tenant + (*RegisterTenantRequest)(nil), // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest + (*RegisterTenantResponse)(nil), // 5: kms.api.cmk.registry.tenant.v1.RegisterTenantResponse + (*ListTenantsRequest)(nil), // 6: kms.api.cmk.registry.tenant.v1.ListTenantsRequest + (*ListTenantsResponse)(nil), // 7: kms.api.cmk.registry.tenant.v1.ListTenantsResponse + (*BlockTenantRequest)(nil), // 8: kms.api.cmk.registry.tenant.v1.BlockTenantRequest + (*BlockTenantResponse)(nil), // 9: kms.api.cmk.registry.tenant.v1.BlockTenantResponse + (*UnblockTenantRequest)(nil), // 10: kms.api.cmk.registry.tenant.v1.UnblockTenantRequest + (*UnblockTenantResponse)(nil), // 11: kms.api.cmk.registry.tenant.v1.UnblockTenantResponse + (*TerminateTenantRequest)(nil), // 12: kms.api.cmk.registry.tenant.v1.TerminateTenantRequest + (*TerminateTenantResponse)(nil), // 13: kms.api.cmk.registry.tenant.v1.TerminateTenantResponse + (*SetTenantLabelsRequest)(nil), // 14: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest + (*SetTenantLabelsResponse)(nil), // 15: kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse + (*RemoveTenantLabelsRequest)(nil), // 16: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest + (*RemoveTenantLabelsResponse)(nil), // 17: kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse + (*SetTenantUserGroupsRequest)(nil), // 18: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest + (*SetTenantUserGroupsResponse)(nil), // 19: kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse + (*GetTenantRequest)(nil), // 20: kms.api.cmk.registry.tenant.v1.GetTenantRequest + (*GetTenantResponse)(nil), // 21: kms.api.cmk.registry.tenant.v1.GetTenantResponse + nil, // 22: kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry + nil, // 23: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry + nil, // 24: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry + nil, // 25: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry } var file_kms_api_cmk_registry_tenant_v1_tenant_proto_depIdxs = []int32{ 0, // 0: kms.api.cmk.registry.tenant.v1.Tenant.status:type_name -> kms.api.cmk.registry.tenant.v1.Status 1, // 1: kms.api.cmk.registry.tenant.v1.Tenant.role:type_name -> kms.api.cmk.registry.tenant.v1.Role - 28, // 2: kms.api.cmk.registry.tenant.v1.Tenant.labels:type_name -> kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry + 22, // 2: kms.api.cmk.registry.tenant.v1.Tenant.labels:type_name -> kms.api.cmk.registry.tenant.v1.Tenant.LabelsEntry 1, // 3: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.role:type_name -> kms.api.cmk.registry.tenant.v1.Role - 29, // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry - 30, // 5: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry - 4, // 6: kms.api.cmk.registry.tenant.v1.ListTenantsResponse.tenants:type_name -> kms.api.cmk.registry.tenant.v1.Tenant - 31, // 7: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry - 4, // 8: kms.api.cmk.registry.tenant.v1.GetTenantResponse.tenant:type_name -> kms.api.cmk.registry.tenant.v1.Tenant - 3, // 9: kms.api.cmk.registry.tenant.v1.TenantConfiguration.status:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfigStatus - 23, // 10: kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration - 23, // 11: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration - 32, // 12: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 23, // 13: kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant.v1.TenantConfiguration - 5, // 14: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:input_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest - 7, // 15: kms.api.cmk.registry.tenant.v1.Service.ListTenants:input_type -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest - 21, // 16: kms.api.cmk.registry.tenant.v1.Service.GetTenant:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantRequest - 9, // 17: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:input_type -> kms.api.cmk.registry.tenant.v1.BlockTenantRequest - 11, // 18: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:input_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantRequest - 13, // 19: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:input_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantRequest - 15, // 20: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest - 17, // 21: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest - 19, // 22: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest - 24, // 23: kms.api.cmk.registry.tenant.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantConfigRequest - 26, // 24: kms.api.cmk.registry.tenant.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant.v1.UpdateTenantConfigRequest - 6, // 25: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:output_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantResponse - 8, // 26: kms.api.cmk.registry.tenant.v1.Service.ListTenants:output_type -> kms.api.cmk.registry.tenant.v1.ListTenantsResponse - 22, // 27: kms.api.cmk.registry.tenant.v1.Service.GetTenant:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantResponse - 10, // 28: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:output_type -> kms.api.cmk.registry.tenant.v1.BlockTenantResponse - 12, // 29: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:output_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantResponse - 14, // 30: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:output_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantResponse - 16, // 31: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse - 18, // 32: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse - 20, // 33: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse - 25, // 34: kms.api.cmk.registry.tenant.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantConfigResponse - 27, // 35: kms.api.cmk.registry.tenant.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant.v1.UpdateTenantConfigResponse - 25, // [25:36] is the sub-list for method output_type - 14, // [14:25] is the sub-list for method input_type - 14, // [14:14] is the sub-list for extension type_name - 14, // [14:14] is the sub-list for extension extendee - 0, // [0:14] is the sub-list for field type_name + 23, // 4: kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest.LabelsEntry + 24, // 5: kms.api.cmk.registry.tenant.v1.ListTenantsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest.LabelsEntry + 3, // 6: kms.api.cmk.registry.tenant.v1.ListTenantsResponse.tenants:type_name -> kms.api.cmk.registry.tenant.v1.Tenant + 25, // 7: kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.labels:type_name -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest.LabelsEntry + 3, // 8: kms.api.cmk.registry.tenant.v1.GetTenantResponse.tenant:type_name -> kms.api.cmk.registry.tenant.v1.Tenant + 4, // 9: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:input_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantRequest + 6, // 10: kms.api.cmk.registry.tenant.v1.Service.ListTenants:input_type -> kms.api.cmk.registry.tenant.v1.ListTenantsRequest + 20, // 11: kms.api.cmk.registry.tenant.v1.Service.GetTenant:input_type -> kms.api.cmk.registry.tenant.v1.GetTenantRequest + 8, // 12: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:input_type -> kms.api.cmk.registry.tenant.v1.BlockTenantRequest + 10, // 13: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:input_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantRequest + 12, // 14: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:input_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantRequest + 14, // 15: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsRequest + 16, // 16: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:input_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsRequest + 18, // 17: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:input_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsRequest + 5, // 18: kms.api.cmk.registry.tenant.v1.Service.RegisterTenant:output_type -> kms.api.cmk.registry.tenant.v1.RegisterTenantResponse + 7, // 19: kms.api.cmk.registry.tenant.v1.Service.ListTenants:output_type -> kms.api.cmk.registry.tenant.v1.ListTenantsResponse + 21, // 20: kms.api.cmk.registry.tenant.v1.Service.GetTenant:output_type -> kms.api.cmk.registry.tenant.v1.GetTenantResponse + 9, // 21: kms.api.cmk.registry.tenant.v1.Service.BlockTenant:output_type -> kms.api.cmk.registry.tenant.v1.BlockTenantResponse + 11, // 22: kms.api.cmk.registry.tenant.v1.Service.UnblockTenant:output_type -> kms.api.cmk.registry.tenant.v1.UnblockTenantResponse + 13, // 23: kms.api.cmk.registry.tenant.v1.Service.TerminateTenant:output_type -> kms.api.cmk.registry.tenant.v1.TerminateTenantResponse + 15, // 24: kms.api.cmk.registry.tenant.v1.Service.SetTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantLabelsResponse + 17, // 25: kms.api.cmk.registry.tenant.v1.Service.RemoveTenantLabels:output_type -> kms.api.cmk.registry.tenant.v1.RemoveTenantLabelsResponse + 19, // 26: kms.api.cmk.registry.tenant.v1.Service.SetTenantUserGroups:output_type -> kms.api.cmk.registry.tenant.v1.SetTenantUserGroupsResponse + 18, // [18:27] is the sub-list for method output_type + 9, // [9:18] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_kms_api_cmk_registry_tenant_v1_tenant_proto_init() } @@ -1853,14 +1491,13 @@ func file_kms_api_cmk_registry_tenant_v1_tenant_proto_init() { if File_kms_api_cmk_registry_tenant_v1_tenant_proto != nil { return } - file_kms_api_cmk_registry_tenant_v1_tenant_proto_msgTypes[19].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc)), - NumEnums: 4, - NumMessages: 28, + NumEnums: 3, + NumMessages: 23, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto index 3a63136..b8d5422 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto @@ -3,7 +3,6 @@ syntax = "proto3"; package kms.api.cmk.registry.tenant.v1; import "buf/validate/validate.proto"; -import "google/protobuf/field_mask.proto"; option go_package = "github.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant/v1;tenantv1"; @@ -17,8 +16,6 @@ service Service { rpc SetTenantLabels(SetTenantLabelsRequest) returns (SetTenantLabelsResponse) {} rpc RemoveTenantLabels(RemoveTenantLabelsRequest) returns (RemoveTenantLabelsResponse) {} rpc SetTenantUserGroups(SetTenantUserGroupsRequest) returns (SetTenantUserGroupsResponse) {} - rpc GetTenantConfig(GetTenantConfigRequest) returns (GetTenantConfigResponse) {} - rpc UpdateTenantConfig(UpdateTenantConfigRequest) returns (UpdateTenantConfigResponse) {} } message Tenant { @@ -137,39 +134,6 @@ message GetTenantResponse { Tenant tenant = 1; } -// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. -message TenantConfiguration { - // Maximum number of systems allowed per key configuration. - // Default: system default (global limit). - optional int32 system_limit = 1; - TenantConfigStatus status = 2; - string error_message = 3; - string updated_at = 4; -} - -message GetTenantConfigRequest { - string id = 1 [(buf.validate.field).string.min_len = 1]; -} - -message GetTenantConfigResponse { - TenantConfiguration config = 1; -} - -message UpdateTenantConfigRequest { - string id = 1 [(buf.validate.field).string.min_len = 1]; - // Configuration to update. - TenantConfiguration config = 2; - // Fields to update. Only paths listed here are applied. - // To clear a field back to default, include it in update_mask - // but leave it unset (or set to default value) in config. - google.protobuf.FieldMask update_mask = 3; -} - -message UpdateTenantConfigResponse { - // The updated configuration. - TenantConfiguration config = 1; -} - enum Status { STATUS_UNSPECIFIED = 0; STATUS_REQUESTED = 1; @@ -201,10 +165,3 @@ enum ACTION { ACTION_TERMINATE_TENANT = 4; ACTION_UPDATE_TENANT_CONFIG = 5; } - -enum TenantConfigStatus { - TENANT_CONFIG_STATUS_UNSPECIFIED = 0; - TENANT_CONFIG_STATUS_UPDATING = 1; - TENANT_CONFIG_STATUS_UPDATING_ERROR = 2; - TENANT_CONFIG_STATUS_ACTIVE = 3; -} diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go index 0fad2e9..b374ac3 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go @@ -28,8 +28,6 @@ const ( Service_SetTenantLabels_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/SetTenantLabels" Service_RemoveTenantLabels_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/RemoveTenantLabels" Service_SetTenantUserGroups_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/SetTenantUserGroups" - Service_GetTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/GetTenantConfig" - Service_UpdateTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant.v1.Service/UpdateTenantConfig" ) // ServiceClient is the client API for Service service. @@ -45,8 +43,6 @@ type ServiceClient interface { SetTenantLabels(ctx context.Context, in *SetTenantLabelsRequest, opts ...grpc.CallOption) (*SetTenantLabelsResponse, error) RemoveTenantLabels(ctx context.Context, in *RemoveTenantLabelsRequest, opts ...grpc.CallOption) (*RemoveTenantLabelsResponse, error) SetTenantUserGroups(ctx context.Context, in *SetTenantUserGroupsRequest, opts ...grpc.CallOption) (*SetTenantUserGroupsResponse, error) - GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) - UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) } type serviceClient struct { @@ -147,26 +143,6 @@ func (c *serviceClient) SetTenantUserGroups(ctx context.Context, in *SetTenantUs return out, nil } -func (c *serviceClient) GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(GetTenantConfigResponse) - err := c.cc.Invoke(ctx, Service_GetTenantConfig_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *serviceClient) UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) { - cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(UpdateTenantConfigResponse) - err := c.cc.Invoke(ctx, Service_UpdateTenantConfig_FullMethodName, in, out, cOpts...) - if err != nil { - return nil, err - } - return out, nil -} - // ServiceServer is the server API for Service service. // All implementations must embed UnimplementedServiceServer // for forward compatibility. @@ -180,8 +156,6 @@ type ServiceServer interface { SetTenantLabels(context.Context, *SetTenantLabelsRequest) (*SetTenantLabelsResponse, error) RemoveTenantLabels(context.Context, *RemoveTenantLabelsRequest) (*RemoveTenantLabelsResponse, error) SetTenantUserGroups(context.Context, *SetTenantUserGroupsRequest) (*SetTenantUserGroupsResponse, error) - GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) - UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) mustEmbedUnimplementedServiceServer() } @@ -219,12 +193,6 @@ func (UnimplementedServiceServer) RemoveTenantLabels(context.Context, *RemoveTen func (UnimplementedServiceServer) SetTenantUserGroups(context.Context, *SetTenantUserGroupsRequest) (*SetTenantUserGroupsResponse, error) { return nil, status.Error(codes.Unimplemented, "method SetTenantUserGroups not implemented") } -func (UnimplementedServiceServer) GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) { - return nil, status.Error(codes.Unimplemented, "method GetTenantConfig not implemented") -} -func (UnimplementedServiceServer) UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) { - return nil, status.Error(codes.Unimplemented, "method UpdateTenantConfig not implemented") -} func (UnimplementedServiceServer) mustEmbedUnimplementedServiceServer() {} func (UnimplementedServiceServer) testEmbeddedByValue() {} @@ -408,42 +376,6 @@ func _Service_SetTenantUserGroups_Handler(srv interface{}, ctx context.Context, return interceptor(ctx, in, info, handler) } -func _Service_GetTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetTenantConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceServer).GetTenantConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Service_GetTenantConfig_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceServer).GetTenantConfig(ctx, req.(*GetTenantConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Service_UpdateTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(UpdateTenantConfigRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ServiceServer).UpdateTenantConfig(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: Service_UpdateTenantConfig_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ServiceServer).UpdateTenantConfig(ctx, req.(*UpdateTenantConfigRequest)) - } - return interceptor(ctx, in, info, handler) -} - // Service_ServiceDesc is the grpc.ServiceDesc for Service service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -487,14 +419,6 @@ var Service_ServiceDesc = grpc.ServiceDesc{ MethodName: "SetTenantUserGroups", Handler: _Service_SetTenantUserGroups_Handler, }, - { - MethodName: "GetTenantConfig", - Handler: _Service_GetTenantConfig_Handler, - }, - { - MethodName: "UpdateTenantConfig", - Handler: _Service_UpdateTenantConfig_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "kms/api/cmk/registry/tenant/v1/tenant.proto", diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go new file mode 100644 index 0000000..95c3c67 --- /dev/null +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -0,0 +1,442 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.12 +// protoc v5.29.3 +// source: kms/api/cmk/registry/tenant_config/v1/tenant_config.proto + +package tenantconfigv1 + +import ( + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type TenantConfigStatus int32 + +const ( + TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED TenantConfigStatus = 0 + TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING TenantConfigStatus = 1 + TenantConfigStatus_TENANT_CONFIG_STATUS_UPDATING_ERROR TenantConfigStatus = 2 + TenantConfigStatus_TENANT_CONFIG_STATUS_ACTIVE TenantConfigStatus = 3 +) + +// Enum value maps for TenantConfigStatus. +var ( + TenantConfigStatus_name = map[int32]string{ + 0: "TENANT_CONFIG_STATUS_UNSPECIFIED", + 1: "TENANT_CONFIG_STATUS_UPDATING", + 2: "TENANT_CONFIG_STATUS_UPDATING_ERROR", + 3: "TENANT_CONFIG_STATUS_ACTIVE", + } + TenantConfigStatus_value = map[string]int32{ + "TENANT_CONFIG_STATUS_UNSPECIFIED": 0, + "TENANT_CONFIG_STATUS_UPDATING": 1, + "TENANT_CONFIG_STATUS_UPDATING_ERROR": 2, + "TENANT_CONFIG_STATUS_ACTIVE": 3, + } +) + +func (x TenantConfigStatus) Enum() *TenantConfigStatus { + p := new(TenantConfigStatus) + *p = x + return p +} + +func (x TenantConfigStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TenantConfigStatus) Descriptor() protoreflect.EnumDescriptor { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes[0].Descriptor() +} + +func (TenantConfigStatus) Type() protoreflect.EnumType { + return &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes[0] +} + +func (x TenantConfigStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TenantConfigStatus.Descriptor instead. +func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} +} + +// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. +type TenantConfiguration struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` + Status TenantConfigStatus `protobuf:"varint,2,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` + ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + UpdatedAt string `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TenantConfiguration) Reset() { + *x = TenantConfiguration{} + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TenantConfiguration) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TenantConfiguration) ProtoMessage() {} + +func (x *TenantConfiguration) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TenantConfiguration.ProtoReflect.Descriptor instead. +func (*TenantConfiguration) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} +} + +func (x *TenantConfiguration) GetSystemLimit() int32 { + if x != nil && x.SystemLimit != nil { + return *x.SystemLimit + } + return 0 +} + +func (x *TenantConfiguration) GetStatus() TenantConfigStatus { + if x != nil { + return x.Status + } + return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED +} + +func (x *TenantConfiguration) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *TenantConfiguration) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + +type GetTenantConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantConfigRequest) Reset() { + *x = GetTenantConfigRequest{} + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantConfigRequest) ProtoMessage() {} + +func (x *GetTenantConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantConfigRequest.ProtoReflect.Descriptor instead. +func (*GetTenantConfigRequest) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} +} + +func (x *GetTenantConfigRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type GetTenantConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetTenantConfigResponse) Reset() { + *x = GetTenantConfigResponse{} + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetTenantConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTenantConfigResponse) ProtoMessage() {} + +func (x *GetTenantConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTenantConfigResponse.ProtoReflect.Descriptor instead. +func (*GetTenantConfigResponse) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{2} +} + +func (x *GetTenantConfigResponse) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + +type UpdateTenantConfigRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Configuration to update. + Config *TenantConfiguration `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + // Fields to update. Only paths listed here are applied. + // To clear a field back to default, include it in update_mask + // but leave it unset (or set to default value) in config. + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateTenantConfigRequest) Reset() { + *x = UpdateTenantConfigRequest{} + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateTenantConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTenantConfigRequest) ProtoMessage() {} + +func (x *UpdateTenantConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateTenantConfigRequest.ProtoReflect.Descriptor instead. +func (*UpdateTenantConfigRequest) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{3} +} + +func (x *UpdateTenantConfigRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateTenantConfigRequest) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + +func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +type UpdateTenantConfigResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The updated configuration. + Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *UpdateTenantConfigResponse) Reset() { + *x = UpdateTenantConfigResponse{} + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *UpdateTenantConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateTenantConfigResponse) ProtoMessage() {} + +func (x *UpdateTenantConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateTenantConfigResponse.ProtoReflect.Descriptor instead. +func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{4} +} + +func (x *UpdateTenantConfigResponse) GetConfig() *TenantConfiguration { + if x != nil { + return x.Config + } + return nil +} + +var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect.FileDescriptor + +const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + + "\n" + + "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"\xe5\x01\n" + + "\x13TenantConfiguration\x12&\n" + + "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01\x12Q\n" + + "\x06status\x18\x02 \x01(\x0e29.kms.api.cmk.registry.tenant_config.v1.TenantConfigStatusR\x06status\x12#\n" + + "\rerror_message\x18\x03 \x01(\tR\ferrorMessage\x12\x1d\n" + + "\n" + + "updated_at\x18\x04 \x01(\tR\tupdatedAtB\x0f\n" + + "\r_system_limit\"1\n" + + "\x16GetTenantConfigRequest\x12\x17\n" + + "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\"m\n" + + "\x17GetTenantConfigResponse\x12R\n" + + "\x06config\x18\x01 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config\"\xc5\x01\n" + + "\x19UpdateTenantConfigRequest\x12\x17\n" + + "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\x12R\n" + + "\x06config\x18\x02 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config\x12;\n" + + "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + + "updateMask\"p\n" + + "\x1aUpdateTenantConfigResponse\x12R\n" + + "\x06config\x18\x01 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config*\xa7\x01\n" + + "\x12TenantConfigStatus\x12$\n" + + " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + + "#TENANT_CONFIG_STATUS_UPDATING_ERROR\x10\x02\x12\x1f\n" + + "\x1bTENANT_CONFIG_STATUS_ACTIVE\x10\x032\xbc\x02\n" + + "\aService\x12\x92\x01\n" + + "\x0fGetTenantConfig\x12=.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest\x1a>.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse\"\x00\x12\x9b\x01\n" + + "\x12UpdateTenantConfig\x12@.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest\x1aA.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse\"\x00BWZUgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1b\x06proto3" + +var ( + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescOnce sync.Once + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData []byte +) + +func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP() []byte { + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescOnce.Do(func() { + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc))) + }) + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData +} + +var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5) +var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes = []any{ + (TenantConfigStatus)(0), // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus + (*TenantConfiguration)(nil), // 1: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + (*GetTenantConfigRequest)(nil), // 2: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + (*GetTenantConfigResponse)(nil), // 3: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + (*UpdateTenantConfigRequest)(nil), // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + (*UpdateTenantConfigResponse)(nil), // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + (*fieldmaskpb.FieldMask)(nil), // 6: google.protobuf.FieldMask +} +var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = []int32{ + 0, // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus + 1, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 1, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 6, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask + 1, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 2, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + 4, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + 3, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + 5, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + 7, // [7:9] is the sub-list for method output_type + 5, // [5:7] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name +} + +func init() { file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() } +func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() { + if File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto != nil { + return + } + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc)), + NumEnums: 1, + NumMessages: 5, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes, + DependencyIndexes: file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs, + EnumInfos: file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes, + MessageInfos: file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes, + }.Build() + File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto = out.File + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes = nil + file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = nil +} diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto new file mode 100644 index 0000000..88e966d --- /dev/null +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; + +package kms.api.cmk.registry.tenant_config.v1; + +import "buf/validate/validate.proto"; +import "google/protobuf/field_mask.proto"; + +option go_package = "github.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1"; + +service Service { + rpc GetTenantConfig(GetTenantConfigRequest) returns (GetTenantConfigResponse) {} + rpc UpdateTenantConfig(UpdateTenantConfigRequest) returns (UpdateTenantConfigResponse) {} +} + +// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. +message TenantConfiguration { + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + optional int32 system_limit = 1; + TenantConfigStatus status = 2; + string error_message = 3; + string updated_at = 4; +} + +message GetTenantConfigRequest { + string id = 1 [(buf.validate.field).string.min_len = 1]; +} + +message GetTenantConfigResponse { + TenantConfiguration config = 1; +} + +message UpdateTenantConfigRequest { + string id = 1 [(buf.validate.field).string.min_len = 1]; + // Configuration to update. + TenantConfiguration config = 2; + // Fields to update. Only paths listed here are applied. + // To clear a field back to default, include it in update_mask + // but leave it unset (or set to default value) in config. + google.protobuf.FieldMask update_mask = 3; +} + +message UpdateTenantConfigResponse { + // The updated configuration. + TenantConfiguration config = 1; +} + +enum TenantConfigStatus { + TENANT_CONFIG_STATUS_UNSPECIFIED = 0; + TENANT_CONFIG_STATUS_UPDATING = 1; + TENANT_CONFIG_STATUS_UPDATING_ERROR = 2; + TENANT_CONFIG_STATUS_ACTIVE = 3; +} diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go new file mode 100644 index 0000000..611bbf6 --- /dev/null +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go @@ -0,0 +1,159 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.6.2 +// - protoc v5.29.3 +// source: kms/api/cmk/registry/tenant_config/v1/tenant_config.proto + +package tenantconfigv1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + Service_GetTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant_config.v1.Service/GetTenantConfig" + Service_UpdateTenantConfig_FullMethodName = "/kms.api.cmk.registry.tenant_config.v1.Service/UpdateTenantConfig" +) + +// ServiceClient is the client API for Service service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type ServiceClient interface { + GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) + UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) +} + +type serviceClient struct { + cc grpc.ClientConnInterface +} + +func NewServiceClient(cc grpc.ClientConnInterface) ServiceClient { + return &serviceClient{cc} +} + +func (c *serviceClient) GetTenantConfig(ctx context.Context, in *GetTenantConfigRequest, opts ...grpc.CallOption) (*GetTenantConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetTenantConfigResponse) + err := c.cc.Invoke(ctx, Service_GetTenantConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *serviceClient) UpdateTenantConfig(ctx context.Context, in *UpdateTenantConfigRequest, opts ...grpc.CallOption) (*UpdateTenantConfigResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateTenantConfigResponse) + err := c.cc.Invoke(ctx, Service_UpdateTenantConfig_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// ServiceServer is the server API for Service service. +// All implementations must embed UnimplementedServiceServer +// for forward compatibility. +type ServiceServer interface { + GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) + UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) + mustEmbedUnimplementedServiceServer() +} + +// UnimplementedServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedServiceServer struct{} + +func (UnimplementedServiceServer) GetTenantConfig(context.Context, *GetTenantConfigRequest) (*GetTenantConfigResponse, error) { + return nil, status.Error(codes.Unimplemented, "method GetTenantConfig not implemented") +} +func (UnimplementedServiceServer) UpdateTenantConfig(context.Context, *UpdateTenantConfigRequest) (*UpdateTenantConfigResponse, error) { + return nil, status.Error(codes.Unimplemented, "method UpdateTenantConfig not implemented") +} +func (UnimplementedServiceServer) mustEmbedUnimplementedServiceServer() {} +func (UnimplementedServiceServer) testEmbeddedByValue() {} + +// UnsafeServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to ServiceServer will +// result in compilation errors. +type UnsafeServiceServer interface { + mustEmbedUnimplementedServiceServer() +} + +func RegisterServiceServer(s grpc.ServiceRegistrar, srv ServiceServer) { + // If the following call panics, it indicates UnimplementedServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&Service_ServiceDesc, srv) +} + +func _Service_GetTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetTenantConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).GetTenantConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Service_GetTenantConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).GetTenantConfig(ctx, req.(*GetTenantConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Service_UpdateTenantConfig_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateTenantConfigRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ServiceServer).UpdateTenantConfig(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: Service_UpdateTenantConfig_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ServiceServer).UpdateTenantConfig(ctx, req.(*UpdateTenantConfigRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// Service_ServiceDesc is the grpc.ServiceDesc for Service service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var Service_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "kms.api.cmk.registry.tenant_config.v1.Service", + HandlerType: (*ServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetTenantConfig", + Handler: _Service_GetTenantConfig_Handler, + }, + { + MethodName: "UpdateTenantConfig", + Handler: _Service_UpdateTenantConfig_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "kms/api/cmk/registry/tenant_config/v1/tenant_config.proto", +} From bb68cc0bbf85fccf9ba52d9e5f0fc337114a41bf Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 13:54:34 +0200 Subject: [PATCH 04/13] move tenant config action to tenant_config proto, drop eventprocessor changes Signed-off-by: Pawel Szelag --- .../api/cmk/eventprocessor/task/v1/task.pb.go | 106 +++--------------- .../api/cmk/eventprocessor/task/v1/task.proto | 7 -- .../api/cmk/registry/tenant/v1/tenant.pb.go | 28 ++--- .../api/cmk/registry/tenant/v1/tenant.proto | 1 - .../tenant_config/v1/tenant_config.pb.go | 84 +++++++++++--- .../tenant_config/v1/tenant_config.proto | 5 + 6 files changed, 101 insertions(+), 130 deletions(-) diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go index 0fabe7e..812418a 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.12 -// protoc v5.29.3 +// protoc-gen-go v1.36.11 +// protoc v7.35.1 // source: kms/api/cmk/eventprocessor/task/v1/task.proto package taskv1 @@ -32,7 +32,6 @@ const ( TaskType_SYSTEM_UNLINK TaskType = 5 TaskType_SYSTEM_SWITCH TaskType = 6 TaskType_KEY_DETACH TaskType = 7 - TaskType_TENANT_CONFIG TaskType = 8 ) // Enum value maps for TaskType. @@ -46,7 +45,6 @@ var ( 5: "SYSTEM_UNLINK", 6: "SYSTEM_SWITCH", 7: "KEY_DETACH", - 8: "TENANT_CONFIG", } TaskType_value = map[string]int32{ "KEY_ENABLE": 0, @@ -57,7 +55,6 @@ var ( "SYSTEM_UNLINK": 5, "SYSTEM_SWITCH": 6, "KEY_DETACH": 7, - "TENANT_CONFIG": 8, } ) @@ -96,7 +93,6 @@ type Data struct { // // *Data_KeyAction // *Data_SystemAction - // *Data_TenantConfigAction Data isData_Data `protobuf_oneof:"data"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache @@ -164,15 +160,6 @@ func (x *Data) GetSystemAction() *SystemAction { return nil } -func (x *Data) GetTenantConfigAction() *TenantConfigAction { - if x != nil { - if x, ok := x.Data.(*Data_TenantConfigAction); ok { - return x.TenantConfigAction - } - } - return nil -} - type isData_Data interface { isData_Data() } @@ -185,16 +172,10 @@ type Data_SystemAction struct { SystemAction *SystemAction `protobuf:"bytes,20,opt,name=system_action,json=systemAction,proto3,oneof"` } -type Data_TenantConfigAction struct { - TenantConfigAction *TenantConfigAction `protobuf:"bytes,30,opt,name=tenant_config_action,json=tenantConfigAction,proto3,oneof"` -} - func (*Data_KeyAction) isData_Data() {} func (*Data_SystemAction) isData_Data() {} -func (*Data_TenantConfigAction) isData_Data() {} - // TaskType KEY_ENABLE, KEY_DISABLE, KEY_DELETE, KEY_ROTATE, KEY_DETACH type KeyAction struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -381,63 +362,17 @@ func (x *SystemAction) GetCmkRegion() string { return "" } -// TaskType TENANT_RECONFIGURE -type TenantConfigAction struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,10,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *TenantConfigAction) Reset() { - *x = TenantConfigAction{} - mi := &file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *TenantConfigAction) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TenantConfigAction) ProtoMessage() {} - -func (x *TenantConfigAction) ProtoReflect() protoreflect.Message { - mi := &file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[3] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TenantConfigAction.ProtoReflect.Descriptor instead. -func (*TenantConfigAction) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescGZIP(), []int{3} -} - -func (x *TenantConfigAction) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - var File_kms_api_cmk_eventprocessor_task_v1_task_proto protoreflect.FileDescriptor const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\n" + - "-kms/api/cmk/eventprocessor/task/v1/task.proto\x12\"kms.api.cmk.eventprocessor.task.v1\"\xee\x02\n" + + "-kms/api/cmk/eventprocessor/task/v1/task.proto\x12\"kms.api.cmk.eventprocessor.task.v1\"\x82\x02\n" + "\x04Data\x12I\n" + "\ttask_type\x18\x05 \x01(\x0e2,.kms.api.cmk.eventprocessor.task.v1.TaskTypeR\btaskType\x12N\n" + "\n" + "key_action\x18\n" + " \x01(\v2-.kms.api.cmk.eventprocessor.task.v1.KeyActionH\x00R\tkeyAction\x12W\n" + - "\rsystem_action\x18\x14 \x01(\v20.kms.api.cmk.eventprocessor.task.v1.SystemActionH\x00R\fsystemAction\x12j\n" + - "\x14tenant_config_action\x18\x1e \x01(\v26.kms.api.cmk.eventprocessor.task.v1.TenantConfigActionH\x00R\x12tenantConfigActionB\x06\n" + + "\rsystem_action\x18\x14 \x01(\v20.kms.api.cmk.eventprocessor.task.v1.SystemActionH\x00R\fsystemActionB\x06\n" + "\x04data\"^\n" + "\tKeyAction\x12\x15\n" + "\x06key_id\x18\n" + @@ -459,10 +394,7 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\x0ftenant_owner_id\x183 \x01(\tR\rtenantOwnerId\x12*\n" + "\x11tenant_owner_type\x184 \x01(\tR\x0ftenantOwnerType\x12\x1d\n" + "\n" + - "cmk_region\x18< \x01(\tR\tcmkRegion\"1\n" + - "\x12TenantConfigAction\x12\x1b\n" + - "\ttenant_id\x18\n" + - " \x01(\tR\btenantId*\xa5\x01\n" + + "cmk_region\x18< \x01(\tR\tcmkRegion*\x92\x01\n" + "\bTaskType\x12\x0e\n" + "\n" + "KEY_ENABLE\x10\x00\x12\x0f\n" + @@ -475,8 +407,7 @@ const file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc = "" + "\rSYSTEM_UNLINK\x10\x05\x12\x11\n" + "\rSYSTEM_SWITCH\x10\x06\x12\x0e\n" + "\n" + - "KEY_DETACH\x10\a\x12\x11\n" + - "\rTENANT_CONFIG\x10\bBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" + "KEY_DETACH\x10\aBLZJgithub.com/openkcm/api-sdk/proto/kms/api/cmk/eventprocessor/task/v1;taskv1b\x06proto3" var ( file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescOnce sync.Once @@ -491,24 +422,22 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDescGZIP() []byte { } var file_kms_api_cmk_eventprocessor_task_v1_task_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes = make([]protoimpl.MessageInfo, 3) var file_kms_api_cmk_eventprocessor_task_v1_task_proto_goTypes = []any{ - (TaskType)(0), // 0: kms.api.cmk.eventprocessor.task.v1.TaskType - (*Data)(nil), // 1: kms.api.cmk.eventprocessor.task.v1.Data - (*KeyAction)(nil), // 2: kms.api.cmk.eventprocessor.task.v1.KeyAction - (*SystemAction)(nil), // 3: kms.api.cmk.eventprocessor.task.v1.SystemAction - (*TenantConfigAction)(nil), // 4: kms.api.cmk.eventprocessor.task.v1.TenantConfigAction + (TaskType)(0), // 0: kms.api.cmk.eventprocessor.task.v1.TaskType + (*Data)(nil), // 1: kms.api.cmk.eventprocessor.task.v1.Data + (*KeyAction)(nil), // 2: kms.api.cmk.eventprocessor.task.v1.KeyAction + (*SystemAction)(nil), // 3: kms.api.cmk.eventprocessor.task.v1.SystemAction } var file_kms_api_cmk_eventprocessor_task_v1_task_proto_depIdxs = []int32{ 0, // 0: kms.api.cmk.eventprocessor.task.v1.Data.task_type:type_name -> kms.api.cmk.eventprocessor.task.v1.TaskType 2, // 1: kms.api.cmk.eventprocessor.task.v1.Data.key_action:type_name -> kms.api.cmk.eventprocessor.task.v1.KeyAction 3, // 2: kms.api.cmk.eventprocessor.task.v1.Data.system_action:type_name -> kms.api.cmk.eventprocessor.task.v1.SystemAction - 4, // 3: kms.api.cmk.eventprocessor.task.v1.Data.tenant_config_action:type_name -> kms.api.cmk.eventprocessor.task.v1.TenantConfigAction - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 3, // [3:3] is the sub-list for method output_type + 3, // [3:3] is the sub-list for method input_type + 3, // [3:3] is the sub-list for extension type_name + 3, // [3:3] is the sub-list for extension extendee + 0, // [0:3] is the sub-list for field type_name } func init() { file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() } @@ -519,7 +448,6 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() { file_kms_api_cmk_eventprocessor_task_v1_task_proto_msgTypes[0].OneofWrappers = []any{ (*Data_KeyAction)(nil), (*Data_SystemAction)(nil), - (*Data_TenantConfigAction)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -527,7 +455,7 @@ func file_kms_api_cmk_eventprocessor_task_v1_task_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc), len(file_kms_api_cmk_eventprocessor_task_v1_task_proto_rawDesc)), NumEnums: 1, - NumMessages: 4, + NumMessages: 3, NumExtensions: 0, NumServices: 0, }, diff --git a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto index 9f8ba1d..53830bb 100644 --- a/proto/kms/api/cmk/eventprocessor/task/v1/task.proto +++ b/proto/kms/api/cmk/eventprocessor/task/v1/task.proto @@ -13,7 +13,6 @@ enum TaskType { SYSTEM_UNLINK = 5; SYSTEM_SWITCH = 6; KEY_DETACH = 7; - TENANT_CONFIG = 8; } // Wrapped proto for Orbital TaskRequest.data @@ -22,7 +21,6 @@ message Data { oneof data { KeyAction key_action = 10; SystemAction system_action = 20; - TenantConfigAction tenant_config_action = 30; } } @@ -47,8 +45,3 @@ message SystemAction { string tenant_owner_type = 52; string cmk_region = 60; } - -// TaskType TENANT_RECONFIGURE -message TenantConfigAction { - string tenant_id = 10; -} diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go index 652b5f1..131b9d5 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go @@ -156,12 +156,11 @@ func (Role) EnumDescriptor() ([]byte, []int) { type ACTION int32 const ( - ACTION_ACTION_UNSPECIFIED ACTION = 0 - ACTION_ACTION_PROVISION_TENANT ACTION = 1 - ACTION_ACTION_BLOCK_TENANT ACTION = 2 - ACTION_ACTION_UNBLOCK_TENANT ACTION = 3 - ACTION_ACTION_TERMINATE_TENANT ACTION = 4 - ACTION_ACTION_UPDATE_TENANT_CONFIG ACTION = 5 + ACTION_ACTION_UNSPECIFIED ACTION = 0 + ACTION_ACTION_PROVISION_TENANT ACTION = 1 + ACTION_ACTION_BLOCK_TENANT ACTION = 2 + ACTION_ACTION_UNBLOCK_TENANT ACTION = 3 + ACTION_ACTION_TERMINATE_TENANT ACTION = 4 ) // Enum value maps for ACTION. @@ -172,15 +171,13 @@ var ( 2: "ACTION_BLOCK_TENANT", 3: "ACTION_UNBLOCK_TENANT", 4: "ACTION_TERMINATE_TENANT", - 5: "ACTION_UPDATE_TENANT_CONFIG", } ACTION_value = map[string]int32{ - "ACTION_UNSPECIFIED": 0, - "ACTION_PROVISION_TENANT": 1, - "ACTION_BLOCK_TENANT": 2, - "ACTION_UNBLOCK_TENANT": 3, - "ACTION_TERMINATE_TENANT": 4, - "ACTION_UPDATE_TENANT_CONFIG": 5, + "ACTION_UNSPECIFIED": 0, + "ACTION_PROVISION_TENANT": 1, + "ACTION_BLOCK_TENANT": 2, + "ACTION_UNBLOCK_TENANT": 3, + "ACTION_TERMINATE_TENANT": 4, } ) @@ -1390,14 +1387,13 @@ const file_kms_api_cmk_registry_tenant_v1_tenant_proto_rawDesc = "" + "\tROLE_LIVE\x10\x01\x12\r\n" + "\tROLE_TEST\x10\x02\x12\x0e\n" + "\n" + - "ROLE_TRIAL\x10\x03*\xaf\x01\n" + + "ROLE_TRIAL\x10\x03*\x8e\x01\n" + "\x06ACTION\x12\x16\n" + "\x12ACTION_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17ACTION_PROVISION_TENANT\x10\x01\x12\x17\n" + "\x13ACTION_BLOCK_TENANT\x10\x02\x12\x19\n" + "\x15ACTION_UNBLOCK_TENANT\x10\x03\x12\x1b\n" + - "\x17ACTION_TERMINATE_TENANT\x10\x04\x12\x1f\n" + - "\x1bACTION_UPDATE_TENANT_CONFIG\x10\x052\xa6\t\n" + + "\x17ACTION_TERMINATE_TENANT\x10\x042\xa6\t\n" + "\aService\x12\x81\x01\n" + "\x0eRegisterTenant\x125.kms.api.cmk.registry.tenant.v1.RegisterTenantRequest\x1a6.kms.api.cmk.registry.tenant.v1.RegisterTenantResponse\"\x00\x12x\n" + "\vListTenants\x122.kms.api.cmk.registry.tenant.v1.ListTenantsRequest\x1a3.kms.api.cmk.registry.tenant.v1.ListTenantsResponse\"\x00\x12r\n" + diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto index b8d5422..aa4f6bf 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.proto +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.proto @@ -163,5 +163,4 @@ enum ACTION { ACTION_BLOCK_TENANT = 2; ACTION_UNBLOCK_TENANT = 3; ACTION_TERMINATE_TENANT = 4; - ACTION_UPDATE_TENANT_CONFIG = 5; } diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index 95c3c67..297a260 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -75,6 +75,52 @@ func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} } +type TenantConfigAction int32 + +const ( + TenantConfigAction_TENANT_CONFIG_ACTION_UNSPECIFIED TenantConfigAction = 0 + TenantConfigAction_TENANT_CONFIG_ACTION_UPDATE TenantConfigAction = 1 +) + +// Enum value maps for TenantConfigAction. +var ( + TenantConfigAction_name = map[int32]string{ + 0: "TENANT_CONFIG_ACTION_UNSPECIFIED", + 1: "TENANT_CONFIG_ACTION_UPDATE", + } + TenantConfigAction_value = map[string]int32{ + "TENANT_CONFIG_ACTION_UNSPECIFIED": 0, + "TENANT_CONFIG_ACTION_UPDATE": 1, + } +) + +func (x TenantConfigAction) Enum() *TenantConfigAction { + p := new(TenantConfigAction) + *p = x + return p +} + +func (x TenantConfigAction) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TenantConfigAction) Descriptor() protoreflect.EnumDescriptor { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes[1].Descriptor() +} + +func (TenantConfigAction) Type() protoreflect.EnumType { + return &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes[1] +} + +func (x TenantConfigAction) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TenantConfigAction.Descriptor instead. +func (TenantConfigAction) EnumDescriptor() ([]byte, []int) { + return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} +} + // TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. type TenantConfiguration struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -370,7 +416,10 @@ const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = " " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + "#TENANT_CONFIG_STATUS_UPDATING_ERROR\x10\x02\x12\x1f\n" + - "\x1bTENANT_CONFIG_STATUS_ACTIVE\x10\x032\xbc\x02\n" + + "\x1bTENANT_CONFIG_STATUS_ACTIVE\x10\x03*[\n" + + "\x12TenantConfigAction\x12$\n" + + " TENANT_CONFIG_ACTION_UNSPECIFIED\x10\x00\x12\x1f\n" + + "\x1bTENANT_CONFIG_ACTION_UPDATE\x10\x012\xbc\x02\n" + "\aService\x12\x92\x01\n" + "\x0fGetTenantConfig\x12=.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest\x1a>.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse\"\x00\x12\x9b\x01\n" + "\x12UpdateTenantConfig\x12@.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest\x1aA.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse\"\x00BWZUgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1b\x06proto3" @@ -387,27 +436,28 @@ func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP( return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData } -var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes = []any{ (TenantConfigStatus)(0), // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus - (*TenantConfiguration)(nil), // 1: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - (*GetTenantConfigRequest)(nil), // 2: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest - (*GetTenantConfigResponse)(nil), // 3: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse - (*UpdateTenantConfigRequest)(nil), // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest - (*UpdateTenantConfigResponse)(nil), // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse - (*fieldmaskpb.FieldMask)(nil), // 6: google.protobuf.FieldMask + (TenantConfigAction)(0), // 1: kms.api.cmk.registry.tenant_config.v1.TenantConfigAction + (*TenantConfiguration)(nil), // 2: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + (*GetTenantConfigRequest)(nil), // 3: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + (*GetTenantConfigResponse)(nil), // 4: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + (*UpdateTenantConfigRequest)(nil), // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + (*UpdateTenantConfigResponse)(nil), // 6: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + (*fieldmaskpb.FieldMask)(nil), // 7: google.protobuf.FieldMask } var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = []int32{ 0, // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus - 1, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - 1, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - 6, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 1, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - 2, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest - 4, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest - 3, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse - 5, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + 2, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 2, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 7, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask + 2, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 3, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + 5, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + 4, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + 6, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse 7, // [7:9] is the sub-list for method output_type 5, // [5:7] is the sub-list for method input_type 5, // [5:5] is the sub-list for extension type_name @@ -426,7 +476,7 @@ func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc)), - NumEnums: 1, + NumEnums: 2, NumMessages: 5, NumExtensions: 0, NumServices: 1, diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 88e966d..faa7607 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -51,3 +51,8 @@ enum TenantConfigStatus { TENANT_CONFIG_STATUS_UPDATING_ERROR = 2; TENANT_CONFIG_STATUS_ACTIVE = 3; } + +enum TenantConfigAction { + TENANT_CONFIG_ACTION_UNSPECIFIED = 0; + TENANT_CONFIG_ACTION_UPDATE = 1; +} From cb87efc1a48c8ca7c02526f5f233c1fde2464881 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 14:02:45 +0200 Subject: [PATCH 05/13] revert untouched files to main status Signed-off-by: Pawel Szelag --- proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go | 4 ++-- proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go index 131b9d5..f7f20d2 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.12 -// protoc v5.29.3 +// protoc-gen-go v1.36.11 +// protoc v7.35.1 // source: kms/api/cmk/registry/tenant/v1/tenant.proto package tenantv1 diff --git a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go index b374ac3..4d3a6b3 100644 --- a/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go +++ b/proto/kms/api/cmk/registry/tenant/v1/tenant_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.2 -// - protoc v5.29.3 +// - protoc-gen-go-grpc v1.6.1 +// - protoc v7.35.1 // source: kms/api/cmk/registry/tenant/v1/tenant.proto package tenantv1 From 792394f2716f84deb349e1a848a4dac07d9f89ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Szel=C4=85g?= Date: Wed, 16 Sep 2026 14:13:50 +0200 Subject: [PATCH 06/13] Update proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Chris Burkert Signed-off-by: Paweł Szeląg --- .../cmk/registry/tenant_config/v1/tenant_config.proto | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index faa7607..8d618a2 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -14,12 +14,15 @@ service Service { // TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. message TenantConfiguration { - // Maximum number of systems allowed per key configuration. - // Default: system default (global limit). - optional int32 system_limit = 1; + string tenant_id = 1; TenantConfigStatus status = 2; string error_message = 3; string updated_at = 4; + string created_at = 5; + + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + optional int32 system_limit = 11; } message GetTenantConfigRequest { From 639ba057469a8f203e3fba639876e18793d3ed31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Szel=C4=85g?= Date: Wed, 16 Sep 2026 14:14:01 +0200 Subject: [PATCH 07/13] Update proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Chris Burkert Signed-off-by: Paweł Szeląg --- proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 8d618a2..774c2b0 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -26,7 +26,7 @@ message TenantConfiguration { } message GetTenantConfigRequest { - string id = 1 [(buf.validate.field).string.min_len = 1]; + string tenant_id = 1 [(buf.validate.field).string.min_len = 1]; } message GetTenantConfigResponse { From 8daae6fae4a8bf5f75e21fcc46f29fa700fc9198 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Szel=C4=85g?= Date: Wed, 16 Sep 2026 14:14:11 +0200 Subject: [PATCH 08/13] Update proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Chris Burkert Signed-off-by: Paweł Szeląg --- proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 774c2b0..706b3c0 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -34,7 +34,7 @@ message GetTenantConfigResponse { } message UpdateTenantConfigRequest { - string id = 1 [(buf.validate.field).string.min_len = 1]; + string tenant_id = 1 [(buf.validate.field).string.min_len = 1]; // Configuration to update. TenantConfiguration config = 2; // Fields to update. Only paths listed here are applied. From 9da0911028e116c0d168786b939b800d09e985d9 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 14:58:41 +0200 Subject: [PATCH 09/13] redesign tenant config messages Signed-off-by: Pawel Szelag --- .../tenant_config/v1/tenant_config.pb.go | 242 +++++++++++------- .../tenant_config/v1/tenant_config.proto | 33 ++- 2 files changed, 168 insertions(+), 107 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index 297a260..7ec3385 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -121,33 +121,30 @@ func (TenantConfigAction) EnumDescriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} } -// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. -type TenantConfiguration struct { +// TenantConfigurationValues holds the user-settable tenant configuration overrides. +type TenantConfigurationValues struct { state protoimpl.MessageState `protogen:"open.v1"` // Maximum number of systems allowed per key configuration. // Default: system default (global limit). - SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` - Status TenantConfigStatus `protobuf:"varint,2,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` - ErrorMessage string `protobuf:"bytes,3,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - UpdatedAt string `protobuf:"bytes,4,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *TenantConfiguration) Reset() { - *x = TenantConfiguration{} +func (x *TenantConfigurationValues) Reset() { + *x = TenantConfigurationValues{} mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *TenantConfiguration) String() string { +func (x *TenantConfigurationValues) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TenantConfiguration) ProtoMessage() {} +func (*TenantConfigurationValues) ProtoMessage() {} -func (x *TenantConfiguration) ProtoReflect() protoreflect.Message { +func (x *TenantConfigurationValues) ProtoReflect() protoreflect.Message { mi := &file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -159,42 +156,21 @@ func (x *TenantConfiguration) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TenantConfiguration.ProtoReflect.Descriptor instead. -func (*TenantConfiguration) Descriptor() ([]byte, []int) { +// Deprecated: Use TenantConfigurationValues.ProtoReflect.Descriptor instead. +func (*TenantConfigurationValues) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} } -func (x *TenantConfiguration) GetSystemLimit() int32 { +func (x *TenantConfigurationValues) GetSystemLimit() int32 { if x != nil && x.SystemLimit != nil { return *x.SystemLimit } return 0 } -func (x *TenantConfiguration) GetStatus() TenantConfigStatus { - if x != nil { - return x.Status - } - return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED -} - -func (x *TenantConfiguration) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *TenantConfiguration) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - type GetTenantConfigRequest struct { state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -229,16 +205,21 @@ func (*GetTenantConfigRequest) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} } -func (x *GetTenantConfigRequest) GetId() string { +func (x *GetTenantConfigRequest) GetTenantId() string { if x != nil { - return x.Id + return x.TenantId } return "" } type GetTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + Status TenantConfigStatus `protobuf:"varint,3,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` + ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + CreatedAt string `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt string `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -273,22 +254,53 @@ func (*GetTenantConfigResponse) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{2} } -func (x *GetTenantConfigResponse) GetConfig() *TenantConfiguration { +func (x *GetTenantConfigResponse) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *GetTenantConfigResponse) GetValues() *TenantConfigurationValues { if x != nil { - return x.Config + return x.Values } return nil } +func (x *GetTenantConfigResponse) GetStatus() TenantConfigStatus { + if x != nil { + return x.Status + } + return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED +} + +func (x *GetTenantConfigResponse) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *GetTenantConfigResponse) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *GetTenantConfigResponse) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + type UpdateTenantConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Configuration to update. - Config *TenantConfiguration `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` - // Fields to update. Only paths listed here are applied. - // To clear a field back to default, include it in update_mask - // but leave it unset (or set to default value) in config. - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -323,16 +335,16 @@ func (*UpdateTenantConfigRequest) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{3} } -func (x *UpdateTenantConfigRequest) GetId() string { +func (x *UpdateTenantConfigRequest) GetTenantId() string { if x != nil { - return x.Id + return x.TenantId } return "" } -func (x *UpdateTenantConfigRequest) GetConfig() *TenantConfiguration { +func (x *UpdateTenantConfigRequest) GetValues() *TenantConfigurationValues { if x != nil { - return x.Config + return x.Values } return nil } @@ -345,9 +357,13 @@ func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // The updated configuration. - Config *TenantConfiguration `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + Status TenantConfigStatus `protobuf:"varint,3,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` + ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + CreatedAt string `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt string `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -382,36 +398,81 @@ func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{4} } -func (x *UpdateTenantConfigResponse) GetConfig() *TenantConfiguration { +func (x *UpdateTenantConfigResponse) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +func (x *UpdateTenantConfigResponse) GetValues() *TenantConfigurationValues { if x != nil { - return x.Config + return x.Values } return nil } +func (x *UpdateTenantConfigResponse) GetStatus() TenantConfigStatus { + if x != nil { + return x.Status + } + return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED +} + +func (x *UpdateTenantConfigResponse) GetErrorMessage() string { + if x != nil { + return x.ErrorMessage + } + return "" +} + +func (x *UpdateTenantConfigResponse) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *UpdateTenantConfigResponse) GetUpdatedAt() string { + if x != nil { + return x.UpdatedAt + } + return "" +} + var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + "\n" + - "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"\xe5\x01\n" + - "\x13TenantConfiguration\x12&\n" + - "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01\x12Q\n" + - "\x06status\x18\x02 \x01(\x0e29.kms.api.cmk.registry.tenant_config.v1.TenantConfigStatusR\x06status\x12#\n" + - "\rerror_message\x18\x03 \x01(\tR\ferrorMessage\x12\x1d\n" + + "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"T\n" + + "\x19TenantConfigurationValues\x12&\n" + + "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01B\x0f\n" + + "\r_system_limit\">\n" + + "\x16GetTenantConfigRequest\x12$\n" + + "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\"\xc6\x02\n" + + "\x17GetTenantConfigResponse\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12X\n" + + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12Q\n" + + "\x06status\x18\x03 \x01(\x0e29.kms.api.cmk.registry.tenant_config.v1.TenantConfigStatusR\x06status\x12#\n" + + "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x1d\n" + + "\n" + + "created_at\x18\x05 \x01(\tR\tcreatedAt\x12\x1d\n" + "\n" + - "updated_at\x18\x04 \x01(\tR\tupdatedAtB\x0f\n" + - "\r_system_limit\"1\n" + - "\x16GetTenantConfigRequest\x12\x17\n" + - "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\"m\n" + - "\x17GetTenantConfigResponse\x12R\n" + - "\x06config\x18\x01 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config\"\xc5\x01\n" + - "\x19UpdateTenantConfigRequest\x12\x17\n" + - "\x02id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\x02id\x12R\n" + - "\x06config\x18\x02 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config\x12;\n" + + "updated_at\x18\x06 \x01(\tR\tupdatedAt\"\xd8\x01\n" + + "\x19UpdateTenantConfigRequest\x12$\n" + + "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\x12X\n" + + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12;\n" + "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + - "updateMask\"p\n" + - "\x1aUpdateTenantConfigResponse\x12R\n" + - "\x06config\x18\x01 \x01(\v2:.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationR\x06config*\xa7\x01\n" + + "updateMask\"\xc9\x02\n" + + "\x1aUpdateTenantConfigResponse\x12\x1b\n" + + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12X\n" + + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12Q\n" + + "\x06status\x18\x03 \x01(\x0e29.kms.api.cmk.registry.tenant_config.v1.TenantConfigStatusR\x06status\x12#\n" + + "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x1d\n" + + "\n" + + "created_at\x18\x05 \x01(\tR\tcreatedAt\x12\x1d\n" + + "\n" + + "updated_at\x18\x06 \x01(\tR\tupdatedAt*\xa7\x01\n" + "\x12TenantConfigStatus\x12$\n" + " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + @@ -441,7 +502,7 @@ var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes = ma var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes = []any{ (TenantConfigStatus)(0), // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus (TenantConfigAction)(0), // 1: kms.api.cmk.registry.tenant_config.v1.TenantConfigAction - (*TenantConfiguration)(nil), // 2: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + (*TenantConfigurationValues)(nil), // 2: kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues (*GetTenantConfigRequest)(nil), // 3: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest (*GetTenantConfigResponse)(nil), // 4: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse (*UpdateTenantConfigRequest)(nil), // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest @@ -449,20 +510,21 @@ var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_goTypes = []a (*fieldmaskpb.FieldMask)(nil), // 7: google.protobuf.FieldMask } var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = []int32{ - 0, // 0: kms.api.cmk.registry.tenant_config.v1.TenantConfiguration.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus - 2, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - 2, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration + 2, // 0: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues + 0, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus + 2, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues 7, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 2, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.config:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfiguration - 3, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest - 5, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest - 4, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse - 6, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse - 7, // [7:9] is the sub-list for method output_type - 5, // [5:7] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 2, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues + 0, // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus + 3, // 6: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + 5, // 7: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + 4, // 8: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + 6, // 9: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + 8, // [8:10] is the sub-list for method output_type + 6, // [6:8] is the sub-list for method input_type + 6, // [6:6] is the sub-list for extension type_name + 6, // [6:6] is the sub-list for extension extendee + 0, // [0:6] is the sub-list for field type_name } func init() { file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() } diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 706b3c0..02bf5cf 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -12,17 +12,11 @@ service Service { rpc UpdateTenantConfig(UpdateTenantConfigRequest) returns (UpdateTenantConfigResponse) {} } -// TenantConfiguration holds tenant-specific configuration settings and their reconciliation status. -message TenantConfiguration { - string tenant_id = 1; - TenantConfigStatus status = 2; - string error_message = 3; - string updated_at = 4; - string created_at = 5; - +// TenantConfigurationValues holds the user-settable tenant configuration overrides. +message TenantConfigurationValues { // Maximum number of systems allowed per key configuration. // Default: system default (global limit). - optional int32 system_limit = 11; + optional int32 system_limit = 1; } message GetTenantConfigRequest { @@ -30,22 +24,27 @@ message GetTenantConfigRequest { } message GetTenantConfigResponse { - TenantConfiguration config = 1; + string tenant_id = 1; + TenantConfigurationValues values = 2; + TenantConfigStatus status = 3; + string error_message = 4; + string created_at = 5; + string updated_at = 6; } message UpdateTenantConfigRequest { string tenant_id = 1 [(buf.validate.field).string.min_len = 1]; - // Configuration to update. - TenantConfiguration config = 2; - // Fields to update. Only paths listed here are applied. - // To clear a field back to default, include it in update_mask - // but leave it unset (or set to default value) in config. + TenantConfigurationValues values = 2; google.protobuf.FieldMask update_mask = 3; } message UpdateTenantConfigResponse { - // The updated configuration. - TenantConfiguration config = 1; + string tenant_id = 1; + TenantConfigurationValues values = 2; + TenantConfigStatus status = 3; + string error_message = 4; + string created_at = 5; + string updated_at = 6; } enum TenantConfigStatus { From c1dfe9ba4c517d2c856448bb96196652e6f07706 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 15:09:20 +0200 Subject: [PATCH 10/13] change UpdateTenantConfigResponse Signed-off-by: Pawel Szelag --- .../tenant_config/v1/tenant_config.pb.go | 61 ++++--------------- .../tenant_config/v1/tenant_config.proto | 4 -- 2 files changed, 11 insertions(+), 54 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index 7ec3385..af99dea 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -360,10 +360,6 @@ type UpdateTenantConfigResponse struct { state protoimpl.MessageState `protogen:"open.v1"` TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` - Status TenantConfigStatus `protobuf:"varint,3,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - CreatedAt string `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -412,34 +408,6 @@ func (x *UpdateTenantConfigResponse) GetValues() *TenantConfigurationValues { return nil } -func (x *UpdateTenantConfigResponse) GetStatus() TenantConfigStatus { - if x != nil { - return x.Status - } - return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED -} - -func (x *UpdateTenantConfigResponse) GetErrorMessage() string { - if x != nil { - return x.ErrorMessage - } - return "" -} - -func (x *UpdateTenantConfigResponse) GetCreatedAt() string { - if x != nil { - return x.CreatedAt - } - return "" -} - -func (x *UpdateTenantConfigResponse) GetUpdatedAt() string { - if x != nil { - return x.UpdatedAt - } - return "" -} - var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + @@ -463,16 +431,10 @@ const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = " "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\x12X\n" + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12;\n" + "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + - "updateMask\"\xc9\x02\n" + + "updateMask\"\x93\x01\n" + "\x1aUpdateTenantConfigResponse\x12\x1b\n" + "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12X\n" + - "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12Q\n" + - "\x06status\x18\x03 \x01(\x0e29.kms.api.cmk.registry.tenant_config.v1.TenantConfigStatusR\x06status\x12#\n" + - "\rerror_message\x18\x04 \x01(\tR\ferrorMessage\x12\x1d\n" + - "\n" + - "created_at\x18\x05 \x01(\tR\tcreatedAt\x12\x1d\n" + - "\n" + - "updated_at\x18\x06 \x01(\tR\tupdatedAt*\xa7\x01\n" + + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values*\xa7\x01\n" + "\x12TenantConfigStatus\x12$\n" + " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + @@ -515,16 +477,15 @@ var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = []i 2, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues 7, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask 2, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues - 0, // 5: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus - 3, // 6: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest - 5, // 7: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest - 4, // 8: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse - 6, // 9: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse - 8, // [8:10] is the sub-list for method output_type - 6, // [6:8] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 3, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + 5, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + 4, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + 6, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + 7, // [7:9] is the sub-list for method output_type + 5, // [5:7] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() } diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 02bf5cf..edee4c1 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -41,10 +41,6 @@ message UpdateTenantConfigRequest { message UpdateTenantConfigResponse { string tenant_id = 1; TenantConfigurationValues values = 2; - TenantConfigStatus status = 3; - string error_message = 4; - string created_at = 5; - string updated_at = 6; } enum TenantConfigStatus { From 614a6407127daa47417d2cf77e1396395d648be4 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 15:23:00 +0200 Subject: [PATCH 11/13] add comments, make update response empty Signed-off-by: Pawel Szelag --- .../tenant_config/v1/tenant_config.pb.go | 45 ++++++------------- .../tenant_config/v1/tenant_config.proto | 9 ++-- 2 files changed, 19 insertions(+), 35 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index af99dea..4781d03 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -75,6 +75,8 @@ func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} } +// TenantConfigAction defines the orbital job types used by the registry service +// to drive tenant config reconciliation. type TenantConfigAction int32 const ( @@ -357,9 +359,7 @@ func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { } type UpdateTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -394,20 +394,6 @@ func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{4} } -func (x *UpdateTenantConfigResponse) GetTenantId() string { - if x != nil { - return x.TenantId - } - return "" -} - -func (x *UpdateTenantConfigResponse) GetValues() *TenantConfigurationValues { - if x != nil { - return x.Values - } - return nil -} - var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + @@ -431,10 +417,8 @@ const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = " "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\x12X\n" + "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values\x12;\n" + "\vupdate_mask\x18\x03 \x01(\v2\x1a.google.protobuf.FieldMaskR\n" + - "updateMask\"\x93\x01\n" + - "\x1aUpdateTenantConfigResponse\x12\x1b\n" + - "\ttenant_id\x18\x01 \x01(\tR\btenantId\x12X\n" + - "\x06values\x18\x02 \x01(\v2@.kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValuesR\x06values*\xa7\x01\n" + + "updateMask\"\x1c\n" + + "\x1aUpdateTenantConfigResponse*\xa7\x01\n" + "\x12TenantConfigStatus\x12$\n" + " TENANT_CONFIG_STATUS_UNSPECIFIED\x10\x00\x12!\n" + "\x1dTENANT_CONFIG_STATUS_UPDATING\x10\x01\x12'\n" + @@ -476,16 +460,15 @@ var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_depIdxs = []i 0, // 1: kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse.status:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus 2, // 2: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues 7, // 3: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest.update_mask:type_name -> google.protobuf.FieldMask - 2, // 4: kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse.values:type_name -> kms.api.cmk.registry.tenant_config.v1.TenantConfigurationValues - 3, // 5: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest - 5, // 6: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest - 4, // 7: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse - 6, // 8: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse - 7, // [7:9] is the sub-list for method output_type - 5, // [5:7] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 3, // 4: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest + 5, // 5: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:input_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest + 4, // 6: kms.api.cmk.registry.tenant_config.v1.Service.GetTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse + 6, // 7: kms.api.cmk.registry.tenant_config.v1.Service.UpdateTenantConfig:output_type -> kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse + 6, // [6:8] is the sub-list for method output_type + 4, // [4:6] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name } func init() { file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() } diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index edee4c1..94c865c 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -38,11 +38,10 @@ message UpdateTenantConfigRequest { google.protobuf.FieldMask update_mask = 3; } -message UpdateTenantConfigResponse { - string tenant_id = 1; - TenantConfigurationValues values = 2; -} +message UpdateTenantConfigResponse {} +// TenantConfigStatus represents the reconciliation state of a tenant's configuration. +// It is used by the orbital job handler in the registry service to track progress. enum TenantConfigStatus { TENANT_CONFIG_STATUS_UNSPECIFIED = 0; TENANT_CONFIG_STATUS_UPDATING = 1; @@ -50,6 +49,8 @@ enum TenantConfigStatus { TENANT_CONFIG_STATUS_ACTIVE = 3; } +// TenantConfigAction defines the orbital job types used by the registry service +// to drive tenant config reconciliation. enum TenantConfigAction { TENANT_CONFIG_ACTION_UNSPECIFIED = 0; TENANT_CONFIG_ACTION_UPDATE = 1; From 1f1674d62618b15f511206f2250d7cde02e8e7b0 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 15:33:46 +0200 Subject: [PATCH 12/13] migrate tenant_config.proto to edition 2024 Signed-off-by: Pawel Szelag --- .../tenant_config/v1/tenant_config.pb.go | 455 ++++++++++++++---- .../tenant_config/v1/tenant_config.proto | 11 +- .../tenant_config/v1/tenant_config_grpc.pb.go | 4 +- 3 files changed, 373 insertions(+), 97 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index 4781d03..265e8f3 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -1,18 +1,16 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.36.12 -// protoc v5.29.3 +// protoc v7.36.1 // source: kms/api/cmk/registry/tenant_config/v1/tenant_config.proto package tenantconfigv1 import ( - _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" reflect "reflect" - sync "sync" unsafe "unsafe" ) @@ -23,6 +21,8 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// TenantConfigStatus represents the reconciliation state of a tenant's configuration. +// It is used by the orbital job handler in the registry service to track progress. type TenantConfigStatus int32 const ( @@ -70,11 +70,6 @@ func (x TenantConfigStatus) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use TenantConfigStatus.Descriptor instead. -func (TenantConfigStatus) EnumDescriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} -} - // TenantConfigAction defines the orbital job types used by the registry service // to drive tenant config reconciliation. type TenantConfigAction int32 @@ -118,19 +113,14 @@ func (x TenantConfigAction) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use TenantConfigAction.Descriptor instead. -func (TenantConfigAction) EnumDescriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} -} - // TenantConfigurationValues holds the user-settable tenant configuration overrides. type TenantConfigurationValues struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Maximum number of systems allowed per key configuration. - // Default: system default (global limit). - SystemLimit *int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit,proto3,oneof" json:"system_limit,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_SystemLimit int32 `protobuf:"varint,1,opt,name=system_limit,json=systemLimit"` + XXX_raceDetectHookData protoimpl.RaceDetectHookData + XXX_presence [1]uint32 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TenantConfigurationValues) Reset() { @@ -158,23 +148,56 @@ func (x *TenantConfigurationValues) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TenantConfigurationValues.ProtoReflect.Descriptor instead. -func (*TenantConfigurationValues) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{0} -} - func (x *TenantConfigurationValues) GetSystemLimit() int32 { - if x != nil && x.SystemLimit != nil { - return *x.SystemLimit + if x != nil { + return x.xxx_hidden_SystemLimit } return 0 } +func (x *TenantConfigurationValues) SetSystemLimit(v int32) { + x.xxx_hidden_SystemLimit = v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1) +} + +func (x *TenantConfigurationValues) HasSystemLimit() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 0) +} + +func (x *TenantConfigurationValues) ClearSystemLimit() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0) + x.xxx_hidden_SystemLimit = 0 +} + +type TenantConfigurationValues_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + // Maximum number of systems allowed per key configuration. + // Default: system default (global limit). + SystemLimit *int32 +} + +func (b0 TenantConfigurationValues_builder) Build() *TenantConfigurationValues { + m0 := &TenantConfigurationValues{} + b, x := &b0, m0 + _, _ = b, x + if b.SystemLimit != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1) + x.xxx_hidden_SystemLimit = *b.SystemLimit + } + return m0 +} + type GetTenantConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId"` + XXX_raceDetectHookData protoimpl.RaceDetectHookData + XXX_presence [1]uint32 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetTenantConfigRequest) Reset() { @@ -202,28 +225,62 @@ func (x *GetTenantConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTenantConfigRequest.ProtoReflect.Descriptor instead. -func (*GetTenantConfigRequest) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{1} -} - func (x *GetTenantConfigRequest) GetTenantId() string { if x != nil { - return x.TenantId + if x.xxx_hidden_TenantId != nil { + return *x.xxx_hidden_TenantId + } + return "" } return "" } +func (x *GetTenantConfigRequest) SetTenantId(v string) { + x.xxx_hidden_TenantId = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 1) +} + +func (x *GetTenantConfigRequest) HasTenantId() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 0) +} + +func (x *GetTenantConfigRequest) ClearTenantId() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0) + x.xxx_hidden_TenantId = nil +} + +type GetTenantConfigRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + TenantId *string +} + +func (b0 GetTenantConfigRequest_builder) Build() *GetTenantConfigRequest { + m0 := &GetTenantConfigRequest{} + b, x := &b0, m0 + _, _ = b, x + if b.TenantId != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 1) + x.xxx_hidden_TenantId = b.TenantId + } + return m0 +} + type GetTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` - Status TenantConfigStatus `protobuf:"varint,3,opt,name=status,proto3,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus" json:"status,omitempty"` - ErrorMessage string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` - CreatedAt string `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt string `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId"` + xxx_hidden_Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values"` + xxx_hidden_Status TenantConfigStatus `protobuf:"varint,3,opt,name=status,enum=kms.api.cmk.registry.tenant_config.v1.TenantConfigStatus"` + xxx_hidden_ErrorMessage *string `protobuf:"bytes,4,opt,name=error_message,json=errorMessage"` + xxx_hidden_CreatedAt *string `protobuf:"bytes,5,opt,name=created_at,json=createdAt"` + xxx_hidden_UpdatedAt *string `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt"` + XXX_raceDetectHookData protoimpl.RaceDetectHookData + XXX_presence [1]uint32 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetTenantConfigResponse) Reset() { @@ -251,60 +308,210 @@ func (x *GetTenantConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetTenantConfigResponse.ProtoReflect.Descriptor instead. -func (*GetTenantConfigResponse) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{2} -} - func (x *GetTenantConfigResponse) GetTenantId() string { if x != nil { - return x.TenantId + if x.xxx_hidden_TenantId != nil { + return *x.xxx_hidden_TenantId + } + return "" } return "" } func (x *GetTenantConfigResponse) GetValues() *TenantConfigurationValues { if x != nil { - return x.Values + return x.xxx_hidden_Values } return nil } func (x *GetTenantConfigResponse) GetStatus() TenantConfigStatus { if x != nil { - return x.Status + if protoimpl.X.Present(&(x.XXX_presence[0]), 2) { + return x.xxx_hidden_Status + } } return TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED } func (x *GetTenantConfigResponse) GetErrorMessage() string { if x != nil { - return x.ErrorMessage + if x.xxx_hidden_ErrorMessage != nil { + return *x.xxx_hidden_ErrorMessage + } + return "" } return "" } func (x *GetTenantConfigResponse) GetCreatedAt() string { if x != nil { - return x.CreatedAt + if x.xxx_hidden_CreatedAt != nil { + return *x.xxx_hidden_CreatedAt + } + return "" } return "" } func (x *GetTenantConfigResponse) GetUpdatedAt() string { if x != nil { - return x.UpdatedAt + if x.xxx_hidden_UpdatedAt != nil { + return *x.xxx_hidden_UpdatedAt + } + return "" } return "" } +func (x *GetTenantConfigResponse) SetTenantId(v string) { + x.xxx_hidden_TenantId = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 6) +} + +func (x *GetTenantConfigResponse) SetValues(v *TenantConfigurationValues) { + x.xxx_hidden_Values = v +} + +func (x *GetTenantConfigResponse) SetStatus(v TenantConfigStatus) { + x.xxx_hidden_Status = v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 2, 6) +} + +func (x *GetTenantConfigResponse) SetErrorMessage(v string) { + x.xxx_hidden_ErrorMessage = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 3, 6) +} + +func (x *GetTenantConfigResponse) SetCreatedAt(v string) { + x.xxx_hidden_CreatedAt = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 4, 6) +} + +func (x *GetTenantConfigResponse) SetUpdatedAt(v string) { + x.xxx_hidden_UpdatedAt = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 5, 6) +} + +func (x *GetTenantConfigResponse) HasTenantId() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 0) +} + +func (x *GetTenantConfigResponse) HasValues() bool { + if x == nil { + return false + } + return x.xxx_hidden_Values != nil +} + +func (x *GetTenantConfigResponse) HasStatus() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 2) +} + +func (x *GetTenantConfigResponse) HasErrorMessage() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 3) +} + +func (x *GetTenantConfigResponse) HasCreatedAt() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 4) +} + +func (x *GetTenantConfigResponse) HasUpdatedAt() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 5) +} + +func (x *GetTenantConfigResponse) ClearTenantId() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0) + x.xxx_hidden_TenantId = nil +} + +func (x *GetTenantConfigResponse) ClearValues() { + x.xxx_hidden_Values = nil +} + +func (x *GetTenantConfigResponse) ClearStatus() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 2) + x.xxx_hidden_Status = TenantConfigStatus_TENANT_CONFIG_STATUS_UNSPECIFIED +} + +func (x *GetTenantConfigResponse) ClearErrorMessage() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 3) + x.xxx_hidden_ErrorMessage = nil +} + +func (x *GetTenantConfigResponse) ClearCreatedAt() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 4) + x.xxx_hidden_CreatedAt = nil +} + +func (x *GetTenantConfigResponse) ClearUpdatedAt() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 5) + x.xxx_hidden_UpdatedAt = nil +} + +type GetTenantConfigResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + TenantId *string + Values *TenantConfigurationValues + Status *TenantConfigStatus + ErrorMessage *string + CreatedAt *string + UpdatedAt *string +} + +func (b0 GetTenantConfigResponse_builder) Build() *GetTenantConfigResponse { + m0 := &GetTenantConfigResponse{} + b, x := &b0, m0 + _, _ = b, x + if b.TenantId != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 6) + x.xxx_hidden_TenantId = b.TenantId + } + x.xxx_hidden_Values = b.Values + if b.Status != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 2, 6) + x.xxx_hidden_Status = *b.Status + } + if b.ErrorMessage != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 3, 6) + x.xxx_hidden_ErrorMessage = b.ErrorMessage + } + if b.CreatedAt != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 4, 6) + x.xxx_hidden_CreatedAt = b.CreatedAt + } + if b.UpdatedAt != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 5, 6) + x.xxx_hidden_UpdatedAt = b.UpdatedAt + } + return m0 +} + type UpdateTenantConfigRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` - Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` - UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"opaque.v1"` + xxx_hidden_TenantId *string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId"` + xxx_hidden_Values *TenantConfigurationValues `protobuf:"bytes,2,opt,name=values"` + xxx_hidden_UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,3,opt,name=update_mask,json=updateMask"` + XXX_raceDetectHookData protoimpl.RaceDetectHookData + XXX_presence [1]uint32 + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateTenantConfigRequest) Reset() { @@ -332,34 +539,105 @@ func (x *UpdateTenantConfigRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateTenantConfigRequest.ProtoReflect.Descriptor instead. -func (*UpdateTenantConfigRequest) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{3} -} - func (x *UpdateTenantConfigRequest) GetTenantId() string { if x != nil { - return x.TenantId + if x.xxx_hidden_TenantId != nil { + return *x.xxx_hidden_TenantId + } + return "" } return "" } func (x *UpdateTenantConfigRequest) GetValues() *TenantConfigurationValues { if x != nil { - return x.Values + return x.xxx_hidden_Values } return nil } func (x *UpdateTenantConfigRequest) GetUpdateMask() *fieldmaskpb.FieldMask { if x != nil { - return x.UpdateMask + return x.xxx_hidden_UpdateMask } return nil } +func (x *UpdateTenantConfigRequest) SetTenantId(v string) { + x.xxx_hidden_TenantId = &v + protoimpl.X.SetPresent(&(x.XXX_presence[0]), 0, 3) +} + +func (x *UpdateTenantConfigRequest) SetValues(v *TenantConfigurationValues) { + x.xxx_hidden_Values = v +} + +func (x *UpdateTenantConfigRequest) SetUpdateMask(v *fieldmaskpb.FieldMask) { + x.xxx_hidden_UpdateMask = v +} + +func (x *UpdateTenantConfigRequest) HasTenantId() bool { + if x == nil { + return false + } + return protoimpl.X.Present(&(x.XXX_presence[0]), 0) +} + +func (x *UpdateTenantConfigRequest) HasValues() bool { + if x == nil { + return false + } + return x.xxx_hidden_Values != nil +} + +func (x *UpdateTenantConfigRequest) HasUpdateMask() bool { + if x == nil { + return false + } + return x.xxx_hidden_UpdateMask != nil +} + +func (x *UpdateTenantConfigRequest) ClearTenantId() { + protoimpl.X.ClearPresent(&(x.XXX_presence[0]), 0) + x.xxx_hidden_TenantId = nil +} + +func (x *UpdateTenantConfigRequest) ClearValues() { + x.xxx_hidden_Values = nil +} + +func (x *UpdateTenantConfigRequest) ClearUpdateMask() { + x.xxx_hidden_UpdateMask = nil +} + +type UpdateTenantConfigRequest_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + + TenantId *string + // Configuration values to apply. Only fields listed in update_mask are written. + Values *TenantConfigurationValues + // Controls which fields in values are applied. Only paths listed here are written. + // To update a field, include its path and set the desired value in values. + // To clear a field back to the system default, include its path in update_mask + // but leave it unset in values. + UpdateMask *fieldmaskpb.FieldMask +} + +func (b0 UpdateTenantConfigRequest_builder) Build() *UpdateTenantConfigRequest { + m0 := &UpdateTenantConfigRequest{} + b, x := &b0, m0 + _, _ = b, x + if b.TenantId != nil { + protoimpl.X.SetPresentNonAtomic(&(x.XXX_presence[0]), 0, 3) + x.xxx_hidden_TenantId = b.TenantId + } + x.xxx_hidden_Values = b.Values + x.xxx_hidden_UpdateMask = b.UpdateMask + return m0 +} + type UpdateTenantConfigResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` + state protoimpl.MessageState `protogen:"opaque.v1"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -389,19 +667,25 @@ func (x *UpdateTenantConfigResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use UpdateTenantConfigResponse.ProtoReflect.Descriptor instead. -func (*UpdateTenantConfigResponse) Descriptor() ([]byte, []int) { - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP(), []int{4} +type UpdateTenantConfigResponse_builder struct { + _ [0]func() // Prevents comparability and use of unkeyed literals for the builder. + +} + +func (b0 UpdateTenantConfigResponse_builder) Build() *UpdateTenantConfigResponse { + m0 := &UpdateTenantConfigResponse{} + b, x := &b0, m0 + _, _ = b, x + return m0 } var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect.FileDescriptor const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + "\n" + - "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a\x1bbuf/validate/validate.proto\x1a google/protobuf/field_mask.proto\"T\n" + - "\x19TenantConfigurationValues\x12&\n" + - "\fsystem_limit\x18\x01 \x01(\x05H\x00R\vsystemLimit\x88\x01\x01B\x0f\n" + - "\r_system_limit\">\n" + + "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a google/protobuf/field_mask.proto\">\n" + + "\x19TenantConfigurationValues\x12!\n" + + "\fsystem_limit\x18\x01 \x01(\x05R\vsystemLimit\">\n" + "\x16GetTenantConfigRequest\x12$\n" + "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\"\xc6\x02\n" + "\x17GetTenantConfigResponse\x12\x1b\n" + @@ -429,19 +713,7 @@ const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = " "\x1bTENANT_CONFIG_ACTION_UPDATE\x10\x012\xbc\x02\n" + "\aService\x12\x92\x01\n" + "\x0fGetTenantConfig\x12=.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigRequest\x1a>.kms.api.cmk.registry.tenant_config.v1.GetTenantConfigResponse\"\x00\x12\x9b\x01\n" + - "\x12UpdateTenantConfig\x12@.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest\x1aA.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse\"\x00BWZUgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1b\x06proto3" - -var ( - file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescOnce sync.Once - file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData []byte -) - -func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescGZIP() []byte { - file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescOnce.Do(func() { - file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc), len(file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc))) - }) - return file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDescData -} + "\x12UpdateTenantConfig\x12@.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigRequest\x1aA.kms.api.cmk.registry.tenant_config.v1.UpdateTenantConfigResponse\"\x00BWZUgithub.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1b\beditionsp\xe9\az\x1bbuf/validate/validate.proto" var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5) @@ -476,7 +748,6 @@ func file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_init() { if File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto != nil { return } - file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_msgTypes[0].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 94c865c..02ff860 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -1,9 +1,9 @@ -syntax = "proto3"; +edition = "2024"; package kms.api.cmk.registry.tenant_config.v1; -import "buf/validate/validate.proto"; import "google/protobuf/field_mask.proto"; +import option "buf/validate/validate.proto"; option go_package = "github.com/openkcm/api-sdk/proto/kms/api/cmk/registry/tenant_config/v1;tenantconfigv1"; @@ -16,7 +16,7 @@ service Service { message TenantConfigurationValues { // Maximum number of systems allowed per key configuration. // Default: system default (global limit). - optional int32 system_limit = 1; + int32 system_limit = 1; } message GetTenantConfigRequest { @@ -34,7 +34,12 @@ message GetTenantConfigResponse { message UpdateTenantConfigRequest { string tenant_id = 1 [(buf.validate.field).string.min_len = 1]; + // Configuration values to apply. Only fields listed in update_mask are written. TenantConfigurationValues values = 2; + // Controls which fields in values are applied. Only paths listed here are written. + // To update a field, include its path and set the desired value in values. + // To clear a field back to the system default, include its path in update_mask + // but leave it unset in values. google.protobuf.FieldMask update_mask = 3; } diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go index 611bbf6..e3e7d53 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.6.2 -// - protoc v5.29.3 +// - protoc-gen-go-grpc v1.6.1 +// - protoc v7.36.1 // source: kms/api/cmk/registry/tenant_config/v1/tenant_config.proto package tenantconfigv1 From 4496dc98824d73018e8131debbf7ea110f0ae228 Mon Sep 17 00:00:00 2001 From: Pawel Szelag Date: Wed, 16 Sep 2026 15:55:55 +0200 Subject: [PATCH 13/13] add validate field Signed-off-by: Pawel Szelag --- .../api/cmk/registry/tenant_config/v1/tenant_config.pb.go | 6 +++--- .../api/cmk/registry/tenant_config/v1/tenant_config.proto | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go index 265e8f3..ff93bc1 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.pb.go @@ -683,9 +683,9 @@ var File_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto protoreflect. const file_kms_api_cmk_registry_tenant_config_v1_tenant_config_proto_rawDesc = "" + "\n" + - "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a google/protobuf/field_mask.proto\">\n" + - "\x19TenantConfigurationValues\x12!\n" + - "\fsystem_limit\x18\x01 \x01(\x05R\vsystemLimit\">\n" + + "9kms/api/cmk/registry/tenant_config/v1/tenant_config.proto\x12%kms.api.cmk.registry.tenant_config.v1\x1a google/protobuf/field_mask.proto\"G\n" + + "\x19TenantConfigurationValues\x12*\n" + + "\fsystem_limit\x18\x01 \x01(\x05B\a\xbaH\x04\x1a\x02(\x01R\vsystemLimit\">\n" + "\x16GetTenantConfigRequest\x12$\n" + "\ttenant_id\x18\x01 \x01(\tB\a\xbaH\x04r\x02\x10\x01R\btenantId\"\xc6\x02\n" + "\x17GetTenantConfigResponse\x12\x1b\n" + diff --git a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto index 02ff860..1530904 100644 --- a/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto +++ b/proto/kms/api/cmk/registry/tenant_config/v1/tenant_config.proto @@ -16,7 +16,7 @@ service Service { message TenantConfigurationValues { // Maximum number of systems allowed per key configuration. // Default: system default (global limit). - int32 system_limit = 1; + int32 system_limit = 1 [(buf.validate.field).int32.gte = 1]; } message GetTenantConfigRequest {