diff --git a/CHANGELOG/CHANGELOG-1.10.md b/CHANGELOG/CHANGELOG-1.10.md index 86e49e3e0..26a859987 100644 --- a/CHANGELOG/CHANGELOG-1.10.md +++ b/CHANGELOG/CHANGELOG-1.10.md @@ -15,6 +15,8 @@ When cutting a new release, update the `unreleased` heading to the tag being gen ## unreleased +* [ENHANCEMENT] [#1122](https://github.com/k8ssandra/k8ssandra-operator/issues/1122) Expose backup size in MedusaBackup CRD + ## v1.10.3 - 2023-11-15 * [BUGFIX] [#1110](https://github.com/k8ssandra/k8ssandra-operator/issues/1110) Fix cluster name being set to "Test Cluster" when running Cassandra 4.1+ diff --git a/apis/medusa/v1alpha1/medusabackup_types.go b/apis/medusa/v1alpha1/medusabackup_types.go index e45a62f10..64c1b957f 100644 --- a/apis/medusa/v1alpha1/medusabackup_types.go +++ b/apis/medusa/v1alpha1/medusabackup_types.go @@ -42,6 +42,8 @@ type MedusaBackupStatus struct { TotalNodes int32 `json:"totalNodes,omitempty"` FinishedNodes int32 `json:"finishedNodes,omitempty"` Nodes []*MedusaBackupNode `json:"nodes,omitempty"` + TotalFiles int64 `json:"totalFiles,omitempty"` + TotalSize string `json:"totalSize,omitempty"` Status string `json:"status,omitempty"` } @@ -57,6 +59,8 @@ type MedusaBackupNode struct { //+kubebuilder:printcolumn:name="Started",type=date,JSONPath=".status.startTime",description="Backup start time" //+kubebuilder:printcolumn:name="Finished",type=date,JSONPath=".status.finishTime",description="Backup finish time" //+kubebuilder:printcolumn:name="Nodes",type=string,JSONPath=".status.totalNodes",description="Total number of nodes at the time of the backup" +//+kubebuilder:printcolumn:name="Files",type=integer,JSONPath=".status.totalFiles",description="Total number of files in the backup" +//+kubebuilder:printcolumn:name="Size",type=string,JSONPath=".status.totalSize",description="Human-readable total size of the backup" //+kubebuilder:printcolumn:name="Completed",type=string,JSONPath=".status.finishedNodes",description="Number of nodes that completed this backup" //+kubebuilder:printcolumn:name="Status",type=string,JSONPath=".status.status",description="Backup completion status" diff --git a/config/crd/bases/medusa.k8ssandra.io_medusabackups.yaml b/config/crd/bases/medusa.k8ssandra.io_medusabackups.yaml index 889024845..18b5abc28 100644 --- a/config/crd/bases/medusa.k8ssandra.io_medusabackups.yaml +++ b/config/crd/bases/medusa.k8ssandra.io_medusabackups.yaml @@ -27,6 +27,14 @@ spec: jsonPath: .status.totalNodes name: Nodes type: string + - description: Total number of files in the backup + jsonPath: .status.totalFiles + name: Files + type: integer + - description: Human-readable total size of the backup + jsonPath: .status.totalSize + name: Size + type: string - description: Number of nodes that completed this backup jsonPath: .status.finishedNodes name: Completed @@ -98,9 +106,14 @@ spec: type: string status: type: string + totalFiles: + format: int64 + type: integer totalNodes: format: int32 type: integer + totalSize: + type: string type: object type: object served: true diff --git a/controllers/medusa/medusabackupjob_controller.go b/controllers/medusa/medusabackupjob_controller.go index cd6c32eab..347a07514 100644 --- a/controllers/medusa/medusabackupjob_controller.go +++ b/controllers/medusa/medusabackupjob_controller.go @@ -274,6 +274,8 @@ func (r *MedusaBackupJobReconciler) createMedusaBackup(ctx context.Context, back backupResource.Status.FinishTime = finishTime backupResource.Status.TotalNodes = backupSummary.TotalNodes backupResource.Status.FinishedNodes = backupSummary.FinishedNodes + backupResource.Status.TotalFiles = backupSummary.TotalObjects + backupResource.Status.TotalSize = humanize(backupSummary.TotalSize) backupResource.Status.Nodes = make([]*medusav1alpha1.MedusaBackupNode, len(backupSummary.Nodes)) for i, node := range backupSummary.Nodes { backupResource.Status.Nodes[i] = &medusav1alpha1.MedusaBackupNode{ @@ -336,3 +338,13 @@ func (r *MedusaBackupJobReconciler) SetupWithManager(mgr ctrl.Manager) error { For(&medusav1alpha1.MedusaBackupJob{}, builder.WithPredicates(predicate.GenerationChangedPredicate{})). Complete(r) } + +func humanize(bytes int64) string { + units := []string{"B", "KB", "MB", "GB", "TB", "PB"} + size := float64(bytes) + i := 0 + for ; size >= 1024 && i < len(units)-1; i++ { + size /= 1024 + } + return fmt.Sprintf("%.2f %s", size, units[i]) +} diff --git a/controllers/medusa/medusabackupjob_controller_test.go b/controllers/medusa/medusabackupjob_controller_test.go index 472b09903..6c1704073 100644 --- a/controllers/medusa/medusabackupjob_controller_test.go +++ b/controllers/medusa/medusabackupjob_controller_test.go @@ -33,6 +33,9 @@ const ( defaultBackupName = "backup1" dc1PodPrefix = "192.168.1." dc2PodPrefix = "192.168.2." + fakeBackupFileCount = int64(13) + fakeBackupByteSize = int64(42) + fakeBackupHumanSize = "42.00 B" ) func testMedusaBackupDatacenter(t *testing.T, ctx context.Context, f *framework.Framework, namespace string) { @@ -243,6 +246,8 @@ func createAndVerifyMedusaBackup(dcKey framework.ClusterKey, dc *cassdcapi.Cassa require.Equal(medusaBackup.Status.TotalNodes, dc.Spec.Size, "backup total nodes doesn't match dc nodes") require.Equal(medusaBackup.Status.FinishedNodes, dc.Spec.Size, "backup finished nodes doesn't match dc nodes") require.Equal(len(medusaBackup.Status.Nodes), int(dc.Spec.Size), "backup topology doesn't match dc topology") + require.Equal(medusaBackup.Status.TotalFiles, fakeBackupFileCount, "backup total files doesn't match") + require.Equal(medusaBackup.Status.TotalSize, fakeBackupHumanSize, "backup total size doesn't match") require.Equal(medusa.StatusType_SUCCESS.String(), medusaBackup.Status.Status, "backup status is not success") require.Equal(int(dc.Spec.Size), len(medusaClientFactory.GetRequestedBackups(dc.DatacenterName()))) @@ -354,6 +359,8 @@ func (c *fakeMedusaClient) GetBackups(ctx context.Context) ([]*medusa.BackupSumm FinishTime: 10, TotalNodes: 3, FinishedNodes: 3, + TotalObjects: fakeBackupFileCount, + TotalSize: fakeBackupByteSize, Status: *medusa.StatusType_SUCCESS.Enum(), Nodes: []*medusa.BackupNode{ { @@ -502,3 +509,22 @@ func reconcileMedusaStandaloneDeployment(ctx context.Context, t *testing.T, f *f require.NoError(t, err, "Failed to update Medusa Deployment status") } + +func TestHumanize(t *testing.T) { + t.Run("humanizeTrivialSizes", humanizeTrivialSizes) + t.Run("humanizeArbitrarySizes", humanizeArbitrarySizes) +} + +func humanizeTrivialSizes(t *testing.T) { + assert.Equal(t, "1.00 B", humanize(1)) + assert.Equal(t, "1.00 KB", humanize(1024)) + assert.Equal(t, "1.00 MB", humanize(1024*1024)) + assert.Equal(t, "1.00 GB", humanize(1024*1024*1024)) +} + +func humanizeArbitrarySizes(t *testing.T) { + assert.Equal(t, "127.50 KB", humanize(130557)) + assert.Equal(t, "4.03 GB", humanize(4325130557)) + assert.Equal(t, "7.67 TB", humanize(8434729356343)) + assert.Equal(t, "1096.52 PB", humanize(1234567890123456790)) +} diff --git a/docs/content/en/tasks/backup-restore/_index.md b/docs/content/en/tasks/backup-restore/_index.md index 940a804b3..ab61256d4 100644 --- a/docs/content/en/tasks/backup-restore/_index.md +++ b/docs/content/en/tasks/backup-restore/_index.md @@ -128,7 +128,7 @@ K8ssandra Operator will detect the `MedusaBackupJob` object creation and trigger To monitor the backup completion, check if the `finishTime` is set in the `MedusaBackupJob` object status. Example: ```sh -% kubectl get medusabackupjob/medusa-backup1 -o yaml +% kubectl get medusabackupjob/backup1 -o yaml kind: MedusaBackupJob metadata: @@ -159,7 +159,7 @@ medusa-backup1 19m 19m All pods having completed the backup will be in the `finished` list. At the end of the backup operation, a `MedusaBackup` custom resource will be created with the same name as the `MedusaBackupJob` object. It materializes the backup locally on the Kubernetes cluster. -The MedusaBackup object status contains the total number of node in the cluster at the time of the backup, the number of nodes that successfully achieved the backup, and the topology of the DC at the time of the backup: +The MedusaBackup object status contains the total number of node in the cluster at the time of the backup, the number of nodes that successfully achieved the backup, the topology of the DC at the time of the backup, the number of files backed up and their total size: ```yaml apiVersion: medusa.k8ssandra.io/v1alpha1 @@ -189,6 +189,8 @@ status: - -1058110708807841300 - -107256661843445790 status: SUCCESS + totalFiles: 120 + totalSize: 127.67 KB spec: backupType: differential cassandraDatacenter: dc1 @@ -199,9 +201,9 @@ The `kubectl get`` output for MedusaBackup objects will show a subset of this in ```sh kubectl get MedusaBackup -A -NAME STARTED FINISHED NODES COMPLETED STATUS -backup1 29m 28m 2 2 SUCCESS -medusa-backup1 23m 23m 2 2 SUCCESS +NAME STARTED FINISHED NODES FILES SIZE COMPLETED STATUS +backup1 29m 28m 2 120 127.67 KB 2 SUCCESS +medusa-backup1 23m 23m 2 137 241.61 KB 2 SUCCESS ``` For a restore to be possible, a `MedusaBackup` object must exist. diff --git a/go.mod b/go.mod index 45a018471..164cd6772 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/stretchr/testify v1.8.2 go.uber.org/zap v1.24.0 google.golang.org/grpc v1.49.0 - google.golang.org/protobuf v1.30.0 + google.golang.org/protobuf v1.31.0 gopkg.in/resty.v1 v1.12.0 gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.26.4 diff --git a/go.sum b/go.sum index 99a65ce39..30d50e09f 100644 --- a/go.sum +++ b/go.sum @@ -1598,8 +1598,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20170511165959-379148ca0225/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= diff --git a/pkg/medusa/medusa.pb.go b/pkg/medusa/medusa.pb.go index 09b39b8e9..863743206 100644 --- a/pkg/medusa/medusa.pb.go +++ b/pkg/medusa/medusa.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.31.0 -// protoc v4.24.3 +// protoc-gen-go v1.28.1 +// protoc v3.20.3 // source: pkg/medusa/medusa.proto package medusa @@ -280,12 +280,9 @@ type BackupStatusResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - FinishedNodes []string `protobuf:"bytes,1,rep,name=finishedNodes,proto3" json:"finishedNodes,omitempty"` - UnfinishedNodes []string `protobuf:"bytes,2,rep,name=unfinishedNodes,proto3" json:"unfinishedNodes,omitempty"` - MissingNodes []string `protobuf:"bytes,3,rep,name=missingNodes,proto3" json:"missingNodes,omitempty"` - StartTime string `protobuf:"bytes,4,opt,name=startTime,proto3" json:"startTime,omitempty"` - FinishTime string `protobuf:"bytes,5,opt,name=finishTime,proto3" json:"finishTime,omitempty"` - Status StatusType `protobuf:"varint,6,opt,name=status,proto3,enum=StatusType" json:"status,omitempty"` + StartTime string `protobuf:"bytes,1,opt,name=startTime,proto3" json:"startTime,omitempty"` + FinishTime string `protobuf:"bytes,2,opt,name=finishTime,proto3" json:"finishTime,omitempty"` + Status StatusType `protobuf:"varint,3,opt,name=status,proto3,enum=StatusType" json:"status,omitempty"` } func (x *BackupStatusResponse) Reset() { @@ -320,27 +317,6 @@ func (*BackupStatusResponse) Descriptor() ([]byte, []int) { return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{3} } -func (x *BackupStatusResponse) GetFinishedNodes() []string { - if x != nil { - return x.FinishedNodes - } - return nil -} - -func (x *BackupStatusResponse) GetUnfinishedNodes() []string { - if x != nil { - return x.UnfinishedNodes - } - return nil -} - -func (x *BackupStatusResponse) GetMissingNodes() []string { - if x != nil { - return x.MissingNodes - } - return nil -} - func (x *BackupStatusResponse) GetStartTime() string { if x != nil { return x.StartTime @@ -464,6 +440,108 @@ func (x *DeleteBackupResponse) GetStatus() StatusType { return StatusType_IN_PROGRESS } +type GetBackupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BackupName string `protobuf:"bytes,1,opt,name=backupName,proto3" json:"backupName,omitempty"` +} + +func (x *GetBackupRequest) Reset() { + *x = GetBackupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_medusa_medusa_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBackupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBackupRequest) ProtoMessage() {} + +func (x *GetBackupRequest) ProtoReflect() protoreflect.Message { + mi := &file_pkg_medusa_medusa_proto_msgTypes[6] + 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 GetBackupRequest.ProtoReflect.Descriptor instead. +func (*GetBackupRequest) Descriptor() ([]byte, []int) { + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{6} +} + +func (x *GetBackupRequest) GetBackupName() string { + if x != nil { + return x.BackupName + } + return "" +} + +type GetBackupResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Backup *BackupSummary `protobuf:"bytes,1,opt,name=backup,proto3" json:"backup,omitempty"` + Status StatusType `protobuf:"varint,2,opt,name=status,proto3,enum=StatusType" json:"status,omitempty"` +} + +func (x *GetBackupResponse) Reset() { + *x = GetBackupResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_pkg_medusa_medusa_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetBackupResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetBackupResponse) ProtoMessage() {} + +func (x *GetBackupResponse) ProtoReflect() protoreflect.Message { + mi := &file_pkg_medusa_medusa_proto_msgTypes[7] + 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 GetBackupResponse.ProtoReflect.Descriptor instead. +func (*GetBackupResponse) Descriptor() ([]byte, []int) { + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{7} +} + +func (x *GetBackupResponse) GetBackup() *BackupSummary { + if x != nil { + return x.Backup + } + return nil +} + +func (x *GetBackupResponse) GetStatus() StatusType { + if x != nil { + return x.Status + } + return StatusType_IN_PROGRESS +} + type GetBackupsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -473,7 +551,7 @@ type GetBackupsRequest struct { func (x *GetBackupsRequest) Reset() { *x = GetBackupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[6] + mi := &file_pkg_medusa_medusa_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -486,7 +564,7 @@ func (x *GetBackupsRequest) String() string { func (*GetBackupsRequest) ProtoMessage() {} func (x *GetBackupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[6] + mi := &file_pkg_medusa_medusa_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -499,7 +577,7 @@ func (x *GetBackupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBackupsRequest.ProtoReflect.Descriptor instead. func (*GetBackupsRequest) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{6} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{8} } type GetBackupsResponse struct { @@ -514,7 +592,7 @@ type GetBackupsResponse struct { func (x *GetBackupsResponse) Reset() { *x = GetBackupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[7] + mi := &file_pkg_medusa_medusa_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -527,7 +605,7 @@ func (x *GetBackupsResponse) String() string { func (*GetBackupsResponse) ProtoMessage() {} func (x *GetBackupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[7] + mi := &file_pkg_medusa_medusa_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -540,7 +618,7 @@ func (x *GetBackupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetBackupsResponse.ProtoReflect.Descriptor instead. func (*GetBackupsResponse) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{7} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{9} } func (x *GetBackupsResponse) GetBackups() []*BackupSummary { @@ -570,12 +648,14 @@ type BackupSummary struct { Nodes []*BackupNode `protobuf:"bytes,6,rep,name=nodes,proto3" json:"nodes,omitempty"` Status StatusType `protobuf:"varint,7,opt,name=status,proto3,enum=StatusType" json:"status,omitempty"` BackupType string `protobuf:"bytes,8,opt,name=backupType,proto3" json:"backupType,omitempty"` + TotalSize int64 `protobuf:"varint,9,opt,name=totalSize,proto3" json:"totalSize,omitempty"` + TotalObjects int64 `protobuf:"varint,10,opt,name=totalObjects,proto3" json:"totalObjects,omitempty"` } func (x *BackupSummary) Reset() { *x = BackupSummary{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[8] + mi := &file_pkg_medusa_medusa_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -588,7 +668,7 @@ func (x *BackupSummary) String() string { func (*BackupSummary) ProtoMessage() {} func (x *BackupSummary) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[8] + mi := &file_pkg_medusa_medusa_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -601,7 +681,7 @@ func (x *BackupSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupSummary.ProtoReflect.Descriptor instead. func (*BackupSummary) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{8} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{10} } func (x *BackupSummary) GetBackupName() string { @@ -660,6 +740,20 @@ func (x *BackupSummary) GetBackupType() string { return "" } +func (x *BackupSummary) GetTotalSize() int64 { + if x != nil { + return x.TotalSize + } + return 0 +} + +func (x *BackupSummary) GetTotalObjects() int64 { + if x != nil { + return x.TotalObjects + } + return 0 +} + type BackupNode struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -674,7 +768,7 @@ type BackupNode struct { func (x *BackupNode) Reset() { *x = BackupNode{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[9] + mi := &file_pkg_medusa_medusa_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -687,7 +781,7 @@ func (x *BackupNode) String() string { func (*BackupNode) ProtoMessage() {} func (x *BackupNode) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[9] + mi := &file_pkg_medusa_medusa_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -700,7 +794,7 @@ func (x *BackupNode) ProtoReflect() protoreflect.Message { // Deprecated: Use BackupNode.ProtoReflect.Descriptor instead. func (*BackupNode) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{9} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{11} } func (x *BackupNode) GetHost() string { @@ -740,7 +834,7 @@ type PurgeBackupsRequest struct { func (x *PurgeBackupsRequest) Reset() { *x = PurgeBackupsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[10] + mi := &file_pkg_medusa_medusa_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -753,7 +847,7 @@ func (x *PurgeBackupsRequest) String() string { func (*PurgeBackupsRequest) ProtoMessage() {} func (x *PurgeBackupsRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[10] + mi := &file_pkg_medusa_medusa_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -766,7 +860,7 @@ func (x *PurgeBackupsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeBackupsRequest.ProtoReflect.Descriptor instead. func (*PurgeBackupsRequest) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{10} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{12} } type PurgeBackupsResponse struct { @@ -783,7 +877,7 @@ type PurgeBackupsResponse struct { func (x *PurgeBackupsResponse) Reset() { *x = PurgeBackupsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[11] + mi := &file_pkg_medusa_medusa_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -796,7 +890,7 @@ func (x *PurgeBackupsResponse) String() string { func (*PurgeBackupsResponse) ProtoMessage() {} func (x *PurgeBackupsResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[11] + mi := &file_pkg_medusa_medusa_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -809,7 +903,7 @@ func (x *PurgeBackupsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PurgeBackupsResponse.ProtoReflect.Descriptor instead. func (*PurgeBackupsResponse) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{11} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{13} } func (x *PurgeBackupsResponse) GetNbBackupsPurged() int32 { @@ -853,7 +947,7 @@ type PrepareRestoreRequest struct { func (x *PrepareRestoreRequest) Reset() { *x = PrepareRestoreRequest{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[12] + mi := &file_pkg_medusa_medusa_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -866,7 +960,7 @@ func (x *PrepareRestoreRequest) String() string { func (*PrepareRestoreRequest) ProtoMessage() {} func (x *PrepareRestoreRequest) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[12] + mi := &file_pkg_medusa_medusa_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -879,7 +973,7 @@ func (x *PrepareRestoreRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareRestoreRequest.ProtoReflect.Descriptor instead. func (*PrepareRestoreRequest) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{12} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{14} } func (x *PrepareRestoreRequest) GetBackupName() string { @@ -912,7 +1006,7 @@ type PrepareRestoreResponse struct { func (x *PrepareRestoreResponse) Reset() { *x = PrepareRestoreResponse{} if protoimpl.UnsafeEnabled { - mi := &file_pkg_medusa_medusa_proto_msgTypes[13] + mi := &file_pkg_medusa_medusa_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -925,7 +1019,7 @@ func (x *PrepareRestoreResponse) String() string { func (*PrepareRestoreResponse) ProtoMessage() {} func (x *PrepareRestoreResponse) ProtoReflect() protoreflect.Message { - mi := &file_pkg_medusa_medusa_proto_msgTypes[13] + mi := &file_pkg_medusa_medusa_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -938,7 +1032,7 @@ func (x *PrepareRestoreResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PrepareRestoreResponse.ProtoReflect.Descriptor instead. func (*PrepareRestoreResponse) Descriptor() ([]byte, []int) { - return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{13} + return file_pkg_medusa_medusa_proto_rawDescGZIP(), []int{15} } var File_pkg_medusa_medusa_proto protoreflect.FileDescriptor @@ -961,118 +1055,127 @@ var file_pkg_medusa_medusa_proto_rawDesc = []byte{ 0x75, 0x73, 0x22, 0x35, 0x0a, 0x13, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xed, 0x01, 0x0a, 0x14, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, - 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x75, 0x6e, 0x66, 0x69, - 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0f, 0x75, 0x6e, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x4e, 0x6f, 0x64, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6e, - 0x67, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, - 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, - 0x54, 0x69, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x12, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x28, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x31, 0x0a, 0x0d, 0x6f, 0x76, - 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, - 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x9b, 0x02, - 0x0a, 0x0d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, - 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x52, - 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x62, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0x6c, 0x0a, 0x0a, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x74, - 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, - 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, - 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x61, 0x63, 0x6b, 0x22, 0x15, 0x0a, 0x13, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x22, 0xd2, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x62, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x62, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x62, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x12, 0x28, 0x0a, - 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x47, 0x63, 0x47, - 0x72, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x47, 0x63, - 0x47, 0x72, 0x61, 0x63, 0x65, 0x22, 0x77, 0x0a, 0x15, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, - 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, - 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x1e, - 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x18, - 0x0a, 0x16, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x43, 0x0a, 0x0a, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, 0x50, 0x52, 0x4f, - 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, 0x43, 0x43, 0x45, - 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x02, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x32, 0x94, 0x03, - 0x0a, 0x06, 0x4d, 0x65, 0x64, 0x75, 0x73, 0x61, 0x12, 0x29, 0x0a, 0x06, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x12, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x12, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x14, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x12, 0x14, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x12, 0x2e, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x13, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, - 0x6b, 0x75, 0x70, 0x73, 0x12, 0x14, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x50, 0x75, 0x72, - 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, - 0x6f, 0x72, 0x65, 0x12, 0x16, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, - 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x50, 0x72, - 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0a, 0x5a, 0x08, 0x2e, 0x2f, 0x6d, 0x65, 0x64, 0x75, 0x73, 0x61, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x79, 0x0a, 0x14, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, + 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x22, 0x29, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, + 0x4f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x22, 0x32, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x60, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x06, 0x62, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x06, 0x62, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x28, 0x0a, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x31, 0x0a, 0x0d, 0x6f, + 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x0d, 0x6f, 0x76, 0x65, 0x72, 0x61, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xdd, + 0x02, 0x0a, 0x0d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, + 0x0a, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x24, + 0x0a, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x6f, 0x64, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x66, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, + 0x6f, 0x64, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x06, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, + 0x52, 0x05, 0x6e, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, + 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, + 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x6c, + 0x0a, 0x0a, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, + 0x52, 0x06, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, + 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, + 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x63, 0x6b, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x72, 0x61, 0x63, 0x6b, 0x22, 0x15, 0x0a, 0x13, + 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0xd2, 0x01, 0x0a, 0x14, 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x0f, + 0x6e, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6e, 0x62, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x12, 0x28, 0x0a, 0x0f, 0x6e, 0x62, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x73, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x0f, 0x6e, 0x62, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, + 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x53, + 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x50, 0x75, 0x72, 0x67, 0x65, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3c, 0x0a, 0x19, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x69, 0x6e, + 0x47, 0x63, 0x47, 0x72, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x57, 0x69, 0x74, 0x68, 0x69, + 0x6e, 0x47, 0x63, 0x47, 0x72, 0x61, 0x63, 0x65, 0x22, 0x77, 0x0a, 0x15, 0x50, 0x72, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x63, 0x65, 0x6e, 0x74, 0x65, + 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x4b, 0x65, + 0x79, 0x22, 0x18, 0x0a, 0x16, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2a, 0x43, 0x0a, 0x0a, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x5f, + 0x50, 0x52, 0x4f, 0x47, 0x52, 0x45, 0x53, 0x53, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x55, + 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x41, 0x49, 0x4c, 0x45, + 0x44, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x03, + 0x32, 0xc8, 0x03, 0x0a, 0x06, 0x4d, 0x65, 0x64, 0x75, 0x73, 0x61, 0x12, 0x29, 0x0a, 0x06, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x0b, 0x41, 0x73, 0x79, 0x6e, 0x63, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x0e, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x12, 0x14, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x11, 0x2e, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x12, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x12, 0x12, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x13, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x0c, 0x50, + 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x14, 0x2e, 0x50, 0x75, + 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x15, 0x2e, 0x50, 0x75, 0x72, 0x67, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0e, 0x50, 0x72, 0x65, 0x70, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x2e, 0x50, 0x72, 0x65, + 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x50, 0x72, 0x65, 0x70, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x0a, 0x5a, 0x08, 0x2e, + 0x2f, 0x6d, 0x65, 0x64, 0x75, 0x73, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1088,7 +1191,7 @@ func file_pkg_medusa_medusa_proto_rawDescGZIP() []byte { } var file_pkg_medusa_medusa_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_pkg_medusa_medusa_proto_msgTypes = make([]protoimpl.MessageInfo, 14) +var file_pkg_medusa_medusa_proto_msgTypes = make([]protoimpl.MessageInfo, 16) var file_pkg_medusa_medusa_proto_goTypes = []interface{}{ (StatusType)(0), // 0: StatusType (BackupRequest_Mode)(0), // 1: BackupRequest.Mode @@ -1098,43 +1201,49 @@ var file_pkg_medusa_medusa_proto_goTypes = []interface{}{ (*BackupStatusResponse)(nil), // 5: BackupStatusResponse (*DeleteBackupRequest)(nil), // 6: DeleteBackupRequest (*DeleteBackupResponse)(nil), // 7: DeleteBackupResponse - (*GetBackupsRequest)(nil), // 8: GetBackupsRequest - (*GetBackupsResponse)(nil), // 9: GetBackupsResponse - (*BackupSummary)(nil), // 10: BackupSummary - (*BackupNode)(nil), // 11: BackupNode - (*PurgeBackupsRequest)(nil), // 12: PurgeBackupsRequest - (*PurgeBackupsResponse)(nil), // 13: PurgeBackupsResponse - (*PrepareRestoreRequest)(nil), // 14: PrepareRestoreRequest - (*PrepareRestoreResponse)(nil), // 15: PrepareRestoreResponse + (*GetBackupRequest)(nil), // 8: GetBackupRequest + (*GetBackupResponse)(nil), // 9: GetBackupResponse + (*GetBackupsRequest)(nil), // 10: GetBackupsRequest + (*GetBackupsResponse)(nil), // 11: GetBackupsResponse + (*BackupSummary)(nil), // 12: BackupSummary + (*BackupNode)(nil), // 13: BackupNode + (*PurgeBackupsRequest)(nil), // 14: PurgeBackupsRequest + (*PurgeBackupsResponse)(nil), // 15: PurgeBackupsResponse + (*PrepareRestoreRequest)(nil), // 16: PrepareRestoreRequest + (*PrepareRestoreResponse)(nil), // 17: PrepareRestoreResponse } var file_pkg_medusa_medusa_proto_depIdxs = []int32{ 1, // 0: BackupRequest.mode:type_name -> BackupRequest.Mode 0, // 1: BackupResponse.status:type_name -> StatusType 0, // 2: BackupStatusResponse.status:type_name -> StatusType 0, // 3: DeleteBackupResponse.status:type_name -> StatusType - 10, // 4: GetBackupsResponse.backups:type_name -> BackupSummary - 0, // 5: GetBackupsResponse.overallStatus:type_name -> StatusType - 11, // 6: BackupSummary.nodes:type_name -> BackupNode - 0, // 7: BackupSummary.status:type_name -> StatusType - 2, // 8: Medusa.Backup:input_type -> BackupRequest - 2, // 9: Medusa.AsyncBackup:input_type -> BackupRequest - 4, // 10: Medusa.BackupStatus:input_type -> BackupStatusRequest - 6, // 11: Medusa.DeleteBackup:input_type -> DeleteBackupRequest - 8, // 12: Medusa.GetBackups:input_type -> GetBackupsRequest - 12, // 13: Medusa.PurgeBackups:input_type -> PurgeBackupsRequest - 14, // 14: Medusa.PrepareRestore:input_type -> PrepareRestoreRequest - 3, // 15: Medusa.Backup:output_type -> BackupResponse - 3, // 16: Medusa.AsyncBackup:output_type -> BackupResponse - 5, // 17: Medusa.BackupStatus:output_type -> BackupStatusResponse - 7, // 18: Medusa.DeleteBackup:output_type -> DeleteBackupResponse - 9, // 19: Medusa.GetBackups:output_type -> GetBackupsResponse - 13, // 20: Medusa.PurgeBackups:output_type -> PurgeBackupsResponse - 15, // 21: Medusa.PrepareRestore:output_type -> PrepareRestoreResponse - 15, // [15:22] is the sub-list for method output_type - 8, // [8:15] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name + 12, // 4: GetBackupResponse.backup:type_name -> BackupSummary + 0, // 5: GetBackupResponse.status:type_name -> StatusType + 12, // 6: GetBackupsResponse.backups:type_name -> BackupSummary + 0, // 7: GetBackupsResponse.overallStatus:type_name -> StatusType + 13, // 8: BackupSummary.nodes:type_name -> BackupNode + 0, // 9: BackupSummary.status:type_name -> StatusType + 2, // 10: Medusa.Backup:input_type -> BackupRequest + 2, // 11: Medusa.AsyncBackup:input_type -> BackupRequest + 4, // 12: Medusa.BackupStatus:input_type -> BackupStatusRequest + 6, // 13: Medusa.DeleteBackup:input_type -> DeleteBackupRequest + 8, // 14: Medusa.GetBackup:input_type -> GetBackupRequest + 10, // 15: Medusa.GetBackups:input_type -> GetBackupsRequest + 14, // 16: Medusa.PurgeBackups:input_type -> PurgeBackupsRequest + 16, // 17: Medusa.PrepareRestore:input_type -> PrepareRestoreRequest + 3, // 18: Medusa.Backup:output_type -> BackupResponse + 3, // 19: Medusa.AsyncBackup:output_type -> BackupResponse + 5, // 20: Medusa.BackupStatus:output_type -> BackupStatusResponse + 7, // 21: Medusa.DeleteBackup:output_type -> DeleteBackupResponse + 9, // 22: Medusa.GetBackup:output_type -> GetBackupResponse + 11, // 23: Medusa.GetBackups:output_type -> GetBackupsResponse + 15, // 24: Medusa.PurgeBackups:output_type -> PurgeBackupsResponse + 17, // 25: Medusa.PrepareRestore:output_type -> PrepareRestoreResponse + 18, // [18:26] is the sub-list for method output_type + 10, // [10:18] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_pkg_medusa_medusa_proto_init() } @@ -1216,7 +1325,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBackupsRequest); i { + switch v := v.(*GetBackupRequest); i { case 0: return &v.state case 1: @@ -1228,7 +1337,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBackupsResponse); i { + switch v := v.(*GetBackupResponse); i { case 0: return &v.state case 1: @@ -1240,7 +1349,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BackupSummary); i { + switch v := v.(*GetBackupsRequest); i { case 0: return &v.state case 1: @@ -1252,7 +1361,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BackupNode); i { + switch v := v.(*GetBackupsResponse); i { case 0: return &v.state case 1: @@ -1264,7 +1373,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PurgeBackupsRequest); i { + switch v := v.(*BackupSummary); i { case 0: return &v.state case 1: @@ -1276,7 +1385,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PurgeBackupsResponse); i { + switch v := v.(*BackupNode); i { case 0: return &v.state case 1: @@ -1288,7 +1397,7 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrepareRestoreRequest); i { + switch v := v.(*PurgeBackupsRequest); i { case 0: return &v.state case 1: @@ -1300,6 +1409,30 @@ func file_pkg_medusa_medusa_proto_init() { } } file_pkg_medusa_medusa_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PurgeBackupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_medusa_medusa_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PrepareRestoreRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_pkg_medusa_medusa_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PrepareRestoreResponse); i { case 0: return &v.state @@ -1318,7 +1451,7 @@ func file_pkg_medusa_medusa_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_pkg_medusa_medusa_proto_rawDesc, NumEnums: 2, - NumMessages: 14, + NumMessages: 16, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/medusa/medusa.proto b/pkg/medusa/medusa.proto index 485d0aa05..d402c604c 100644 --- a/pkg/medusa/medusa.proto +++ b/pkg/medusa/medusa.proto @@ -11,6 +11,8 @@ service Medusa { rpc DeleteBackup(DeleteBackupRequest) returns (DeleteBackupResponse); + rpc GetBackup(GetBackupRequest) returns (GetBackupResponse); + rpc GetBackups(GetBackupsRequest) returns (GetBackupsResponse); rpc PurgeBackups(PurgeBackupsRequest) returns (PurgeBackupsResponse); @@ -36,7 +38,7 @@ message BackupRequest { message BackupResponse { string backupName = 1; - StatusType status = 2; + StatusType status = 2; } message BackupStatusRequest { @@ -44,12 +46,9 @@ message BackupStatusRequest { } message BackupStatusResponse { - repeated string finishedNodes = 1; - repeated string unfinishedNodes = 2; - repeated string missingNodes = 3; - string startTime = 4; - string finishTime = 5; - StatusType status = 6; + string startTime = 1; + string finishTime = 2; + StatusType status = 3; } message DeleteBackupRequest { @@ -61,6 +60,15 @@ message DeleteBackupResponse { StatusType status = 2; } +message GetBackupRequest { + string backupName = 1; +} + +message GetBackupResponse { + BackupSummary backup = 1; + StatusType status = 2; +} + message GetBackupsRequest { } @@ -76,8 +84,10 @@ message BackupSummary { int32 totalNodes = 4; int32 finishedNodes = 5; repeated BackupNode nodes = 6; - StatusType status = 7; - string backupType = 8; + StatusType status = 7; + string backupType = 8; + int64 totalSize = 9; + int64 totalObjects = 10; } message BackupNode { diff --git a/pkg/medusa/medusa_grpc.pb.go b/pkg/medusa/medusa_grpc.pb.go index 8e9ee246c..024735d7f 100644 --- a/pkg/medusa/medusa_grpc.pb.go +++ b/pkg/medusa/medusa_grpc.pb.go @@ -1,7 +1,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v4.24.3 +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.20.3 // source: pkg/medusa/medusa.proto package medusa @@ -18,16 +18,6 @@ import ( // Requires gRPC-Go v1.32.0 or later. const _ = grpc.SupportPackageIsVersion7 -const ( - Medusa_Backup_FullMethodName = "/Medusa/Backup" - Medusa_AsyncBackup_FullMethodName = "/Medusa/AsyncBackup" - Medusa_BackupStatus_FullMethodName = "/Medusa/BackupStatus" - Medusa_DeleteBackup_FullMethodName = "/Medusa/DeleteBackup" - Medusa_GetBackups_FullMethodName = "/Medusa/GetBackups" - Medusa_PurgeBackups_FullMethodName = "/Medusa/PurgeBackups" - Medusa_PrepareRestore_FullMethodName = "/Medusa/PrepareRestore" -) - // MedusaClient is the client API for Medusa service. // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. @@ -36,6 +26,7 @@ type MedusaClient interface { AsyncBackup(ctx context.Context, in *BackupRequest, opts ...grpc.CallOption) (*BackupResponse, error) BackupStatus(ctx context.Context, in *BackupStatusRequest, opts ...grpc.CallOption) (*BackupStatusResponse, error) DeleteBackup(ctx context.Context, in *DeleteBackupRequest, opts ...grpc.CallOption) (*DeleteBackupResponse, error) + GetBackup(ctx context.Context, in *GetBackupRequest, opts ...grpc.CallOption) (*GetBackupResponse, error) GetBackups(ctx context.Context, in *GetBackupsRequest, opts ...grpc.CallOption) (*GetBackupsResponse, error) PurgeBackups(ctx context.Context, in *PurgeBackupsRequest, opts ...grpc.CallOption) (*PurgeBackupsResponse, error) PrepareRestore(ctx context.Context, in *PrepareRestoreRequest, opts ...grpc.CallOption) (*PrepareRestoreResponse, error) @@ -51,7 +42,7 @@ func NewMedusaClient(cc grpc.ClientConnInterface) MedusaClient { func (c *medusaClient) Backup(ctx context.Context, in *BackupRequest, opts ...grpc.CallOption) (*BackupResponse, error) { out := new(BackupResponse) - err := c.cc.Invoke(ctx, Medusa_Backup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/Backup", in, out, opts...) if err != nil { return nil, err } @@ -60,7 +51,7 @@ func (c *medusaClient) Backup(ctx context.Context, in *BackupRequest, opts ...gr func (c *medusaClient) AsyncBackup(ctx context.Context, in *BackupRequest, opts ...grpc.CallOption) (*BackupResponse, error) { out := new(BackupResponse) - err := c.cc.Invoke(ctx, Medusa_AsyncBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/AsyncBackup", in, out, opts...) if err != nil { return nil, err } @@ -69,7 +60,7 @@ func (c *medusaClient) AsyncBackup(ctx context.Context, in *BackupRequest, opts func (c *medusaClient) BackupStatus(ctx context.Context, in *BackupStatusRequest, opts ...grpc.CallOption) (*BackupStatusResponse, error) { out := new(BackupStatusResponse) - err := c.cc.Invoke(ctx, Medusa_BackupStatus_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/BackupStatus", in, out, opts...) if err != nil { return nil, err } @@ -78,7 +69,16 @@ func (c *medusaClient) BackupStatus(ctx context.Context, in *BackupStatusRequest func (c *medusaClient) DeleteBackup(ctx context.Context, in *DeleteBackupRequest, opts ...grpc.CallOption) (*DeleteBackupResponse, error) { out := new(DeleteBackupResponse) - err := c.cc.Invoke(ctx, Medusa_DeleteBackup_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/DeleteBackup", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *medusaClient) GetBackup(ctx context.Context, in *GetBackupRequest, opts ...grpc.CallOption) (*GetBackupResponse, error) { + out := new(GetBackupResponse) + err := c.cc.Invoke(ctx, "/Medusa/GetBackup", in, out, opts...) if err != nil { return nil, err } @@ -87,7 +87,7 @@ func (c *medusaClient) DeleteBackup(ctx context.Context, in *DeleteBackupRequest func (c *medusaClient) GetBackups(ctx context.Context, in *GetBackupsRequest, opts ...grpc.CallOption) (*GetBackupsResponse, error) { out := new(GetBackupsResponse) - err := c.cc.Invoke(ctx, Medusa_GetBackups_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/GetBackups", in, out, opts...) if err != nil { return nil, err } @@ -96,7 +96,7 @@ func (c *medusaClient) GetBackups(ctx context.Context, in *GetBackupsRequest, op func (c *medusaClient) PurgeBackups(ctx context.Context, in *PurgeBackupsRequest, opts ...grpc.CallOption) (*PurgeBackupsResponse, error) { out := new(PurgeBackupsResponse) - err := c.cc.Invoke(ctx, Medusa_PurgeBackups_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/PurgeBackups", in, out, opts...) if err != nil { return nil, err } @@ -105,7 +105,7 @@ func (c *medusaClient) PurgeBackups(ctx context.Context, in *PurgeBackupsRequest func (c *medusaClient) PrepareRestore(ctx context.Context, in *PrepareRestoreRequest, opts ...grpc.CallOption) (*PrepareRestoreResponse, error) { out := new(PrepareRestoreResponse) - err := c.cc.Invoke(ctx, Medusa_PrepareRestore_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, "/Medusa/PrepareRestore", in, out, opts...) if err != nil { return nil, err } @@ -120,6 +120,7 @@ type MedusaServer interface { AsyncBackup(context.Context, *BackupRequest) (*BackupResponse, error) BackupStatus(context.Context, *BackupStatusRequest) (*BackupStatusResponse, error) DeleteBackup(context.Context, *DeleteBackupRequest) (*DeleteBackupResponse, error) + GetBackup(context.Context, *GetBackupRequest) (*GetBackupResponse, error) GetBackups(context.Context, *GetBackupsRequest) (*GetBackupsResponse, error) PurgeBackups(context.Context, *PurgeBackupsRequest) (*PurgeBackupsResponse, error) PrepareRestore(context.Context, *PrepareRestoreRequest) (*PrepareRestoreResponse, error) @@ -142,6 +143,9 @@ func (UnimplementedMedusaServer) BackupStatus(context.Context, *BackupStatusRequ func (UnimplementedMedusaServer) DeleteBackup(context.Context, *DeleteBackupRequest) (*DeleteBackupResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteBackup not implemented") } +func (UnimplementedMedusaServer) GetBackup(context.Context, *GetBackupRequest) (*GetBackupResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBackup not implemented") +} func (UnimplementedMedusaServer) GetBackups(context.Context, *GetBackupsRequest) (*GetBackupsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBackups not implemented") } @@ -174,7 +178,7 @@ func _Medusa_Backup_Handler(srv interface{}, ctx context.Context, dec func(inter } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_Backup_FullMethodName, + FullMethod: "/Medusa/Backup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).Backup(ctx, req.(*BackupRequest)) @@ -192,7 +196,7 @@ func _Medusa_AsyncBackup_Handler(srv interface{}, ctx context.Context, dec func( } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_AsyncBackup_FullMethodName, + FullMethod: "/Medusa/AsyncBackup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).AsyncBackup(ctx, req.(*BackupRequest)) @@ -210,7 +214,7 @@ func _Medusa_BackupStatus_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_BackupStatus_FullMethodName, + FullMethod: "/Medusa/BackupStatus", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).BackupStatus(ctx, req.(*BackupStatusRequest)) @@ -228,7 +232,7 @@ func _Medusa_DeleteBackup_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_DeleteBackup_FullMethodName, + FullMethod: "/Medusa/DeleteBackup", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).DeleteBackup(ctx, req.(*DeleteBackupRequest)) @@ -236,6 +240,24 @@ func _Medusa_DeleteBackup_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } +func _Medusa_GetBackup_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetBackupRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MedusaServer).GetBackup(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/Medusa/GetBackup", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MedusaServer).GetBackup(ctx, req.(*GetBackupRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Medusa_GetBackups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(GetBackupsRequest) if err := dec(in); err != nil { @@ -246,7 +268,7 @@ func _Medusa_GetBackups_Handler(srv interface{}, ctx context.Context, dec func(i } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_GetBackups_FullMethodName, + FullMethod: "/Medusa/GetBackups", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).GetBackups(ctx, req.(*GetBackupsRequest)) @@ -264,7 +286,7 @@ func _Medusa_PurgeBackups_Handler(srv interface{}, ctx context.Context, dec func } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_PurgeBackups_FullMethodName, + FullMethod: "/Medusa/PurgeBackups", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).PurgeBackups(ctx, req.(*PurgeBackupsRequest)) @@ -282,7 +304,7 @@ func _Medusa_PrepareRestore_Handler(srv interface{}, ctx context.Context, dec fu } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: Medusa_PrepareRestore_FullMethodName, + FullMethod: "/Medusa/PrepareRestore", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(MedusaServer).PrepareRestore(ctx, req.(*PrepareRestoreRequest)) @@ -313,6 +335,10 @@ var Medusa_ServiceDesc = grpc.ServiceDesc{ MethodName: "DeleteBackup", Handler: _Medusa_DeleteBackup_Handler, }, + { + MethodName: "GetBackup", + Handler: _Medusa_GetBackup_Handler, + }, { MethodName: "GetBackups", Handler: _Medusa_GetBackups_Handler, diff --git a/pkg/medusa/reconcile.go b/pkg/medusa/reconcile.go index d3e19842d..f7950231d 100644 --- a/pkg/medusa/reconcile.go +++ b/pkg/medusa/reconcile.go @@ -24,7 +24,8 @@ import ( const ( DefaultMedusaImageRepository = "k8ssandra" DefaultMedusaImageName = "medusa" - DefaultMedusaVersion = "0.16.2" + // DefaultMedusaVersion pins to an unreleased version to be compatible. will revert back to a release version once we have it + DefaultMedusaVersion = "2e5723d-tmp" DefaultMedusaPort = 50051 DefaultProbeInitialDelay = 10 DefaultProbeTimeout = 1