diff --git a/api/illumio/cloud/config/v1/config.pb.go b/api/illumio/cloud/config/v1/config.pb.go index e456e59..08c0e17 100644 --- a/api/illumio/cloud/config/v1/config.pb.go +++ b/api/illumio/cloud/config/v1/config.pb.go @@ -923,6 +923,511 @@ func (x *DeleteAwsFlowLogsS3BucketRequest) GetId() string { return "" } +type CreateAzureSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + ClientSecret string `protobuf:"bytes,3,opt,name=client_secret,json=clientSecret,proto3" json:"client_secret,omitempty"` + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + SubscriptionId string `protobuf:"bytes,6,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + TenantId string `protobuf:"bytes,7,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` +} + +func (x *CreateAzureSubscriptionRequest) Reset() { + *x = CreateAzureSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAzureSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAzureSubscriptionRequest) ProtoMessage() {} + +func (x *CreateAzureSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAzureSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*CreateAzureSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{14} +} + +func (x *CreateAzureSubscriptionRequest) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *CreateAzureSubscriptionRequest) GetClientSecret() string { + if x != nil { + return x.ClientSecret + } + return "" +} + +func (x *CreateAzureSubscriptionRequest) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *CreateAzureSubscriptionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateAzureSubscriptionRequest) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *CreateAzureSubscriptionRequest) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type CreateAzureSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + SubscriptionId string `protobuf:"bytes,6,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + TenantId string `protobuf:"bytes,7,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` +} + +func (x *CreateAzureSubscriptionResponse) Reset() { + *x = CreateAzureSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAzureSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAzureSubscriptionResponse) ProtoMessage() {} + +func (x *CreateAzureSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAzureSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*CreateAzureSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{15} +} + +func (x *CreateAzureSubscriptionResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *CreateAzureSubscriptionResponse) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *CreateAzureSubscriptionResponse) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *CreateAzureSubscriptionResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateAzureSubscriptionResponse) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *CreateAzureSubscriptionResponse) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type ReadAzureSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *ReadAzureSubscriptionRequest) Reset() { + *x = ReadAzureSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadAzureSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadAzureSubscriptionRequest) ProtoMessage() {} + +func (x *ReadAzureSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadAzureSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*ReadAzureSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{16} +} + +func (x *ReadAzureSubscriptionRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type ReadAzureSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + SubscriptionId string `protobuf:"bytes,6,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + TenantId string `protobuf:"bytes,7,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` +} + +func (x *ReadAzureSubscriptionResponse) Reset() { + *x = ReadAzureSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ReadAzureSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ReadAzureSubscriptionResponse) ProtoMessage() {} + +func (x *ReadAzureSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ReadAzureSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*ReadAzureSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{17} +} + +func (x *ReadAzureSubscriptionResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *ReadAzureSubscriptionResponse) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *ReadAzureSubscriptionResponse) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *ReadAzureSubscriptionResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ReadAzureSubscriptionResponse) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *ReadAzureSubscriptionResponse) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type UpdateAzureSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,8,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` +} + +func (x *UpdateAzureSubscriptionRequest) Reset() { + *x = UpdateAzureSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateAzureSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAzureSubscriptionRequest) ProtoMessage() {} + +func (x *UpdateAzureSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAzureSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*UpdateAzureSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{18} +} + +func (x *UpdateAzureSubscriptionRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateAzureSubscriptionRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateAzureSubscriptionRequest) GetUpdateMask() *fieldmaskpb.FieldMask { + if x != nil { + return x.UpdateMask + } + return nil +} + +type UpdateAzureSubscriptionResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + ClientId string `protobuf:"bytes,2,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` + Mode string `protobuf:"bytes,4,opt,name=mode,proto3" json:"mode,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + SubscriptionId string `protobuf:"bytes,6,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` + TenantId string `protobuf:"bytes,7,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` +} + +func (x *UpdateAzureSubscriptionResponse) Reset() { + *x = UpdateAzureSubscriptionResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateAzureSubscriptionResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAzureSubscriptionResponse) ProtoMessage() {} + +func (x *UpdateAzureSubscriptionResponse) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAzureSubscriptionResponse.ProtoReflect.Descriptor instead. +func (*UpdateAzureSubscriptionResponse) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{19} +} + +func (x *UpdateAzureSubscriptionResponse) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateAzureSubscriptionResponse) GetClientId() string { + if x != nil { + return x.ClientId + } + return "" +} + +func (x *UpdateAzureSubscriptionResponse) GetMode() string { + if x != nil { + return x.Mode + } + return "" +} + +func (x *UpdateAzureSubscriptionResponse) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *UpdateAzureSubscriptionResponse) GetSubscriptionId() string { + if x != nil { + return x.SubscriptionId + } + return "" +} + +func (x *UpdateAzureSubscriptionResponse) GetTenantId() string { + if x != nil { + return x.TenantId + } + return "" +} + +type DeleteAzureSubscriptionRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteAzureSubscriptionRequest) Reset() { + *x = DeleteAzureSubscriptionRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteAzureSubscriptionRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAzureSubscriptionRequest) ProtoMessage() {} + +func (x *DeleteAzureSubscriptionRequest) ProtoReflect() protoreflect.Message { + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteAzureSubscriptionRequest.ProtoReflect.Descriptor instead. +func (*DeleteAzureSubscriptionRequest) Descriptor() ([]byte, []int) { + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{20} +} + +func (x *DeleteAzureSubscriptionRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + type CreateK8SClusterOnboardingCredentialRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -936,7 +1441,7 @@ type CreateK8SClusterOnboardingCredentialRequest struct { func (x *CreateK8SClusterOnboardingCredentialRequest) Reset() { *x = CreateK8SClusterOnboardingCredentialRequest{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[14] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -949,7 +1454,7 @@ func (x *CreateK8SClusterOnboardingCredentialRequest) String() string { func (*CreateK8SClusterOnboardingCredentialRequest) ProtoMessage() {} func (x *CreateK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[14] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -962,7 +1467,7 @@ func (x *CreateK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflec // Deprecated: Use CreateK8SClusterOnboardingCredentialRequest.ProtoReflect.Descriptor instead. func (*CreateK8SClusterOnboardingCredentialRequest) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{14} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{21} } func (x *CreateK8SClusterOnboardingCredentialRequest) GetDescription() string { @@ -1003,7 +1508,7 @@ type CreateK8SClusterOnboardingCredentialResponse struct { func (x *CreateK8SClusterOnboardingCredentialResponse) Reset() { *x = CreateK8SClusterOnboardingCredentialResponse{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[15] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1016,7 +1521,7 @@ func (x *CreateK8SClusterOnboardingCredentialResponse) String() string { func (*CreateK8SClusterOnboardingCredentialResponse) ProtoMessage() {} func (x *CreateK8SClusterOnboardingCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[15] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1029,7 +1534,7 @@ func (x *CreateK8SClusterOnboardingCredentialResponse) ProtoReflect() protorefle // Deprecated: Use CreateK8SClusterOnboardingCredentialResponse.ProtoReflect.Descriptor instead. func (*CreateK8SClusterOnboardingCredentialResponse) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{15} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{22} } func (x *CreateK8SClusterOnboardingCredentialResponse) GetId() string { @@ -1092,7 +1597,7 @@ type ReadK8SClusterOnboardingCredentialRequest struct { func (x *ReadK8SClusterOnboardingCredentialRequest) Reset() { *x = ReadK8SClusterOnboardingCredentialRequest{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[16] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1105,7 +1610,7 @@ func (x *ReadK8SClusterOnboardingCredentialRequest) String() string { func (*ReadK8SClusterOnboardingCredentialRequest) ProtoMessage() {} func (x *ReadK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[16] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1118,7 +1623,7 @@ func (x *ReadK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflect. // Deprecated: Use ReadK8SClusterOnboardingCredentialRequest.ProtoReflect.Descriptor instead. func (*ReadK8SClusterOnboardingCredentialRequest) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{16} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{23} } func (x *ReadK8SClusterOnboardingCredentialRequest) GetId() string { @@ -1144,7 +1649,7 @@ type ReadK8SClusterOnboardingCredentialResponse struct { func (x *ReadK8SClusterOnboardingCredentialResponse) Reset() { *x = ReadK8SClusterOnboardingCredentialResponse{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[17] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1157,7 +1662,7 @@ func (x *ReadK8SClusterOnboardingCredentialResponse) String() string { func (*ReadK8SClusterOnboardingCredentialResponse) ProtoMessage() {} func (x *ReadK8SClusterOnboardingCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[17] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1170,7 +1675,7 @@ func (x *ReadK8SClusterOnboardingCredentialResponse) ProtoReflect() protoreflect // Deprecated: Use ReadK8SClusterOnboardingCredentialResponse.ProtoReflect.Descriptor instead. func (*ReadK8SClusterOnboardingCredentialResponse) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{17} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{24} } func (x *ReadK8SClusterOnboardingCredentialResponse) GetId() string { @@ -1229,7 +1734,7 @@ type UpdateK8SClusterOnboardingCredentialRequest struct { func (x *UpdateK8SClusterOnboardingCredentialRequest) Reset() { *x = UpdateK8SClusterOnboardingCredentialRequest{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[18] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1242,7 +1747,7 @@ func (x *UpdateK8SClusterOnboardingCredentialRequest) String() string { func (*UpdateK8SClusterOnboardingCredentialRequest) ProtoMessage() {} func (x *UpdateK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[18] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1255,7 +1760,7 @@ func (x *UpdateK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflec // Deprecated: Use UpdateK8SClusterOnboardingCredentialRequest.ProtoReflect.Descriptor instead. func (*UpdateK8SClusterOnboardingCredentialRequest) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{18} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{25} } func (x *UpdateK8SClusterOnboardingCredentialRequest) GetId() string { @@ -1302,7 +1807,7 @@ type UpdateK8SClusterOnboardingCredentialResponse struct { func (x *UpdateK8SClusterOnboardingCredentialResponse) Reset() { *x = UpdateK8SClusterOnboardingCredentialResponse{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[19] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1315,7 +1820,7 @@ func (x *UpdateK8SClusterOnboardingCredentialResponse) String() string { func (*UpdateK8SClusterOnboardingCredentialResponse) ProtoMessage() {} func (x *UpdateK8SClusterOnboardingCredentialResponse) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[19] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1328,7 +1833,7 @@ func (x *UpdateK8SClusterOnboardingCredentialResponse) ProtoReflect() protorefle // Deprecated: Use UpdateK8SClusterOnboardingCredentialResponse.ProtoReflect.Descriptor instead. func (*UpdateK8SClusterOnboardingCredentialResponse) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{19} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{26} } func (x *UpdateK8SClusterOnboardingCredentialResponse) GetId() string { @@ -1384,7 +1889,7 @@ type DeleteK8SClusterOnboardingCredentialRequest struct { func (x *DeleteK8SClusterOnboardingCredentialRequest) Reset() { *x = DeleteK8SClusterOnboardingCredentialRequest{} if protoimpl.UnsafeEnabled { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[20] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1397,7 +1902,7 @@ func (x *DeleteK8SClusterOnboardingCredentialRequest) String() string { func (*DeleteK8SClusterOnboardingCredentialRequest) ProtoMessage() {} func (x *DeleteK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflect.Message { - mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[20] + mi := &file_illumio_cloud_config_v1_config_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1410,7 +1915,7 @@ func (x *DeleteK8SClusterOnboardingCredentialRequest) ProtoReflect() protoreflec // Deprecated: Use DeleteK8SClusterOnboardingCredentialRequest.ProtoReflect.Descriptor instead. func (*DeleteK8SClusterOnboardingCredentialRequest) Descriptor() ([]byte, []int) { - return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{20} + return file_illumio_cloud_config_v1_config_proto_rawDescGZIP(), []int{27} } func (x *DeleteK8SClusterOnboardingCredentialRequest) GetId() string { @@ -1539,27 +2044,73 @@ var file_illumio_cloud_config_v1_config_proto_rawDesc = []byte{ 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x41, 0x72, 0x6e, 0x22, 0x32, 0x0a, 0x20, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x9f, 0x01, - 0x0a, 0x2b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5f, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6c, - 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, - 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, - 0x91, 0x02, 0x0a, 0x2c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, - 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, - 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0xd0, 0x01, + 0x0a, 0x1e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, - 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, + 0x22, 0xbc, 0x01, 0x0a, 0x1f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x2e, 0x0a, 0x1c, 0x52, 0x65, 0x61, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, + 0xba, 0x01, 0x0a, 0x1d, 0x52, 0x65, 0x61, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x6f, + 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x81, 0x01, 0x0a, + 0x1e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, + 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, + 0x22, 0xbc, 0x01, 0x0a, 0x1f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x65, 0x6e, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x22, + 0x30, 0x0a, 0x1e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x9f, 0x01, 0x0a, 0x2b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6c, 0x6c, 0x75, @@ -1567,180 +2118,230 @@ var file_illumio_cloud_config_v1_config_proto_rawDesc = []byte{ 0x52, 0x0d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x29, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, - 0x22, 0xea, 0x01, 0x0a, 0x2a, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, - 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, - 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5f, 0x72, 0x65, - 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6c, 0x6c, 0x75, - 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, - 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xc5, 0x01, - 0x0a, 0x2b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, 0x75, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xec, 0x01, 0x0a, 0x2c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6c, 0x6c, - 0x75, 0x6d, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3d, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x38, + 0x69, 0x6f, 0x6e, 0x22, 0x91, 0x02, 0x0a, 0x2c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x02, 0x69, 0x64, 0x32, 0x9e, 0x0d, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x65, 0x63, 0x72, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3b, 0x0a, 0x29, 0x52, 0x65, 0x61, 0x64, 0x4b, + 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x22, 0xea, 0x01, 0x0a, 0x2a, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, + 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, + 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, + 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, + 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xc5, 0x01, 0x0a, 0x2b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, + 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xec, 0x01, 0x0a, 0x2c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, + 0x0e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x52, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x3d, 0x0a, 0x2b, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x32, 0xb1, 0x11, 0x0a, 0x0d, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x2e, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, + 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x31, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x71, 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x71, - 0x0a, 0x0e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x2e, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, - 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, - 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x77, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, - 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, 0x0a, 0x10, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x30, - 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, - 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x92, 0x01, 0x0a, 0x19, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, - 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x39, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, - 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, - 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, - 0x0a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, - 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x37, 0x2e, 0x69, 0x6c, 0x6c, 0x75, - 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, - 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, - 0x64, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, - 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x92, 0x01, 0x0a, - 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, + 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5c, + 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x30, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x92, 0x01, 0x0a, + 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x39, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x6e, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, + 0x65, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, + 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x37, 0x2e, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x46, + 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, + 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x92, 0x01, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x39, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, - 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x12, 0xb3, 0x01, 0x0a, 0x24, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, - 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, - 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x2e, 0x69, 0x6c, 0x6c, + 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3a, 0x2e, 0x69, 0x6c, 0x6c, 0x75, + 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, + 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6e, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, + 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, 0x42, 0x75, 0x63, 0x6b, + 0x65, 0x74, 0x12, 0x39, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x77, 0x73, 0x46, 0x6c, 0x6f, 0x77, 0x4c, 0x6f, 0x67, 0x73, 0x53, 0x33, + 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x8c, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x37, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, - 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, - 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x45, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x61, 0x64, - 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x42, + 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x52, 0x65, 0x61, 0x64, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, - 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, - 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb3, 0x01, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x41, 0x7a, 0x75, + 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x8c, 0x01, + 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x69, 0x6c, 0x6c, 0x75, + 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x38, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x17, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, + 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x7a, 0x75, 0x72, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0xb3, 0x01, 0x0a, 0x24, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, + 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, + 0x6c, 0x12, 0x44, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, - 0x12, 0x44, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, - 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, - 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, - 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, + 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, - 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xad, + 0x01, 0x0a, 0x22, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x42, 0x89, 0x02, 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x6c, 0x6c, - 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x5e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2f, 0x74, 0x65, 0x72, 0x72, 0x61, 0x66, 0x6f, 0x72, - 0x6d, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x2d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, - 0x69, 0x6f, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, 0x31, 0x3b, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x49, 0x43, 0x43, 0xaa, 0x02, 0x17, 0x49, 0x6c, 0x6c, 0x75, - 0x6d, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x49, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5c, 0x43, 0x6c, - 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x23, - 0x49, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x1a, 0x49, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x3a, 0x3a, 0x43, - 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x42, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, + 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x69, 0x6c, 0x6c, 0x75, + 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0xb3, + 0x01, 0x0a, 0x24, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, + 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, + 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, + 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x45, 0x2e, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x38, + 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x24, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, + 0x38, 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x12, 0x44, 0x2e, + 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x38, + 0x53, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x62, 0x6f, 0x61, 0x72, 0x64, 0x69, + 0x6e, 0x67, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x42, 0x89, 0x02, 0x0a, 0x1b, + 0x63, 0x6f, 0x6d, 0x2e, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x5e, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2f, 0x74, + 0x65, 0x72, 0x72, 0x61, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x2d, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x73, + 0x65, 0x63, 0x75, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6c, 0x6c, 0x75, 0x6d, 0x69, + 0x6f, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2f, 0x76, + 0x31, 0x3b, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x49, 0x43, 0x43, + 0xaa, 0x02, 0x17, 0x49, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x17, 0x49, 0x6c, 0x6c, + 0x75, 0x6d, 0x69, 0x6f, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x23, 0x49, 0x6c, 0x6c, 0x75, 0x6d, 0x69, 0x6f, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x1a, 0x49, 0x6c, 0x6c, + 0x75, 0x6d, 0x69, 0x6f, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1755,7 +2356,7 @@ func file_illumio_cloud_config_v1_config_proto_rawDescGZIP() []byte { return file_illumio_cloud_config_v1_config_proto_rawDescData } -var file_illumio_cloud_config_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_illumio_cloud_config_v1_config_proto_msgTypes = make([]protoimpl.MessageInfo, 28) var file_illumio_cloud_config_v1_config_proto_goTypes = []any{ (*CreateAwsAccountRequest)(nil), // 0: illumio.cloud.config.v1.CreateAwsAccountRequest (*CreateAwsAccountResponse)(nil), // 1: illumio.cloud.config.v1.CreateAwsAccountResponse @@ -1771,49 +2372,65 @@ var file_illumio_cloud_config_v1_config_proto_goTypes = []any{ (*UpdateAwsFlowLogsS3BucketRequest)(nil), // 11: illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketRequest (*UpdateAwsFlowLogsS3BucketResponse)(nil), // 12: illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketResponse (*DeleteAwsFlowLogsS3BucketRequest)(nil), // 13: illumio.cloud.config.v1.DeleteAwsFlowLogsS3BucketRequest - (*CreateK8SClusterOnboardingCredentialRequest)(nil), // 14: illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialRequest - (*CreateK8SClusterOnboardingCredentialResponse)(nil), // 15: illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialResponse - (*ReadK8SClusterOnboardingCredentialRequest)(nil), // 16: illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialRequest - (*ReadK8SClusterOnboardingCredentialResponse)(nil), // 17: illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialResponse - (*UpdateK8SClusterOnboardingCredentialRequest)(nil), // 18: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest - (*UpdateK8SClusterOnboardingCredentialResponse)(nil), // 19: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialResponse - (*DeleteK8SClusterOnboardingCredentialRequest)(nil), // 20: illumio.cloud.config.v1.DeleteK8SClusterOnboardingCredentialRequest - (*fieldmaskpb.FieldMask)(nil), // 21: google.protobuf.FieldMask - (*emptypb.Empty)(nil), // 22: google.protobuf.Empty + (*CreateAzureSubscriptionRequest)(nil), // 14: illumio.cloud.config.v1.CreateAzureSubscriptionRequest + (*CreateAzureSubscriptionResponse)(nil), // 15: illumio.cloud.config.v1.CreateAzureSubscriptionResponse + (*ReadAzureSubscriptionRequest)(nil), // 16: illumio.cloud.config.v1.ReadAzureSubscriptionRequest + (*ReadAzureSubscriptionResponse)(nil), // 17: illumio.cloud.config.v1.ReadAzureSubscriptionResponse + (*UpdateAzureSubscriptionRequest)(nil), // 18: illumio.cloud.config.v1.UpdateAzureSubscriptionRequest + (*UpdateAzureSubscriptionResponse)(nil), // 19: illumio.cloud.config.v1.UpdateAzureSubscriptionResponse + (*DeleteAzureSubscriptionRequest)(nil), // 20: illumio.cloud.config.v1.DeleteAzureSubscriptionRequest + (*CreateK8SClusterOnboardingCredentialRequest)(nil), // 21: illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialRequest + (*CreateK8SClusterOnboardingCredentialResponse)(nil), // 22: illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialResponse + (*ReadK8SClusterOnboardingCredentialRequest)(nil), // 23: illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialRequest + (*ReadK8SClusterOnboardingCredentialResponse)(nil), // 24: illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialResponse + (*UpdateK8SClusterOnboardingCredentialRequest)(nil), // 25: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest + (*UpdateK8SClusterOnboardingCredentialResponse)(nil), // 26: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialResponse + (*DeleteK8SClusterOnboardingCredentialRequest)(nil), // 27: illumio.cloud.config.v1.DeleteK8SClusterOnboardingCredentialRequest + (*fieldmaskpb.FieldMask)(nil), // 28: google.protobuf.FieldMask + (*emptypb.Empty)(nil), // 29: google.protobuf.Empty } var file_illumio_cloud_config_v1_config_proto_depIdxs = []int32{ - 21, // 0: illumio.cloud.config.v1.UpdateAwsAccountRequest.update_mask:type_name -> google.protobuf.FieldMask - 21, // 1: illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketRequest.update_mask:type_name -> google.protobuf.FieldMask - 21, // 2: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest.update_mask:type_name -> google.protobuf.FieldMask - 0, // 3: illumio.cloud.config.v1.ConfigService.CreateAwsAccount:input_type -> illumio.cloud.config.v1.CreateAwsAccountRequest - 2, // 4: illumio.cloud.config.v1.ConfigService.ReadAwsAccount:input_type -> illumio.cloud.config.v1.ReadAwsAccountRequest - 4, // 5: illumio.cloud.config.v1.ConfigService.UpdateAwsAccount:input_type -> illumio.cloud.config.v1.UpdateAwsAccountRequest - 6, // 6: illumio.cloud.config.v1.ConfigService.DeleteAwsAccount:input_type -> illumio.cloud.config.v1.DeleteAwsAccountRequest - 7, // 7: illumio.cloud.config.v1.ConfigService.CreateAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.CreateAwsFlowLogsS3BucketRequest - 9, // 8: illumio.cloud.config.v1.ConfigService.ReadAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.ReadAwsFlowLogsS3BucketRequest - 11, // 9: illumio.cloud.config.v1.ConfigService.UpdateAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketRequest - 13, // 10: illumio.cloud.config.v1.ConfigService.DeleteAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.DeleteAwsFlowLogsS3BucketRequest - 14, // 11: illumio.cloud.config.v1.ConfigService.CreateK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialRequest - 16, // 12: illumio.cloud.config.v1.ConfigService.ReadK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialRequest - 18, // 13: illumio.cloud.config.v1.ConfigService.UpdateK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest - 20, // 14: illumio.cloud.config.v1.ConfigService.DeleteK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.DeleteK8SClusterOnboardingCredentialRequest - 1, // 15: illumio.cloud.config.v1.ConfigService.CreateAwsAccount:output_type -> illumio.cloud.config.v1.CreateAwsAccountResponse - 3, // 16: illumio.cloud.config.v1.ConfigService.ReadAwsAccount:output_type -> illumio.cloud.config.v1.ReadAwsAccountResponse - 5, // 17: illumio.cloud.config.v1.ConfigService.UpdateAwsAccount:output_type -> illumio.cloud.config.v1.UpdateAwsAccountResponse - 22, // 18: illumio.cloud.config.v1.ConfigService.DeleteAwsAccount:output_type -> google.protobuf.Empty - 8, // 19: illumio.cloud.config.v1.ConfigService.CreateAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.CreateAwsFlowLogsS3BucketResponse - 10, // 20: illumio.cloud.config.v1.ConfigService.ReadAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.ReadAwsFlowLogsS3BucketResponse - 12, // 21: illumio.cloud.config.v1.ConfigService.UpdateAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketResponse - 22, // 22: illumio.cloud.config.v1.ConfigService.DeleteAwsFlowLogsS3Bucket:output_type -> google.protobuf.Empty - 15, // 23: illumio.cloud.config.v1.ConfigService.CreateK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialResponse - 17, // 24: illumio.cloud.config.v1.ConfigService.ReadK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialResponse - 19, // 25: illumio.cloud.config.v1.ConfigService.UpdateK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialResponse - 22, // 26: illumio.cloud.config.v1.ConfigService.DeleteK8SClusterOnboardingCredential:output_type -> google.protobuf.Empty - 15, // [15:27] is the sub-list for method output_type - 3, // [3:15] 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 + 28, // 0: illumio.cloud.config.v1.UpdateAwsAccountRequest.update_mask:type_name -> google.protobuf.FieldMask + 28, // 1: illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketRequest.update_mask:type_name -> google.protobuf.FieldMask + 28, // 2: illumio.cloud.config.v1.UpdateAzureSubscriptionRequest.update_mask:type_name -> google.protobuf.FieldMask + 28, // 3: illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest.update_mask:type_name -> google.protobuf.FieldMask + 0, // 4: illumio.cloud.config.v1.ConfigService.CreateAwsAccount:input_type -> illumio.cloud.config.v1.CreateAwsAccountRequest + 2, // 5: illumio.cloud.config.v1.ConfigService.ReadAwsAccount:input_type -> illumio.cloud.config.v1.ReadAwsAccountRequest + 4, // 6: illumio.cloud.config.v1.ConfigService.UpdateAwsAccount:input_type -> illumio.cloud.config.v1.UpdateAwsAccountRequest + 6, // 7: illumio.cloud.config.v1.ConfigService.DeleteAwsAccount:input_type -> illumio.cloud.config.v1.DeleteAwsAccountRequest + 7, // 8: illumio.cloud.config.v1.ConfigService.CreateAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.CreateAwsFlowLogsS3BucketRequest + 9, // 9: illumio.cloud.config.v1.ConfigService.ReadAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.ReadAwsFlowLogsS3BucketRequest + 11, // 10: illumio.cloud.config.v1.ConfigService.UpdateAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketRequest + 13, // 11: illumio.cloud.config.v1.ConfigService.DeleteAwsFlowLogsS3Bucket:input_type -> illumio.cloud.config.v1.DeleteAwsFlowLogsS3BucketRequest + 14, // 12: illumio.cloud.config.v1.ConfigService.CreateAzureSubscription:input_type -> illumio.cloud.config.v1.CreateAzureSubscriptionRequest + 16, // 13: illumio.cloud.config.v1.ConfigService.ReadAzureSubscription:input_type -> illumio.cloud.config.v1.ReadAzureSubscriptionRequest + 18, // 14: illumio.cloud.config.v1.ConfigService.UpdateAzureSubscription:input_type -> illumio.cloud.config.v1.UpdateAzureSubscriptionRequest + 20, // 15: illumio.cloud.config.v1.ConfigService.DeleteAzureSubscription:input_type -> illumio.cloud.config.v1.DeleteAzureSubscriptionRequest + 21, // 16: illumio.cloud.config.v1.ConfigService.CreateK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialRequest + 23, // 17: illumio.cloud.config.v1.ConfigService.ReadK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialRequest + 25, // 18: illumio.cloud.config.v1.ConfigService.UpdateK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialRequest + 27, // 19: illumio.cloud.config.v1.ConfigService.DeleteK8SClusterOnboardingCredential:input_type -> illumio.cloud.config.v1.DeleteK8SClusterOnboardingCredentialRequest + 1, // 20: illumio.cloud.config.v1.ConfigService.CreateAwsAccount:output_type -> illumio.cloud.config.v1.CreateAwsAccountResponse + 3, // 21: illumio.cloud.config.v1.ConfigService.ReadAwsAccount:output_type -> illumio.cloud.config.v1.ReadAwsAccountResponse + 5, // 22: illumio.cloud.config.v1.ConfigService.UpdateAwsAccount:output_type -> illumio.cloud.config.v1.UpdateAwsAccountResponse + 29, // 23: illumio.cloud.config.v1.ConfigService.DeleteAwsAccount:output_type -> google.protobuf.Empty + 8, // 24: illumio.cloud.config.v1.ConfigService.CreateAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.CreateAwsFlowLogsS3BucketResponse + 10, // 25: illumio.cloud.config.v1.ConfigService.ReadAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.ReadAwsFlowLogsS3BucketResponse + 12, // 26: illumio.cloud.config.v1.ConfigService.UpdateAwsFlowLogsS3Bucket:output_type -> illumio.cloud.config.v1.UpdateAwsFlowLogsS3BucketResponse + 29, // 27: illumio.cloud.config.v1.ConfigService.DeleteAwsFlowLogsS3Bucket:output_type -> google.protobuf.Empty + 15, // 28: illumio.cloud.config.v1.ConfigService.CreateAzureSubscription:output_type -> illumio.cloud.config.v1.CreateAzureSubscriptionResponse + 17, // 29: illumio.cloud.config.v1.ConfigService.ReadAzureSubscription:output_type -> illumio.cloud.config.v1.ReadAzureSubscriptionResponse + 19, // 30: illumio.cloud.config.v1.ConfigService.UpdateAzureSubscription:output_type -> illumio.cloud.config.v1.UpdateAzureSubscriptionResponse + 29, // 31: illumio.cloud.config.v1.ConfigService.DeleteAzureSubscription:output_type -> google.protobuf.Empty + 22, // 32: illumio.cloud.config.v1.ConfigService.CreateK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.CreateK8SClusterOnboardingCredentialResponse + 24, // 33: illumio.cloud.config.v1.ConfigService.ReadK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.ReadK8SClusterOnboardingCredentialResponse + 26, // 34: illumio.cloud.config.v1.ConfigService.UpdateK8SClusterOnboardingCredential:output_type -> illumio.cloud.config.v1.UpdateK8SClusterOnboardingCredentialResponse + 29, // 35: illumio.cloud.config.v1.ConfigService.DeleteK8SClusterOnboardingCredential:output_type -> google.protobuf.Empty + 20, // [20:36] is the sub-list for method output_type + 4, // [4:20] 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_illumio_cloud_config_v1_config_proto_init() } @@ -1991,7 +2608,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[14].Exporter = func(v any, i int) any { - switch v := v.(*CreateK8SClusterOnboardingCredentialRequest); i { + switch v := v.(*CreateAzureSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2003,7 +2620,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[15].Exporter = func(v any, i int) any { - switch v := v.(*CreateK8SClusterOnboardingCredentialResponse); i { + switch v := v.(*CreateAzureSubscriptionResponse); i { case 0: return &v.state case 1: @@ -2015,7 +2632,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[16].Exporter = func(v any, i int) any { - switch v := v.(*ReadK8SClusterOnboardingCredentialRequest); i { + switch v := v.(*ReadAzureSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2027,7 +2644,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[17].Exporter = func(v any, i int) any { - switch v := v.(*ReadK8SClusterOnboardingCredentialResponse); i { + switch v := v.(*ReadAzureSubscriptionResponse); i { case 0: return &v.state case 1: @@ -2039,7 +2656,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[18].Exporter = func(v any, i int) any { - switch v := v.(*UpdateK8SClusterOnboardingCredentialRequest); i { + switch v := v.(*UpdateAzureSubscriptionRequest); i { case 0: return &v.state case 1: @@ -2051,7 +2668,7 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[19].Exporter = func(v any, i int) any { - switch v := v.(*UpdateK8SClusterOnboardingCredentialResponse); i { + switch v := v.(*UpdateAzureSubscriptionResponse); i { case 0: return &v.state case 1: @@ -2063,6 +2680,90 @@ func file_illumio_cloud_config_v1_config_proto_init() { } } file_illumio_cloud_config_v1_config_proto_msgTypes[20].Exporter = func(v any, i int) any { + switch v := v.(*DeleteAzureSubscriptionRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[21].Exporter = func(v any, i int) any { + switch v := v.(*CreateK8SClusterOnboardingCredentialRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[22].Exporter = func(v any, i int) any { + switch v := v.(*CreateK8SClusterOnboardingCredentialResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[23].Exporter = func(v any, i int) any { + switch v := v.(*ReadK8SClusterOnboardingCredentialRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[24].Exporter = func(v any, i int) any { + switch v := v.(*ReadK8SClusterOnboardingCredentialResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[25].Exporter = func(v any, i int) any { + switch v := v.(*UpdateK8SClusterOnboardingCredentialRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[26].Exporter = func(v any, i int) any { + switch v := v.(*UpdateK8SClusterOnboardingCredentialResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_illumio_cloud_config_v1_config_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*DeleteK8SClusterOnboardingCredentialRequest); i { case 0: return &v.state @@ -2079,18 +2780,18 @@ func file_illumio_cloud_config_v1_config_proto_init() { file_illumio_cloud_config_v1_config_proto_msgTypes[1].OneofWrappers = []any{} file_illumio_cloud_config_v1_config_proto_msgTypes[3].OneofWrappers = []any{} file_illumio_cloud_config_v1_config_proto_msgTypes[5].OneofWrappers = []any{} - file_illumio_cloud_config_v1_config_proto_msgTypes[14].OneofWrappers = []any{} - file_illumio_cloud_config_v1_config_proto_msgTypes[15].OneofWrappers = []any{} - file_illumio_cloud_config_v1_config_proto_msgTypes[17].OneofWrappers = []any{} - file_illumio_cloud_config_v1_config_proto_msgTypes[18].OneofWrappers = []any{} - file_illumio_cloud_config_v1_config_proto_msgTypes[19].OneofWrappers = []any{} + file_illumio_cloud_config_v1_config_proto_msgTypes[21].OneofWrappers = []any{} + file_illumio_cloud_config_v1_config_proto_msgTypes[22].OneofWrappers = []any{} + file_illumio_cloud_config_v1_config_proto_msgTypes[24].OneofWrappers = []any{} + file_illumio_cloud_config_v1_config_proto_msgTypes[25].OneofWrappers = []any{} + file_illumio_cloud_config_v1_config_proto_msgTypes[26].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_illumio_cloud_config_v1_config_proto_rawDesc, NumEnums: 0, - NumMessages: 21, + NumMessages: 28, NumExtensions: 0, NumServices: 1, }, diff --git a/api/illumio/cloud/config/v1/config.proto b/api/illumio/cloud/config/v1/config.proto index a981962..853abe2 100644 --- a/api/illumio/cloud/config/v1/config.proto +++ b/api/illumio/cloud/config/v1/config.proto @@ -14,6 +14,10 @@ service ConfigService { rpc ReadAwsFlowLogsS3Bucket(ReadAwsFlowLogsS3BucketRequest) returns (ReadAwsFlowLogsS3BucketResponse); rpc UpdateAwsFlowLogsS3Bucket(UpdateAwsFlowLogsS3BucketRequest) returns (UpdateAwsFlowLogsS3BucketResponse); rpc DeleteAwsFlowLogsS3Bucket(DeleteAwsFlowLogsS3BucketRequest) returns (google.protobuf.Empty); + rpc CreateAzureSubscription(CreateAzureSubscriptionRequest) returns (CreateAzureSubscriptionResponse); + rpc ReadAzureSubscription(ReadAzureSubscriptionRequest) returns (ReadAzureSubscriptionResponse); + rpc UpdateAzureSubscription(UpdateAzureSubscriptionRequest) returns (UpdateAzureSubscriptionResponse); + rpc DeleteAzureSubscription(DeleteAzureSubscriptionRequest) returns (google.protobuf.Empty); rpc CreateK8SClusterOnboardingCredential(CreateK8SClusterOnboardingCredentialRequest) returns (CreateK8SClusterOnboardingCredentialResponse); rpc ReadK8SClusterOnboardingCredential(ReadK8SClusterOnboardingCredentialRequest) returns (ReadK8SClusterOnboardingCredentialResponse); rpc UpdateK8SClusterOnboardingCredential(UpdateK8SClusterOnboardingCredentialRequest) returns (UpdateK8SClusterOnboardingCredentialResponse); @@ -91,6 +95,49 @@ message UpdateAwsFlowLogsS3BucketResponse { message DeleteAwsFlowLogsS3BucketRequest { string id = 1; } +message CreateAzureSubscriptionRequest { + string client_id = 2; + string client_secret = 3; + string mode = 4; + string name = 5; + string subscription_id = 6; + string tenant_id = 7; +} +message CreateAzureSubscriptionResponse { + string id = 1; + string client_id = 2; + string mode = 4; + string name = 5; + string subscription_id = 6; + string tenant_id = 7; +} +message ReadAzureSubscriptionRequest { + string id = 1; +} +message ReadAzureSubscriptionResponse { + string id = 1; + string client_id = 2; + string mode = 4; + string name = 5; + string subscription_id = 6; + string tenant_id = 7; +} +message UpdateAzureSubscriptionRequest { + string id = 1; + string name = 5; + google.protobuf.FieldMask update_mask = 8; +} +message UpdateAzureSubscriptionResponse { + string id = 1; + string client_id = 2; + string mode = 4; + string name = 5; + string subscription_id = 6; + string tenant_id = 7; +} +message DeleteAzureSubscriptionRequest { + string id = 1; +} message CreateK8SClusterOnboardingCredentialRequest { optional string description = 5; string illumio_region = 6; diff --git a/api/illumio/cloud/config/v1/config_grpc.pb.go b/api/illumio/cloud/config/v1/config_grpc.pb.go index b12f3aa..e01593f 100644 --- a/api/illumio/cloud/config/v1/config_grpc.pb.go +++ b/api/illumio/cloud/config/v1/config_grpc.pb.go @@ -31,6 +31,10 @@ const ( ConfigService_ReadAwsFlowLogsS3Bucket_FullMethodName = "/illumio.cloud.config.v1.ConfigService/ReadAwsFlowLogsS3Bucket" ConfigService_UpdateAwsFlowLogsS3Bucket_FullMethodName = "/illumio.cloud.config.v1.ConfigService/UpdateAwsFlowLogsS3Bucket" ConfigService_DeleteAwsFlowLogsS3Bucket_FullMethodName = "/illumio.cloud.config.v1.ConfigService/DeleteAwsFlowLogsS3Bucket" + ConfigService_CreateAzureSubscription_FullMethodName = "/illumio.cloud.config.v1.ConfigService/CreateAzureSubscription" + ConfigService_ReadAzureSubscription_FullMethodName = "/illumio.cloud.config.v1.ConfigService/ReadAzureSubscription" + ConfigService_UpdateAzureSubscription_FullMethodName = "/illumio.cloud.config.v1.ConfigService/UpdateAzureSubscription" + ConfigService_DeleteAzureSubscription_FullMethodName = "/illumio.cloud.config.v1.ConfigService/DeleteAzureSubscription" ConfigService_CreateK8SClusterOnboardingCredential_FullMethodName = "/illumio.cloud.config.v1.ConfigService/CreateK8SClusterOnboardingCredential" ConfigService_ReadK8SClusterOnboardingCredential_FullMethodName = "/illumio.cloud.config.v1.ConfigService/ReadK8SClusterOnboardingCredential" ConfigService_UpdateK8SClusterOnboardingCredential_FullMethodName = "/illumio.cloud.config.v1.ConfigService/UpdateK8SClusterOnboardingCredential" @@ -49,6 +53,10 @@ type ConfigServiceClient interface { ReadAwsFlowLogsS3Bucket(ctx context.Context, in *ReadAwsFlowLogsS3BucketRequest, opts ...grpc.CallOption) (*ReadAwsFlowLogsS3BucketResponse, error) UpdateAwsFlowLogsS3Bucket(ctx context.Context, in *UpdateAwsFlowLogsS3BucketRequest, opts ...grpc.CallOption) (*UpdateAwsFlowLogsS3BucketResponse, error) DeleteAwsFlowLogsS3Bucket(ctx context.Context, in *DeleteAwsFlowLogsS3BucketRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) + CreateAzureSubscription(ctx context.Context, in *CreateAzureSubscriptionRequest, opts ...grpc.CallOption) (*CreateAzureSubscriptionResponse, error) + ReadAzureSubscription(ctx context.Context, in *ReadAzureSubscriptionRequest, opts ...grpc.CallOption) (*ReadAzureSubscriptionResponse, error) + UpdateAzureSubscription(ctx context.Context, in *UpdateAzureSubscriptionRequest, opts ...grpc.CallOption) (*UpdateAzureSubscriptionResponse, error) + DeleteAzureSubscription(ctx context.Context, in *DeleteAzureSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) CreateK8SClusterOnboardingCredential(ctx context.Context, in *CreateK8SClusterOnboardingCredentialRequest, opts ...grpc.CallOption) (*CreateK8SClusterOnboardingCredentialResponse, error) ReadK8SClusterOnboardingCredential(ctx context.Context, in *ReadK8SClusterOnboardingCredentialRequest, opts ...grpc.CallOption) (*ReadK8SClusterOnboardingCredentialResponse, error) UpdateK8SClusterOnboardingCredential(ctx context.Context, in *UpdateK8SClusterOnboardingCredentialRequest, opts ...grpc.CallOption) (*UpdateK8SClusterOnboardingCredentialResponse, error) @@ -143,6 +151,46 @@ func (c *configServiceClient) DeleteAwsFlowLogsS3Bucket(ctx context.Context, in return out, nil } +func (c *configServiceClient) CreateAzureSubscription(ctx context.Context, in *CreateAzureSubscriptionRequest, opts ...grpc.CallOption) (*CreateAzureSubscriptionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(CreateAzureSubscriptionResponse) + err := c.cc.Invoke(ctx, ConfigService_CreateAzureSubscription_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceClient) ReadAzureSubscription(ctx context.Context, in *ReadAzureSubscriptionRequest, opts ...grpc.CallOption) (*ReadAzureSubscriptionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ReadAzureSubscriptionResponse) + err := c.cc.Invoke(ctx, ConfigService_ReadAzureSubscription_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceClient) UpdateAzureSubscription(ctx context.Context, in *UpdateAzureSubscriptionRequest, opts ...grpc.CallOption) (*UpdateAzureSubscriptionResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(UpdateAzureSubscriptionResponse) + err := c.cc.Invoke(ctx, ConfigService_UpdateAzureSubscription_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *configServiceClient) DeleteAzureSubscription(ctx context.Context, in *DeleteAzureSubscriptionRequest, opts ...grpc.CallOption) (*emptypb.Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(emptypb.Empty) + err := c.cc.Invoke(ctx, ConfigService_DeleteAzureSubscription_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *configServiceClient) CreateK8SClusterOnboardingCredential(ctx context.Context, in *CreateK8SClusterOnboardingCredentialRequest, opts ...grpc.CallOption) (*CreateK8SClusterOnboardingCredentialResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CreateK8SClusterOnboardingCredentialResponse) @@ -195,6 +243,10 @@ type ConfigServiceServer interface { ReadAwsFlowLogsS3Bucket(context.Context, *ReadAwsFlowLogsS3BucketRequest) (*ReadAwsFlowLogsS3BucketResponse, error) UpdateAwsFlowLogsS3Bucket(context.Context, *UpdateAwsFlowLogsS3BucketRequest) (*UpdateAwsFlowLogsS3BucketResponse, error) DeleteAwsFlowLogsS3Bucket(context.Context, *DeleteAwsFlowLogsS3BucketRequest) (*emptypb.Empty, error) + CreateAzureSubscription(context.Context, *CreateAzureSubscriptionRequest) (*CreateAzureSubscriptionResponse, error) + ReadAzureSubscription(context.Context, *ReadAzureSubscriptionRequest) (*ReadAzureSubscriptionResponse, error) + UpdateAzureSubscription(context.Context, *UpdateAzureSubscriptionRequest) (*UpdateAzureSubscriptionResponse, error) + DeleteAzureSubscription(context.Context, *DeleteAzureSubscriptionRequest) (*emptypb.Empty, error) CreateK8SClusterOnboardingCredential(context.Context, *CreateK8SClusterOnboardingCredentialRequest) (*CreateK8SClusterOnboardingCredentialResponse, error) ReadK8SClusterOnboardingCredential(context.Context, *ReadK8SClusterOnboardingCredentialRequest) (*ReadK8SClusterOnboardingCredentialResponse, error) UpdateK8SClusterOnboardingCredential(context.Context, *UpdateK8SClusterOnboardingCredentialRequest) (*UpdateK8SClusterOnboardingCredentialResponse, error) @@ -233,6 +285,18 @@ func (UnimplementedConfigServiceServer) UpdateAwsFlowLogsS3Bucket(context.Contex func (UnimplementedConfigServiceServer) DeleteAwsFlowLogsS3Bucket(context.Context, *DeleteAwsFlowLogsS3BucketRequest) (*emptypb.Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteAwsFlowLogsS3Bucket not implemented") } +func (UnimplementedConfigServiceServer) CreateAzureSubscription(context.Context, *CreateAzureSubscriptionRequest) (*CreateAzureSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAzureSubscription not implemented") +} +func (UnimplementedConfigServiceServer) ReadAzureSubscription(context.Context, *ReadAzureSubscriptionRequest) (*ReadAzureSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ReadAzureSubscription not implemented") +} +func (UnimplementedConfigServiceServer) UpdateAzureSubscription(context.Context, *UpdateAzureSubscriptionRequest) (*UpdateAzureSubscriptionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateAzureSubscription not implemented") +} +func (UnimplementedConfigServiceServer) DeleteAzureSubscription(context.Context, *DeleteAzureSubscriptionRequest) (*emptypb.Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteAzureSubscription not implemented") +} func (UnimplementedConfigServiceServer) CreateK8SClusterOnboardingCredential(context.Context, *CreateK8SClusterOnboardingCredentialRequest) (*CreateK8SClusterOnboardingCredentialResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateK8SClusterOnboardingCredential not implemented") } @@ -410,6 +474,78 @@ func _ConfigService_DeleteAwsFlowLogsS3Bucket_Handler(srv interface{}, ctx conte return interceptor(ctx, in, info, handler) } +func _ConfigService_CreateAzureSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateAzureSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceServer).CreateAzureSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ConfigService_CreateAzureSubscription_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceServer).CreateAzureSubscription(ctx, req.(*CreateAzureSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigService_ReadAzureSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ReadAzureSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceServer).ReadAzureSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ConfigService_ReadAzureSubscription_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceServer).ReadAzureSubscription(ctx, req.(*ReadAzureSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigService_UpdateAzureSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateAzureSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceServer).UpdateAzureSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ConfigService_UpdateAzureSubscription_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceServer).UpdateAzureSubscription(ctx, req.(*UpdateAzureSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _ConfigService_DeleteAzureSubscription_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteAzureSubscriptionRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ConfigServiceServer).DeleteAzureSubscription(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: ConfigService_DeleteAzureSubscription_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ConfigServiceServer).DeleteAzureSubscription(ctx, req.(*DeleteAzureSubscriptionRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _ConfigService_CreateK8SClusterOnboardingCredential_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(CreateK8SClusterOnboardingCredentialRequest) if err := dec(in); err != nil { @@ -521,6 +657,22 @@ var ConfigService_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteAwsFlowLogsS3Bucket", Handler: _ConfigService_DeleteAwsFlowLogsS3Bucket_Handler, }, + { + MethodName: "CreateAzureSubscription", + Handler: _ConfigService_CreateAzureSubscription_Handler, + }, + { + MethodName: "ReadAzureSubscription", + Handler: _ConfigService_ReadAzureSubscription_Handler, + }, + { + MethodName: "UpdateAzureSubscription", + Handler: _ConfigService_UpdateAzureSubscription_Handler, + }, + { + MethodName: "DeleteAzureSubscription", + Handler: _ConfigService_DeleteAzureSubscription_Handler, + }, { MethodName: "CreateK8SClusterOnboardingCredential", Handler: _ConfigService_CreateK8SClusterOnboardingCredential_Handler, diff --git a/api/illumio/cloud/config/v1/tags.json b/api/illumio/cloud/config/v1/tags.json index 80961d7..7dba4ae 100644 --- a/api/illumio/cloud/config/v1/tags.json +++ b/api/illumio/cloud/config/v1/tags.json @@ -1 +1 @@ -{"resource/aws_account":{"account_id":2,"account_type":3,"id":1,"management_account_id":4,"mode":5,"name":6,"organization_account_id":11,"organization_id":7,"organization_master_account_id":12,"role_arn":8,"role_external_id":9,"update_mask":10},"resource/aws_flow_logs_s3_bucket":{"account_id":2,"id":1,"s3_bucket_arn":3,"update_mask":4},"resource/k8s_cluster_onboarding_credential":{"client_id":2,"client_secret":3,"created_at":4,"description":5,"id":1,"illumio_region":6,"name":7,"update_mask":8}} \ No newline at end of file +{"resource/aws_account":{"account_id":2,"account_type":3,"id":1,"management_account_id":4,"mode":5,"name":6,"organization_account_id":11,"organization_id":7,"organization_master_account_id":12,"role_arn":8,"role_external_id":9,"update_mask":10},"resource/aws_flow_logs_s3_bucket":{"account_id":2,"id":1,"s3_bucket_arn":3,"update_mask":4},"resource/azure_subscription":{"client_id":2,"client_secret":3,"id":1,"mode":4,"name":5,"subscription_id":6,"tenant_id":7,"update_mask":8},"resource/k8s_cluster_onboarding_credential":{"client_id":2,"client_secret":3,"created_at":4,"description":5,"id":1,"illumio_region":6,"name":7,"update_mask":8}} \ No newline at end of file diff --git a/api/schema/azure_subscription_resource.go b/api/schema/azure_subscription_resource.go new file mode 100644 index 0000000..d9b8778 --- /dev/null +++ b/api/schema/azure_subscription_resource.go @@ -0,0 +1,95 @@ +// Copyright (c) Illumio, Inc. +// SPDX-License-Identifier: MPL-2.0 + +package schema + +import ( + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + resource_schema "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" +) + +var ( + azureSubscriptionResource = Resource{ + TypeName: "azure_subscription", + Schema: resource_schema.Schema{ + Version: 1, + Description: "Manages an Azure subscription in CloudSecure.", + Attributes: map[string]resource_schema.Attribute{ + IDFieldName: idAttribute, + "client_id": StringResourceAttributeWithMode{ + StringAttribute: resource_schema.StringAttribute{ + Description: "The client_id of the Azure Active Directory App Service Principal used by CloudSecure to manage this subscription.", + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + attributeWithMode: attributeWithMode{ + Mode: ImmutableAttributeMode, + }, + }, + "client_secret": StringResourceAttributeWithMode{ + StringAttribute: resource_schema.StringAttribute{ + Description: "The client_secret of the Azure Active Directory App Service Principal used by CloudSecure to manage this subscription.", + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + attributeWithMode: attributeWithMode{ + Mode: WriteOnlyOnceAttributeMode, + }, + }, + "mode": StringResourceAttributeWithMode{ + StringAttribute: resource_schema.StringAttribute{ + Description: "Access mode, must be `\"ReadWrite\"` (default) or `\"Read\"`.", + Optional: true, + Computed: true, + Default: stringdefault.StaticString("ReadWrite"), + Validators: []validator.String{ + stringvalidator.OneOf("ReadWrite", "Read"), + }, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + attributeWithMode: attributeWithMode{ + Mode: ImmutableAttributeMode, + }, + }, + "name": resource_schema.StringAttribute{ + Description: "Display name for the Azure subscription.", + Required: true, + }, + "subscription_id": StringResourceAttributeWithMode{ + StringAttribute: resource_schema.StringAttribute{ + MarkdownDescription: "Azure subscription ID.", + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + attributeWithMode: attributeWithMode{ + Mode: ImmutableAttributeMode, + }, + }, + "tenant_id": StringResourceAttributeWithMode{ + StringAttribute: resource_schema.StringAttribute{ + Description: "ID of the Azure tenant.", + Required: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.RequiresReplace(), + }, + }, + attributeWithMode: attributeWithMode{ + Mode: ImmutableAttributeMode, + }, + }, + }, + }, + } +) diff --git a/api/schema/schema.go b/api/schema/schema.go index 9b776e3..36d8d60 100644 --- a/api/schema/schema.go +++ b/api/schema/schema.go @@ -19,6 +19,7 @@ func (c *cloudSecureSchema) Resources() Resources { resources := Resources{ awsAccountResource, awsFlowLogsS3Bucket, + azureSubscriptionResource, k8sClusterOnboardingCredential, } sort.Sort(resources) diff --git a/docs/resources/azure_subscription.md b/docs/resources/azure_subscription.md new file mode 100644 index 0000000..e0d6f13 --- /dev/null +++ b/docs/resources/azure_subscription.md @@ -0,0 +1,45 @@ +--- +# generated by https://github.com/hashicorp/terraform-plugin-docs +page_title: "illumio-cloudsecure_azure_subscription Resource - illumio-cloudsecure" +subcategory: "" +description: |- + Manages an Azure subscription in CloudSecure. +--- + +# illumio-cloudsecure_azure_subscription (Resource) + +Manages an Azure subscription in CloudSecure. + +## Example Usage + +```terraform +resource "illumio-cloudsecure_azure_subscription" "subscription_example" { + client_id = "ZDIASAD7RGBTESTJUPUJ" + client_secret = "iam12TsTe1s17h7M27e8REGw7oqGocKR2ZDveZsM" + name = "Test Azure Subscription" + subscription_id = "6a879a4d-efdc-4b07-ad91-1919203356f5" + tenant_id = "de6b88d1-8289-4d5c-9453-f5c003e8dd51" + + # Optional attributes + mode = "ReadWrite" +} +``` + + +## Schema + +### Required + +- `client_id` (String) The client_id of the Azure Active Directory App Service Principal used by CloudSecure to manage this subscription. +- `client_secret` (String) The client_secret of the Azure Active Directory App Service Principal used by CloudSecure to manage this subscription. +- `name` (String) Display name for the Azure subscription. +- `subscription_id` (String) Azure subscription ID. +- `tenant_id` (String) ID of the Azure tenant. + +### Optional + +- `mode` (String) Access mode, must be `"ReadWrite"` (default) or `"Read"`. + +### Read-Only + +- `id` (String) CloudSecure ID. diff --git a/examples/README.md b/examples/README.md index 026c42c..a4536ab 100644 --- a/examples/README.md +++ b/examples/README.md @@ -2,8 +2,10 @@ This directory contains examples that are mostly used for documentation, but can also be run/tested manually via the Terraform CLI. -The document generation tool looks for files in the following locations by default. All other *.tf files besides the ones mentioned below are ignored by the documentation tool. This is useful for creating examples that can run and/or ar testable even if some parts are not relevant for the documentation. +The document generation tool looks for files in the following locations by default. All other \*.tf files besides the ones mentioned below are ignored by the documentation tool. This is useful for creating examples that can run and/or ar testable even if some parts are not relevant for the documentation. -* **provider/provider.tf** example file for the provider index page -* **data-sources/`full data source name`/data-source.tf** example file for the named data source page -* **resources/`full resource name`/resource.tf** example file for the named data source page +- **provider/provider.tf** example file for the provider index page +- **data-sources/`full data source name`/data-source.tf** example file for the named data source page +- **resources/`full resource name`/resource.tf** example file for the named data source page + + diff --git a/examples/resources/illumio-cloudsecure_azure_subscription/resource.tf b/examples/resources/illumio-cloudsecure_azure_subscription/resource.tf new file mode 100644 index 0000000..8923eec --- /dev/null +++ b/examples/resources/illumio-cloudsecure_azure_subscription/resource.tf @@ -0,0 +1,10 @@ +resource "illumio-cloudsecure_azure_subscription" "subscription_example" { + client_id = "ZDIASAD7RGBTESTJUPUJ" + client_secret = "iam12TsTe1s17h7M27e8REGw7oqGocKR2ZDveZsM" + name = "Test Azure Subscription" + subscription_id = "6a879a4d-efdc-4b07-ad91-1919203356f5" + tenant_id = "de6b88d1-8289-4d5c-9453-f5c003e8dd51" + + # Optional attributes + mode = "ReadWrite" +} diff --git a/fakeserver/fakeserver.gen.go b/fakeserver/fakeserver.gen.go index 3db430e..fc46e42 100644 --- a/fakeserver/fakeserver.gen.go +++ b/fakeserver/fakeserver.gen.go @@ -24,6 +24,8 @@ type FakeConfigServer struct { AwsAccountMutex sync.RWMutex AwsFlowLogsS3BucketMap map[string]*AwsFlowLogsS3Bucket AwsFlowLogsS3BucketMutex sync.RWMutex + AzureSubscriptionMap map[string]*AzureSubscription + AzureSubscriptionMutex sync.RWMutex K8SClusterOnboardingCredentialMap map[string]*K8SClusterOnboardingCredential K8SClusterOnboardingCredentialMutex sync.RWMutex } @@ -36,6 +38,7 @@ func NewFakeConfigServer(logger *zap.Logger) configv1.ConfigServiceServer { Logger: logger, AwsAccountMap: make(map[string]*AwsAccount), AwsFlowLogsS3BucketMap: make(map[string]*AwsFlowLogsS3Bucket), + AzureSubscriptionMap: make(map[string]*AzureSubscription), K8SClusterOnboardingCredentialMap: make(map[string]*K8SClusterOnboardingCredential), } } @@ -56,6 +59,16 @@ type AwsFlowLogsS3Bucket struct { S3BucketArn string } +type AzureSubscription struct { + Id string + ClientId string + ClientSecret string + Mode string + Name string + SubscriptionId string + TenantId string +} + type K8SClusterOnboardingCredential struct { Id string ClientId string @@ -319,6 +332,140 @@ func (s *FakeConfigServer) DeleteAwsFlowLogsS3Bucket(ctx context.Context, req *c ) return &emptypb.Empty{}, nil } +func (s *FakeConfigServer) CreateAzureSubscription(ctx context.Context, req *configv1.CreateAzureSubscriptionRequest) (*configv1.CreateAzureSubscriptionResponse, error) { + id := uuid.New().String() + model := &AzureSubscription{ + Id: id, + ClientId: req.ClientId, + ClientSecret: req.ClientSecret, + Mode: req.Mode, + Name: req.Name, + SubscriptionId: req.SubscriptionId, + TenantId: req.TenantId, + } + resp := &configv1.CreateAzureSubscriptionResponse{ + Id: id, + ClientId: model.ClientId, + Mode: model.Mode, + Name: model.Name, + SubscriptionId: model.SubscriptionId, + TenantId: model.TenantId, + } + s.AzureSubscriptionMutex.Lock() + s.AzureSubscriptionMap[id] = model + s.AzureSubscriptionMutex.Unlock() + s.Logger.Info("created resource", + zap.String("type", "azure_subscription"), + zap.String("method", "CreateAzureSubscription"), + zap.String("id", id), + ) + return resp, nil +} + +func (s *FakeConfigServer) ReadAzureSubscription(ctx context.Context, req *configv1.ReadAzureSubscriptionRequest) (*configv1.ReadAzureSubscriptionResponse, error) { + id := req.Id + s.AzureSubscriptionMutex.RLock() + model, found := s.AzureSubscriptionMap[id] + if !found { + s.AzureSubscriptionMutex.RUnlock() + s.Logger.Error("attempted to read resource with unknown id", + zap.String("type", "azure_subscription"), + zap.String("method", "ReadAzureSubscription"), + zap.String("id", id), + ) + return nil, status.Errorf(codes.NotFound, "no azure_subscription found with id %s", id) + } + resp := &configv1.ReadAzureSubscriptionResponse{ + Id: id, + ClientId: model.ClientId, + Mode: model.Mode, + Name: model.Name, + SubscriptionId: model.SubscriptionId, + TenantId: model.TenantId, + } + s.AzureSubscriptionMutex.RUnlock() + s.Logger.Info("read resource", + zap.String("type", "azure_subscription"), + zap.String("method", "ReadAzureSubscription"), + zap.String("id", id), + ) + return resp, nil +} + +func (s *FakeConfigServer) UpdateAzureSubscription(ctx context.Context, req *configv1.UpdateAzureSubscriptionRequest) (*configv1.UpdateAzureSubscriptionResponse, error) { + id := req.Id + s.AzureSubscriptionMutex.Lock() + model, found := s.AzureSubscriptionMap[id] + if !found { + s.AzureSubscriptionMutex.Unlock() + s.Logger.Error("attempted to update resource with unknown id", + zap.String("type", "azure_subscription"), + zap.String("method", "UpdateAzureSubscription"), + zap.String("id", id), + ) + return nil, status.Errorf(codes.NotFound, "no azure_subscription found with id %s", id) + } + updateMask := req.UpdateMask + var updateMaskPaths []string + if updateMask != nil { + updateMaskPaths = updateMask.Paths + } + for _, path := range updateMaskPaths { + switch path { + case "name": + model.Name = req.Name + default: + s.AwsAccountMutex.Unlock() + s.Logger.Error("attempted to update resource using invalid update_mask path", + zap.String("type", "azure_subscription"), + zap.String("method", "UpdateAzureSubscription"), + zap.String("id", id), + zap.Strings("updateMaskPaths", updateMaskPaths), + zap.String("invalidUpdateMaskPath", path), + ) + return nil, status.Errorf(codes.InvalidArgument, "invalid path in update_mask for aws_account: %s", path) + } + } + resp := &configv1.UpdateAzureSubscriptionResponse{ + Id: id, + ClientId: model.ClientId, + Mode: model.Mode, + Name: model.Name, + SubscriptionId: model.SubscriptionId, + TenantId: model.TenantId, + } + s.AzureSubscriptionMutex.Unlock() + s.Logger.Info("updated resource", + zap.String("type", "azure_subscription"), + zap.String("method", "UpdateAzureSubscription"), + zap.String("id", id), + zap.Strings("updateMaskPaths", updateMaskPaths), + ) + return resp, nil +} + +func (s *FakeConfigServer) DeleteAzureSubscription(ctx context.Context, req *configv1.DeleteAzureSubscriptionRequest) (*emptypb.Empty, error) { + id := req.Id + s.AzureSubscriptionMutex.Lock() + _, found := s.AzureSubscriptionMap[id] + if !found { + s.AzureSubscriptionMutex.Unlock() + s.Logger.Error("attempted to delete resource with unknown id", + zap.String("type", "azure_subscription"), + zap.String("method", "DeleteAzureSubscription"), + zap.String("id", id), + ) + return nil, status.Errorf(codes.NotFound, "no azure_subscription found with id %s", id) + } + delete(s.AzureSubscriptionMap, id) + s.AzureSubscriptionMutex.Unlock() + s.Logger.Info("deleted resource", + zap.String("type", "azure_subscription"), + zap.String("method", "DeleteAzureSubscription"), + zap.String("id", id), + ) + return &emptypb.Empty{}, nil +} func (s *FakeConfigServer) CreateK8SClusterOnboardingCredential(ctx context.Context, req *configv1.CreateK8SClusterOnboardingCredentialRequest) (*configv1.CreateK8SClusterOnboardingCredentialResponse, error) { id := uuid.New().String() model := &K8SClusterOnboardingCredential{ diff --git a/internal/provider/provider.gen.go b/internal/provider/provider.gen.go index 0e0804a..8fcaada 100644 --- a/internal/provider/provider.gen.go +++ b/internal/provider/provider.gen.go @@ -39,6 +39,8 @@ func (p *Provider) Resources(ctx context.Context) []func() resource.Resource { resp = append(resp, func() resource.Resource { return NewAwsAccountResource(r.Schema) }) case "aws_flow_logs_s3_bucket": resp = append(resp, func() resource.Resource { return NewAwsFlowLogsS3BucketResource(r.Schema) }) + case "azure_subscription": + resp = append(resp, func() resource.Resource { return NewAzureSubscriptionResource(r.Schema) }) case "k8s_cluster_onboarding_credential": resp = append(resp, func() resource.Resource { return NewK8SClusterOnboardingCredentialResource(r.Schema) }) } @@ -408,6 +410,184 @@ func (r *AwsFlowLogsS3BucketResource) ImportState(ctx context.Context, req resou // TODO } +// AzureSubscriptionResource implements the azure_subscription resource. +type AzureSubscriptionResource struct { + // schema is the schema of the azure_subscription resource. + schema resource_schema.Schema + + // providerData is the provider configuration. + config ProviderData +} + +var _ resource.ResourceWithConfigure = &AzureSubscriptionResource{} +var _ resource.ResourceWithImportState = &AzureSubscriptionResource{} + +// NewAzureSubscriptionResource returns a new azure_subscription resource. +func NewAzureSubscriptionResource(schema resource_schema.Schema) resource.Resource { + return &AzureSubscriptionResource{ + schema: schema, + } +} + +func (r *AzureSubscriptionResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_azure_subscription" +} + +func (r *AzureSubscriptionResource) Schema(ctx context.Context, req resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = r.schema +} + +func (r *AzureSubscriptionResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + if req.ProviderData == nil { + return + } + + providerData, ok := req.ProviderData.(ProviderData) + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected ProviderData, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + + return + } + + r.config = providerData +} + +func (r *AzureSubscriptionResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + var data AzureSubscriptionResourceModel + + resp.Diagnostics.Append(req.Plan.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + protoReq := NewCreateAzureSubscriptionRequest(&data) + + tflog.Trace(ctx, "creating a resource", map[string]any{"type": "azure_subscription"}) + + rpcCtx, rpcCancel := context.WithTimeout(ctx, r.config.RequestTimeout()) + protoResp, err := r.config.Client().CreateAzureSubscription(rpcCtx, protoReq) + rpcCancel() + if err != nil { + resp.Diagnostics.AddError("Config API Error", fmt.Sprintf("Unable to create azure_subscription, got error: %s", err)) + return + } + + CopyCreateAzureSubscriptionResponse(&data, protoResp) + + tflog.Trace(ctx, "created a resource", map[string]any{"type": "azure_subscription", "id": protoResp.Id}) + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (r *AzureSubscriptionResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + var data AzureSubscriptionResourceModel + + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + protoReq := NewReadAzureSubscriptionRequest(&data) + + tflog.Trace(ctx, "reading a resource", map[string]any{"type": "azure_subscription", "id": protoReq.Id}) + + rpcCtx, rpcCancel := context.WithTimeout(ctx, r.config.RequestTimeout()) + protoResp, err := r.config.Client().ReadAzureSubscription(rpcCtx, protoReq) + rpcCancel() + if err != nil { + switch status.Code(err) { + case codes.NotFound: + resp.Diagnostics.AddWarning("Resource Not Found", fmt.Sprintf("No azure_subscription found with id %s", protoReq.Id)) + resp.State.RemoveResource(ctx) + return + default: + resp.Diagnostics.AddError("Config API Error", fmt.Sprintf("Unable to read azure_subscription, got error: %s", err)) + return + } + } + + CopyReadAzureSubscriptionResponse(&data, protoResp) + + tflog.Trace(ctx, "read a resource", map[string]any{"type": "azure_subscription", "id": protoResp.Id}) + + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) +} + +func (r *AzureSubscriptionResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + var beforeData AzureSubscriptionResourceModel + var afterData AzureSubscriptionResourceModel + + resp.Diagnostics.Append(req.State.Get(ctx, &beforeData)...) + if resp.Diagnostics.HasError() { + return + } + + resp.Diagnostics.Append(req.Plan.Get(ctx, &afterData)...) + if resp.Diagnostics.HasError() { + return + } + + protoReq := NewUpdateAzureSubscriptionRequest(&beforeData, &afterData) + + tflog.Trace(ctx, "updating a resource", map[string]any{"type": "azure_subscription", "id": protoReq.Id, "update_mask": protoReq.UpdateMask.Paths}) + + rpcCtx, rpcCancel := context.WithTimeout(ctx, r.config.RequestTimeout()) + protoResp, err := r.config.Client().UpdateAzureSubscription(rpcCtx, protoReq) + rpcCancel() + if err != nil { + switch status.Code(err) { + case codes.NotFound: + resp.Diagnostics.AddError("Resource Not Found", fmt.Sprintf("No azure_subscription found with id %s", protoReq.Id)) + resp.State.RemoveResource(ctx) + return + default: + resp.Diagnostics.AddError("Config API Error", fmt.Sprintf("Unable to update azure_subscription, got error: %s", err)) + return + } + } + + CopyUpdateAzureSubscriptionResponse(&afterData, protoResp) + + tflog.Trace(ctx, "updated a resource", map[string]any{"type": "azure_subscription", "id": protoResp.Id}) + + resp.Diagnostics.Append(resp.State.Set(ctx, &afterData)...) +} + +func (r *AzureSubscriptionResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + var data AzureSubscriptionResourceModel + + resp.Diagnostics.Append(req.State.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } + + protoReq := NewDeleteAzureSubscriptionRequest(&data) + + tflog.Trace(ctx, "deleting a resource", map[string]any{"type": "azure_subscription", "id": protoReq.Id}) + + rpcCtx, rpcCancel := context.WithTimeout(ctx, r.config.RequestTimeout()) + _, err := r.config.Client().DeleteAzureSubscription(rpcCtx, protoReq) + rpcCancel() + if err != nil { + switch status.Code(err) { + case codes.NotFound: + tflog.Trace(ctx, "resource was already deleted", map[string]any{"type": "azure_subscription", "id": protoReq.Id}) + default: + resp.Diagnostics.AddError("Config API Error", fmt.Sprintf("Unable to delete azure_subscription, got error: %s", err)) + return + } + } + + tflog.Trace(ctx, "deleted a resource", map[string]any{"type": "azure_subscription", "id": protoReq.Id}) +} + +func (r *AzureSubscriptionResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + // TODO +} + // K8SClusterOnboardingCredentialResource implements the k8s_cluster_onboarding_credential resource. type K8SClusterOnboardingCredentialResource struct { // schema is the schema of the k8s_cluster_onboarding_credential resource. @@ -602,6 +782,16 @@ type AwsFlowLogsS3BucketResourceModel struct { S3BucketArn types.String `tfsdk:"s3_bucket_arn"` } +type AzureSubscriptionResourceModel struct { + Id types.String `tfsdk:"id"` + ClientId types.String `tfsdk:"client_id"` + ClientSecret types.String `tfsdk:"client_secret"` + Mode types.String `tfsdk:"mode"` + Name types.String `tfsdk:"name"` + SubscriptionId types.String `tfsdk:"subscription_id"` + TenantId types.String `tfsdk:"tenant_id"` +} + type K8SClusterOnboardingCredentialResourceModel struct { Id types.String `tfsdk:"id"` ClientId types.String `tfsdk:"client_id"` @@ -714,6 +904,69 @@ func NewDeleteAwsFlowLogsS3BucketRequest(data *AwsFlowLogsS3BucketResourceModel) return proto } +func NewCreateAzureSubscriptionRequest(data *AzureSubscriptionResourceModel) *configv1.CreateAzureSubscriptionRequest { + proto := &configv1.CreateAzureSubscriptionRequest{} + if !data.ClientId.IsUnknown() && !data.ClientId.IsNull() { + var dataValue attr.Value = data.ClientId + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.ClientId = protoValue + } + if !data.ClientSecret.IsUnknown() && !data.ClientSecret.IsNull() { + var dataValue attr.Value = data.ClientSecret + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.ClientSecret = protoValue + } + if !data.Mode.IsUnknown() && !data.Mode.IsNull() { + var dataValue attr.Value = data.Mode + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.Mode = protoValue + } + if !data.Name.IsUnknown() && !data.Name.IsNull() { + var dataValue attr.Value = data.Name + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.Name = protoValue + } + if !data.SubscriptionId.IsUnknown() && !data.SubscriptionId.IsNull() { + var dataValue attr.Value = data.SubscriptionId + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.SubscriptionId = protoValue + } + if !data.TenantId.IsUnknown() && !data.TenantId.IsNull() { + var dataValue attr.Value = data.TenantId + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.TenantId = protoValue + } + return proto +} + +func NewReadAzureSubscriptionRequest(data *AzureSubscriptionResourceModel) *configv1.ReadAzureSubscriptionRequest { + proto := &configv1.ReadAzureSubscriptionRequest{} + if !data.Id.IsUnknown() && !data.Id.IsNull() { + var dataValue attr.Value = data.Id + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.Id = protoValue + } + return proto +} + +func NewDeleteAzureSubscriptionRequest(data *AzureSubscriptionResourceModel) *configv1.DeleteAzureSubscriptionRequest { + proto := &configv1.DeleteAzureSubscriptionRequest{} + if !data.Id.IsUnknown() && !data.Id.IsNull() { + var dataValue attr.Value = data.Id + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.Id = protoValue + } + return proto +} + func NewCreateK8SClusterOnboardingCredentialRequest(data *K8SClusterOnboardingCredentialResourceModel) *configv1.CreateK8SClusterOnboardingCredentialRequest { proto := &configv1.CreateK8SClusterOnboardingCredentialRequest{} if !data.Description.IsUnknown() && !data.Description.IsNull() { @@ -782,6 +1035,22 @@ func NewUpdateAwsFlowLogsS3BucketRequest(beforeData, afterData *AwsFlowLogsS3Buc return proto } +func NewUpdateAzureSubscriptionRequest(beforeData, afterData *AzureSubscriptionResourceModel) *configv1.UpdateAzureSubscriptionRequest { + proto := &configv1.UpdateAzureSubscriptionRequest{} + proto.UpdateMask, _ = fieldmaskpb.New(proto) + proto.Id = beforeData.Id.ValueString() + if !afterData.Name.Equal(beforeData.Name) { + proto.UpdateMask.Append(proto, "name") + if !afterData.Name.IsUnknown() && !afterData.Name.IsNull() { + var dataValue attr.Value = afterData.Name + var protoValue string + protoValue = dataValue.(types.String).ValueString() + proto.Name = protoValue + } + } + return proto +} + func NewUpdateK8SClusterOnboardingCredentialRequest(beforeData, afterData *K8SClusterOnboardingCredentialResourceModel) *configv1.UpdateK8SClusterOnboardingCredentialRequest { proto := &configv1.UpdateK8SClusterOnboardingCredentialRequest{} proto.UpdateMask, _ = fieldmaskpb.New(proto) @@ -845,6 +1114,30 @@ func CopyUpdateAwsFlowLogsS3BucketResponse(dst *AwsFlowLogsS3BucketResourceModel dst.AccountId = types.StringValue(src.AccountId) dst.S3BucketArn = types.StringValue(src.S3BucketArn) } +func CopyCreateAzureSubscriptionResponse(dst *AzureSubscriptionResourceModel, src *configv1.CreateAzureSubscriptionResponse) { + dst.Id = types.StringValue(src.Id) + dst.ClientId = types.StringValue(src.ClientId) + dst.Mode = types.StringValue(src.Mode) + dst.Name = types.StringValue(src.Name) + dst.SubscriptionId = types.StringValue(src.SubscriptionId) + dst.TenantId = types.StringValue(src.TenantId) +} +func CopyReadAzureSubscriptionResponse(dst *AzureSubscriptionResourceModel, src *configv1.ReadAzureSubscriptionResponse) { + dst.Id = types.StringValue(src.Id) + dst.ClientId = types.StringValue(src.ClientId) + dst.Mode = types.StringValue(src.Mode) + dst.Name = types.StringValue(src.Name) + dst.SubscriptionId = types.StringValue(src.SubscriptionId) + dst.TenantId = types.StringValue(src.TenantId) +} +func CopyUpdateAzureSubscriptionResponse(dst *AzureSubscriptionResourceModel, src *configv1.UpdateAzureSubscriptionResponse) { + dst.Id = types.StringValue(src.Id) + dst.ClientId = types.StringValue(src.ClientId) + dst.Mode = types.StringValue(src.Mode) + dst.Name = types.StringValue(src.Name) + dst.SubscriptionId = types.StringValue(src.SubscriptionId) + dst.TenantId = types.StringValue(src.TenantId) +} func CopyCreateK8SClusterOnboardingCredentialResponse(dst *K8SClusterOnboardingCredentialResourceModel, src *configv1.CreateK8SClusterOnboardingCredentialResponse) { dst.Id = types.StringValue(src.Id) dst.ClientId = types.StringValue(src.ClientId)