diff --git a/api/replication.storage/v1alpha1/volumereplication_types.go b/api/replication.storage/v1alpha1/volumereplication_types.go index bfa84b925..858d173bd 100644 --- a/api/replication.storage/v1alpha1/volumereplication_types.go +++ b/api/replication.storage/v1alpha1/volumereplication_types.go @@ -30,25 +30,29 @@ const ( // "ConditionDegraded" means the condition is not fulfilled. // "ConditionResyncing" means the condition is resyncing. const ( - ConditionCompleted = "Completed" - ConditionDegraded = "Degraded" - ConditionResyncing = "Resyncing" - ConditionValidated = "Validated" + ConditionCompleted = "Completed" + ConditionDegraded = "Degraded" + ConditionResyncing = "Resyncing" + ConditionValidated = "Validated" + ConditionReplicating = "Replicating" ) // These are valid messages for various conditions and states of volume replication. const ( - MessagePromoted = "is promoted to primary and replicating to secondary" - MessageHealthy = "is healthy" - MessageNotResyncing = "is not resyncing" - MessageValidated = "is validated and met all prerequisites" - MessageFailedPromoted = "failed to promote" - MessageFailedDemoted = "failed to demote" - MessageFailedPreCondition = "failed to meet prerequisite" - MessageDemoted = "is demoted to secondary" - MessageDegraded = "is degraded" - MessageResyncTriggered = "is resyncing changes from primary to secondary" - MessageResyncFailed = "failed to resync" + MessagePromoted = "is promoted to primary and replicating to secondary" + MessageHealthy = "is healthy" + MessageNotResyncing = "is not resyncing" + MessageValidated = "is validated and met all prerequisites" + MessageFailedPromoted = "failed to promote" + MessageFailedDemoted = "failed to demote" + MessageFailedPreCondition = "failed to meet prerequisite" + MessageDemoted = "is demoted to secondary" + MessageDegraded = "is degraded" + MessageResyncTriggered = "is resyncing changes from primary to secondary" + MessageResyncFailed = "failed to resync" + MessageReplicating = "is replicating" + MessageNotReplicating = "is not replicating" + MessageUnknownReplicationState = "replication status is unknown" ) type Source string @@ -87,6 +91,10 @@ const ( PrerequisiteMet = "PrerequisiteMet" // PrerequisiteNotMet condition represents that the prerequisite is not met. PrerequisiteNotMet = "PrerequisiteNotMet" + // Replicating condition represents that the volume/group is replicating. + Replicating = "Replicating" + // NotReplicating condition represents that the volume/group is not replicating. + NotReplicating = "NotReplicating" ) // ReplicationState represents the replication operations to be performed on the volume. diff --git a/go.mod b/go.mod index 1715f89bc..e1330fafe 100644 --- a/go.mod +++ b/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/container-storage-interface/spec v1.11.0 - github.com/csi-addons/spec v0.2.1-0.20241104111131-27825f744db5 + github.com/csi-addons/spec v0.2.1-0.20250610152019-b5a7205f6a79 github.com/go-logr/logr v1.4.3 github.com/kubernetes-csi/csi-lib-utils v0.22.0 github.com/onsi/ginkgo/v2 v2.23.4 diff --git a/go.sum b/go.sum index 46375ae3a..dcf2384d8 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,8 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/container-storage-interface/spec v1.11.0 h1:H/YKTOeUZwHtyPOr9raR+HgFmGluGCklulxDYxSdVNM= github.com/container-storage-interface/spec v1.11.0/go.mod h1:DtUvaQszPml1YJfIK7c00mlv6/g4wNMLanLgiUbKFRI= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/csi-addons/spec v0.2.1-0.20241104111131-27825f744db5 h1:j9NaWj5KmzEVarmsjxS/NDAhes6Uzq1qhkUGHvDlVBk= -github.com/csi-addons/spec v0.2.1-0.20241104111131-27825f744db5/go.mod h1:Mwq4iLiUV4s+K1bszcWU6aMsR5KPsbIYzzszJ6+56vI= +github.com/csi-addons/spec v0.2.1-0.20250610152019-b5a7205f6a79 h1:ditFTa+wl7DLanGQHSS/AwuITGuWeBXyl7syPO4n+4s= +github.com/csi-addons/spec v0.2.1-0.20250610152019-b5a7205f6a79/go.mod h1:Mwq4iLiUV4s+K1bszcWU6aMsR5KPsbIYzzszJ6+56vI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= diff --git a/internal/controller/replication.storage/status.go b/internal/controller/replication.storage/status.go index 172e10a39..ce44a67c1 100644 --- a/internal/controller/replication.storage/status.go +++ b/internal/controller/replication.storage/status.go @@ -250,6 +250,42 @@ func setFailedResyncCondition(conditions *[]metav1.Condition, observedGeneration }) } +// sets ConditionUnknown for ConditionReplicating condition in VR status.Conditions. +func setUnknownReplicationCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, statusMessage string) { + source := getSource(dataSource) + setStatusCondition(conditions, &metav1.Condition{ + Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageUnknownReplicationState, statusMessage), + Type: v1alpha1.ConditionReplicating, + Reason: v1alpha1.Replicating, + ObservedGeneration: observedGeneration, + Status: metav1.ConditionUnknown, + }) +} + +// sets ConditionTrue for ConditionReplicating condition in VR status.Conditions +func setHealthyReplicationCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, statusMessage string) { + source := getSource(dataSource) + setStatusCondition(conditions, &metav1.Condition{ + Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageReplicating, statusMessage), + Type: v1alpha1.ConditionReplicating, + Reason: v1alpha1.Replicating, + ObservedGeneration: observedGeneration, + Status: metav1.ConditionTrue, + }) +} + +// sets ConditionFalse for ConditionReplicating condition in VR status.Conditions +func setDegradedReplicationCondition(conditions *[]metav1.Condition, observedGeneration int64, dataSource, statusMessage string) { + source := getSource(dataSource) + setStatusCondition(conditions, &metav1.Condition{ + Message: fmt.Sprintf("%s %s: %s", source, v1alpha1.MessageNotReplicating, statusMessage), + Type: v1alpha1.ConditionReplicating, + Reason: v1alpha1.NotReplicating, + ObservedGeneration: observedGeneration, + Status: metav1.ConditionFalse, + }) +} + func setStatusCondition(existingConditions *[]metav1.Condition, newCondition *metav1.Condition) { if existingConditions == nil { existingConditions = &[]metav1.Condition{} diff --git a/internal/controller/replication.storage/volumereplication_controller.go b/internal/controller/replication.storage/volumereplication_controller.go index fbb4df19d..022f2e435 100644 --- a/internal/controller/replication.storage/volumereplication_controller.go +++ b/internal/controller/replication.storage/volumereplication_controller.go @@ -449,6 +449,11 @@ func (r *VolumeReplicationReconciler) Reconcile(ctx context.Context, req ctrl.Re instance.Status.LastSyncBytes = &tb } } + // Check for nil, as info might be nil for knownGRPCErrors. + if info != nil { + // We set Replicating condition only for primary state and not for secondary state. + setReplicationCondition(vr.instance, vr.instance.Spec.DataSource.Kind, info.StatusMessage, info.Status) + } requeueForInfo = true } else if !util.IsUnimplementedError(err) { logger.Error(err, "Failed to get volume replication info") @@ -772,6 +777,18 @@ func setFailureCondition(instance *replicationv1alpha1.VolumeReplication, errMes } } +// setReplicationCondition sets the replication condition in VR's status.Conditions for the PVC/VolumeGroup dataSource based on the replicationStatus value. +func setReplicationCondition(instance *replicationv1alpha1.VolumeReplication, dataSource, statusMessage string, replicationStatus proto.GetVolumeReplicationInfoResponse_Status) { + switch replicationStatus { + case proto.GetVolumeReplicationInfoResponse_UNKNOWN: + setUnknownReplicationCondition(&instance.Status.Conditions, instance.Generation, dataSource, statusMessage) + case proto.GetVolumeReplicationInfoResponse_HEALTHY: + setHealthyReplicationCondition(&instance.Status.Conditions, instance.Generation, dataSource, statusMessage) + case proto.GetVolumeReplicationInfoResponse_DEGRADED, proto.GetVolumeReplicationInfoResponse_ERROR: + setDegradedReplicationCondition(&instance.Status.Conditions, instance.Generation, dataSource, statusMessage) + } +} + func getCurrentTime() *metav1.Time { metav1NowTime := metav1.NewTime(time.Now()) diff --git a/internal/proto/replication.pb.go b/internal/proto/replication.pb.go index bff45eaff..f4bf89507 100644 --- a/internal/proto/replication.pb.go +++ b/internal/proto/replication.pb.go @@ -23,6 +23,67 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Represents the type of replication status that can be returned +// by a storage vendor. +type GetVolumeReplicationInfoResponse_Status int32 + +const ( + // UNKNOWN indicates that the SP does not know the current + // replication status. + GetVolumeReplicationInfoResponse_UNKNOWN GetVolumeReplicationInfoResponse_Status = 0 + // HEALTHY indicates that the replication is working properly. + GetVolumeReplicationInfoResponse_HEALTHY GetVolumeReplicationInfoResponse_Status = 1 + // DEGRADED indicates that the replication has stopped working + // and it may require user intervention. + GetVolumeReplicationInfoResponse_DEGRADED GetVolumeReplicationInfoResponse_Status = 2 + // ERROR indicates that there is an error in replication + // and it may require user intervention. + GetVolumeReplicationInfoResponse_ERROR GetVolumeReplicationInfoResponse_Status = 3 +) + +// Enum value maps for GetVolumeReplicationInfoResponse_Status. +var ( + GetVolumeReplicationInfoResponse_Status_name = map[int32]string{ + 0: "UNKNOWN", + 1: "HEALTHY", + 2: "DEGRADED", + 3: "ERROR", + } + GetVolumeReplicationInfoResponse_Status_value = map[string]int32{ + "UNKNOWN": 0, + "HEALTHY": 1, + "DEGRADED": 2, + "ERROR": 3, + } +) + +func (x GetVolumeReplicationInfoResponse_Status) Enum() *GetVolumeReplicationInfoResponse_Status { + p := new(GetVolumeReplicationInfoResponse_Status) + *p = x + return p +} + +func (x GetVolumeReplicationInfoResponse_Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GetVolumeReplicationInfoResponse_Status) Descriptor() protoreflect.EnumDescriptor { + return file_replication_proto_enumTypes[0].Descriptor() +} + +func (GetVolumeReplicationInfoResponse_Status) Type() protoreflect.EnumType { + return &file_replication_proto_enumTypes[0] +} + +func (x GetVolumeReplicationInfoResponse_Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GetVolumeReplicationInfoResponse_Status.Descriptor instead. +func (GetVolumeReplicationInfoResponse_Status) EnumDescriptor() ([]byte, []int) { + return file_replication_proto_rawDescGZIP(), []int{11, 0} +} + // EnableVolumeReplicationRequest holds the required information to enable // replication on a volume. type EnableVolumeReplicationRequest struct { @@ -784,6 +845,14 @@ type GetVolumeReplicationInfoResponse struct { // The value of this field MUST NOT be negative. // This field is OPTIONAL. LastSyncBytes int64 `protobuf:"varint,3,opt,name=last_sync_bytes,json=lastSyncBytes,proto3" json:"last_sync_bytes,omitempty"` + // Represents the current replication status as reported by + // the backend storage system. + // This field is REQUIRED. + Status GetVolumeReplicationInfoResponse_Status `protobuf:"varint,4,opt,name=status,proto3,enum=proto.GetVolumeReplicationInfoResponse_Status" json:"status,omitempty"` + // Contains a human readable message that describes the current + // state of replication + // This field is OPTIONAL. + StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -839,6 +908,20 @@ func (x *GetVolumeReplicationInfoResponse) GetLastSyncBytes() int64 { return 0 } +func (x *GetVolumeReplicationInfoResponse) GetStatus() GetVolumeReplicationInfoResponse_Status { + if x != nil { + return x.Status + } + return GetVolumeReplicationInfoResponse_UNKNOWN +} + +func (x *GetVolumeReplicationInfoResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + // Specifies what source the replication will be created from. One of the // type fields MUST be specified. type ReplicationSource struct { @@ -1099,11 +1182,18 @@ const file_replication_proto_rawDesc = "" + "\vsecret_name\x18\x03 \x01(\tR\n" + "secretName\x12)\n" + "\x10secret_namespace\x18\x04 \x01(\tR\x0fsecretNamespace\x12G\n" + - "\x12replication_source\x18\x05 \x01(\v2\x18.proto.ReplicationSourceR\x11replicationSourceJ\x04\b\x01\x10\x02\"\xd5\x01\n" + + "\x12replication_source\x18\x05 \x01(\v2\x18.proto.ReplicationSourceR\x11replicationSourceJ\x04\b\x01\x10\x02\"\x81\x03\n" + " GetVolumeReplicationInfoResponse\x12@\n" + "\x0elast_sync_time\x18\x01 \x01(\v2\x1a.google.protobuf.TimestampR\flastSyncTime\x12G\n" + "\x12last_sync_duration\x18\x02 \x01(\v2\x19.google.protobuf.DurationR\x10lastSyncDuration\x12&\n" + - "\x0flast_sync_bytes\x18\x03 \x01(\x03R\rlastSyncBytes\"\x97\x02\n" + + "\x0flast_sync_bytes\x18\x03 \x01(\x03R\rlastSyncBytes\x12F\n" + + "\x06status\x18\x04 \x01(\x0e2..proto.GetVolumeReplicationInfoResponse.StatusR\x06status\x12%\n" + + "\x0estatus_message\x18\x05 \x01(\tR\rstatusMessage\";\n" + + "\x06Status\x12\v\n" + + "\aUNKNOWN\x10\x00\x12\v\n" + + "\aHEALTHY\x10\x01\x12\f\n" + + "\bDEGRADED\x10\x02\x12\t\n" + + "\x05ERROR\x10\x03\"\x97\x02\n" + "\x11ReplicationSource\x12?\n" + "\x06volume\x18\x01 \x01(\v2%.proto.ReplicationSource.VolumeSourceH\x00R\x06volume\x12O\n" + "\fvolume_group\x18\x02 \x01(\v2*.proto.ReplicationSource.VolumeGroupSourceH\x00R\vvolumeGroup\x1a+\n" + @@ -1132,64 +1222,67 @@ func file_replication_proto_rawDescGZIP() []byte { return file_replication_proto_rawDescData } +var file_replication_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_replication_proto_msgTypes = make([]protoimpl.MessageInfo, 20) var file_replication_proto_goTypes = []any{ - (*EnableVolumeReplicationRequest)(nil), // 0: proto.EnableVolumeReplicationRequest - (*EnableVolumeReplicationResponse)(nil), // 1: proto.EnableVolumeReplicationResponse - (*DisableVolumeReplicationRequest)(nil), // 2: proto.DisableVolumeReplicationRequest - (*DisableVolumeReplicationResponse)(nil), // 3: proto.DisableVolumeReplicationResponse - (*PromoteVolumeRequest)(nil), // 4: proto.PromoteVolumeRequest - (*PromoteVolumeResponse)(nil), // 5: proto.PromoteVolumeResponse - (*DemoteVolumeRequest)(nil), // 6: proto.DemoteVolumeRequest - (*DemoteVolumeResponse)(nil), // 7: proto.DemoteVolumeResponse - (*ResyncVolumeRequest)(nil), // 8: proto.ResyncVolumeRequest - (*ResyncVolumeResponse)(nil), // 9: proto.ResyncVolumeResponse - (*GetVolumeReplicationInfoRequest)(nil), // 10: proto.GetVolumeReplicationInfoRequest - (*GetVolumeReplicationInfoResponse)(nil), // 11: proto.GetVolumeReplicationInfoResponse - (*ReplicationSource)(nil), // 12: proto.ReplicationSource - nil, // 13: proto.EnableVolumeReplicationRequest.ParametersEntry - nil, // 14: proto.DisableVolumeReplicationRequest.ParametersEntry - nil, // 15: proto.PromoteVolumeRequest.ParametersEntry - nil, // 16: proto.DemoteVolumeRequest.ParametersEntry - nil, // 17: proto.ResyncVolumeRequest.ParametersEntry - (*ReplicationSource_VolumeSource)(nil), // 18: proto.ReplicationSource.VolumeSource - (*ReplicationSource_VolumeGroupSource)(nil), // 19: proto.ReplicationSource.VolumeGroupSource - (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 21: google.protobuf.Duration + (GetVolumeReplicationInfoResponse_Status)(0), // 0: proto.GetVolumeReplicationInfoResponse.Status + (*EnableVolumeReplicationRequest)(nil), // 1: proto.EnableVolumeReplicationRequest + (*EnableVolumeReplicationResponse)(nil), // 2: proto.EnableVolumeReplicationResponse + (*DisableVolumeReplicationRequest)(nil), // 3: proto.DisableVolumeReplicationRequest + (*DisableVolumeReplicationResponse)(nil), // 4: proto.DisableVolumeReplicationResponse + (*PromoteVolumeRequest)(nil), // 5: proto.PromoteVolumeRequest + (*PromoteVolumeResponse)(nil), // 6: proto.PromoteVolumeResponse + (*DemoteVolumeRequest)(nil), // 7: proto.DemoteVolumeRequest + (*DemoteVolumeResponse)(nil), // 8: proto.DemoteVolumeResponse + (*ResyncVolumeRequest)(nil), // 9: proto.ResyncVolumeRequest + (*ResyncVolumeResponse)(nil), // 10: proto.ResyncVolumeResponse + (*GetVolumeReplicationInfoRequest)(nil), // 11: proto.GetVolumeReplicationInfoRequest + (*GetVolumeReplicationInfoResponse)(nil), // 12: proto.GetVolumeReplicationInfoResponse + (*ReplicationSource)(nil), // 13: proto.ReplicationSource + nil, // 14: proto.EnableVolumeReplicationRequest.ParametersEntry + nil, // 15: proto.DisableVolumeReplicationRequest.ParametersEntry + nil, // 16: proto.PromoteVolumeRequest.ParametersEntry + nil, // 17: proto.DemoteVolumeRequest.ParametersEntry + nil, // 18: proto.ResyncVolumeRequest.ParametersEntry + (*ReplicationSource_VolumeSource)(nil), // 19: proto.ReplicationSource.VolumeSource + (*ReplicationSource_VolumeGroupSource)(nil), // 20: proto.ReplicationSource.VolumeGroupSource + (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 22: google.protobuf.Duration } var file_replication_proto_depIdxs = []int32{ - 13, // 0: proto.EnableVolumeReplicationRequest.parameters:type_name -> proto.EnableVolumeReplicationRequest.ParametersEntry - 12, // 1: proto.EnableVolumeReplicationRequest.replication_source:type_name -> proto.ReplicationSource - 14, // 2: proto.DisableVolumeReplicationRequest.parameters:type_name -> proto.DisableVolumeReplicationRequest.ParametersEntry - 12, // 3: proto.DisableVolumeReplicationRequest.replication_source:type_name -> proto.ReplicationSource - 15, // 4: proto.PromoteVolumeRequest.parameters:type_name -> proto.PromoteVolumeRequest.ParametersEntry - 12, // 5: proto.PromoteVolumeRequest.replication_source:type_name -> proto.ReplicationSource - 16, // 6: proto.DemoteVolumeRequest.parameters:type_name -> proto.DemoteVolumeRequest.ParametersEntry - 12, // 7: proto.DemoteVolumeRequest.replication_source:type_name -> proto.ReplicationSource - 17, // 8: proto.ResyncVolumeRequest.parameters:type_name -> proto.ResyncVolumeRequest.ParametersEntry - 12, // 9: proto.ResyncVolumeRequest.replication_source:type_name -> proto.ReplicationSource - 12, // 10: proto.GetVolumeReplicationInfoRequest.replication_source:type_name -> proto.ReplicationSource - 20, // 11: proto.GetVolumeReplicationInfoResponse.last_sync_time:type_name -> google.protobuf.Timestamp - 21, // 12: proto.GetVolumeReplicationInfoResponse.last_sync_duration:type_name -> google.protobuf.Duration - 18, // 13: proto.ReplicationSource.volume:type_name -> proto.ReplicationSource.VolumeSource - 19, // 14: proto.ReplicationSource.volume_group:type_name -> proto.ReplicationSource.VolumeGroupSource - 0, // 15: proto.Replication.EnableVolumeReplication:input_type -> proto.EnableVolumeReplicationRequest - 2, // 16: proto.Replication.DisableVolumeReplication:input_type -> proto.DisableVolumeReplicationRequest - 4, // 17: proto.Replication.PromoteVolume:input_type -> proto.PromoteVolumeRequest - 6, // 18: proto.Replication.DemoteVolume:input_type -> proto.DemoteVolumeRequest - 8, // 19: proto.Replication.ResyncVolume:input_type -> proto.ResyncVolumeRequest - 10, // 20: proto.Replication.GetVolumeReplicationInfo:input_type -> proto.GetVolumeReplicationInfoRequest - 1, // 21: proto.Replication.EnableVolumeReplication:output_type -> proto.EnableVolumeReplicationResponse - 3, // 22: proto.Replication.DisableVolumeReplication:output_type -> proto.DisableVolumeReplicationResponse - 5, // 23: proto.Replication.PromoteVolume:output_type -> proto.PromoteVolumeResponse - 7, // 24: proto.Replication.DemoteVolume:output_type -> proto.DemoteVolumeResponse - 9, // 25: proto.Replication.ResyncVolume:output_type -> proto.ResyncVolumeResponse - 11, // 26: proto.Replication.GetVolumeReplicationInfo:output_type -> proto.GetVolumeReplicationInfoResponse - 21, // [21:27] is the sub-list for method output_type - 15, // [15:21] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 14, // 0: proto.EnableVolumeReplicationRequest.parameters:type_name -> proto.EnableVolumeReplicationRequest.ParametersEntry + 13, // 1: proto.EnableVolumeReplicationRequest.replication_source:type_name -> proto.ReplicationSource + 15, // 2: proto.DisableVolumeReplicationRequest.parameters:type_name -> proto.DisableVolumeReplicationRequest.ParametersEntry + 13, // 3: proto.DisableVolumeReplicationRequest.replication_source:type_name -> proto.ReplicationSource + 16, // 4: proto.PromoteVolumeRequest.parameters:type_name -> proto.PromoteVolumeRequest.ParametersEntry + 13, // 5: proto.PromoteVolumeRequest.replication_source:type_name -> proto.ReplicationSource + 17, // 6: proto.DemoteVolumeRequest.parameters:type_name -> proto.DemoteVolumeRequest.ParametersEntry + 13, // 7: proto.DemoteVolumeRequest.replication_source:type_name -> proto.ReplicationSource + 18, // 8: proto.ResyncVolumeRequest.parameters:type_name -> proto.ResyncVolumeRequest.ParametersEntry + 13, // 9: proto.ResyncVolumeRequest.replication_source:type_name -> proto.ReplicationSource + 13, // 10: proto.GetVolumeReplicationInfoRequest.replication_source:type_name -> proto.ReplicationSource + 21, // 11: proto.GetVolumeReplicationInfoResponse.last_sync_time:type_name -> google.protobuf.Timestamp + 22, // 12: proto.GetVolumeReplicationInfoResponse.last_sync_duration:type_name -> google.protobuf.Duration + 0, // 13: proto.GetVolumeReplicationInfoResponse.status:type_name -> proto.GetVolumeReplicationInfoResponse.Status + 19, // 14: proto.ReplicationSource.volume:type_name -> proto.ReplicationSource.VolumeSource + 20, // 15: proto.ReplicationSource.volume_group:type_name -> proto.ReplicationSource.VolumeGroupSource + 1, // 16: proto.Replication.EnableVolumeReplication:input_type -> proto.EnableVolumeReplicationRequest + 3, // 17: proto.Replication.DisableVolumeReplication:input_type -> proto.DisableVolumeReplicationRequest + 5, // 18: proto.Replication.PromoteVolume:input_type -> proto.PromoteVolumeRequest + 7, // 19: proto.Replication.DemoteVolume:input_type -> proto.DemoteVolumeRequest + 9, // 20: proto.Replication.ResyncVolume:input_type -> proto.ResyncVolumeRequest + 11, // 21: proto.Replication.GetVolumeReplicationInfo:input_type -> proto.GetVolumeReplicationInfoRequest + 2, // 22: proto.Replication.EnableVolumeReplication:output_type -> proto.EnableVolumeReplicationResponse + 4, // 23: proto.Replication.DisableVolumeReplication:output_type -> proto.DisableVolumeReplicationResponse + 6, // 24: proto.Replication.PromoteVolume:output_type -> proto.PromoteVolumeResponse + 8, // 25: proto.Replication.DemoteVolume:output_type -> proto.DemoteVolumeResponse + 10, // 26: proto.Replication.ResyncVolume:output_type -> proto.ResyncVolumeResponse + 12, // 27: proto.Replication.GetVolumeReplicationInfo:output_type -> proto.GetVolumeReplicationInfoResponse + 22, // [22:28] is the sub-list for method output_type + 16, // [16:22] is the sub-list for method input_type + 16, // [16:16] is the sub-list for extension type_name + 16, // [16:16] is the sub-list for extension extendee + 0, // [0:16] is the sub-list for field type_name } func init() { file_replication_proto_init() } @@ -1206,13 +1299,14 @@ func file_replication_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_replication_proto_rawDesc), len(file_replication_proto_rawDesc)), - NumEnums: 0, + NumEnums: 1, NumMessages: 20, NumExtensions: 0, NumServices: 1, }, GoTypes: file_replication_proto_goTypes, DependencyIndexes: file_replication_proto_depIdxs, + EnumInfos: file_replication_proto_enumTypes, MessageInfos: file_replication_proto_msgTypes, }.Build() File_replication_proto = out.File diff --git a/internal/proto/replication.proto b/internal/proto/replication.proto index 55db456ca..229bfce2f 100644 --- a/internal/proto/replication.proto +++ b/internal/proto/replication.proto @@ -195,6 +195,29 @@ message GetVolumeReplicationInfoResponse{ // The value of this field MUST NOT be negative. // This field is OPTIONAL. int64 last_sync_bytes = 3; + // Represents the type of replication status that can be returned + // by a storage vendor. + enum Status { + // UNKNOWN indicates that the SP does not know the current + // replication status. + UNKNOWN = 0; + // HEALTHY indicates that the replication is working properly. + HEALTHY = 1; + // DEGRADED indicates that the replication has stopped working + // and it may require user intervention. + DEGRADED = 2; + // ERROR indicates that there is an error in replication + // and it may require user intervention. + ERROR = 3; + } + // Represents the current replication status as reported by + // the backend storage system. + // This field is REQUIRED. + Status status = 4; + // Contains a human readable message that describes the current + // state of replication + // This field is OPTIONAL. + string status_message = 5; } // Specifies what source the replication will be created from. One of the diff --git a/internal/sidecar/service/volumereplication.go b/internal/sidecar/service/volumereplication.go index c05eab8a6..39449dca3 100644 --- a/internal/sidecar/service/volumereplication.go +++ b/internal/sidecar/service/volumereplication.go @@ -255,6 +255,8 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo( LastSyncTime: lastsynctime, LastSyncDuration: resp.GetLastSyncDuration(), LastSyncBytes: resp.GetLastSyncBytes(), + Status: proto.GetVolumeReplicationInfoResponse_Status(resp.GetStatus()), + StatusMessage: resp.StatusMessage, }, nil } diff --git a/vendor/github.com/csi-addons/spec/lib/go/replication/replication.pb.go b/vendor/github.com/csi-addons/spec/lib/go/replication/replication.pb.go index 834d40500..c9748e430 100644 --- a/vendor/github.com/csi-addons/spec/lib/go/replication/replication.pb.go +++ b/vendor/github.com/csi-addons/spec/lib/go/replication/replication.pb.go @@ -26,6 +26,67 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// Represents the type of replication status that can be returned +// by a storage vendor. +type GetVolumeReplicationInfoResponse_Status int32 + +const ( + // UNKNOWN indicates that the SP does not know the current + // replication status. + GetVolumeReplicationInfoResponse_UNKNOWN GetVolumeReplicationInfoResponse_Status = 0 + // HEALTHY indicates that the replication is working properly. + GetVolumeReplicationInfoResponse_HEALTHY GetVolumeReplicationInfoResponse_Status = 1 + // DEGRADED indicates that the replication has stopped working + // and it may require user intervention. + GetVolumeReplicationInfoResponse_DEGRADED GetVolumeReplicationInfoResponse_Status = 2 + // ERROR indicates that there is an error in replication + // and it may require user intervention. + GetVolumeReplicationInfoResponse_ERROR GetVolumeReplicationInfoResponse_Status = 3 +) + +// Enum value maps for GetVolumeReplicationInfoResponse_Status. +var ( + GetVolumeReplicationInfoResponse_Status_name = map[int32]string{ + 0: "UNKNOWN", + 1: "HEALTHY", + 2: "DEGRADED", + 3: "ERROR", + } + GetVolumeReplicationInfoResponse_Status_value = map[string]int32{ + "UNKNOWN": 0, + "HEALTHY": 1, + "DEGRADED": 2, + "ERROR": 3, + } +) + +func (x GetVolumeReplicationInfoResponse_Status) Enum() *GetVolumeReplicationInfoResponse_Status { + p := new(GetVolumeReplicationInfoResponse_Status) + *p = x + return p +} + +func (x GetVolumeReplicationInfoResponse_Status) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GetVolumeReplicationInfoResponse_Status) Descriptor() protoreflect.EnumDescriptor { + return file_replication_replication_proto_enumTypes[0].Descriptor() +} + +func (GetVolumeReplicationInfoResponse_Status) Type() protoreflect.EnumType { + return &file_replication_replication_proto_enumTypes[0] +} + +func (x GetVolumeReplicationInfoResponse_Status) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GetVolumeReplicationInfoResponse_Status.Descriptor instead. +func (GetVolumeReplicationInfoResponse_Status) EnumDescriptor() ([]byte, []int) { + return file_replication_replication_proto_rawDescGZIP(), []int{11, 0} +} + // EnableVolumeReplicationRequest holds the required information to enable // replication on a volume. type EnableVolumeReplicationRequest struct { @@ -891,6 +952,14 @@ type GetVolumeReplicationInfoResponse struct { // This field is OPTIONAL. // The value of this field MUST NOT be negative. LastSyncBytes int64 `protobuf:"varint,3,opt,name=last_sync_bytes,json=lastSyncBytes,proto3" json:"last_sync_bytes,omitempty"` + // Represents the current replication status as reported by + // the backend storage system. + // This field is REQUIRED. + Status GetVolumeReplicationInfoResponse_Status `protobuf:"varint,4,opt,name=status,proto3,enum=replication.GetVolumeReplicationInfoResponse_Status" json:"status,omitempty"` + // Contains a human readable message that describes the current + // state of replication + // This field is OPTIONAL. + StatusMessage string `protobuf:"bytes,5,opt,name=status_message,json=statusMessage,proto3" json:"status_message,omitempty"` } func (x *GetVolumeReplicationInfoResponse) Reset() { @@ -946,6 +1015,20 @@ func (x *GetVolumeReplicationInfoResponse) GetLastSyncBytes() int64 { return 0 } +func (x *GetVolumeReplicationInfoResponse) GetStatus() GetVolumeReplicationInfoResponse_Status { + if x != nil { + return x.Status + } + return GetVolumeReplicationInfoResponse_UNKNOWN +} + +func (x *GetVolumeReplicationInfoResponse) GetStatusMessage() string { + if x != nil { + return x.StatusMessage + } + return "" +} + // Specifies what source the replication will be created from. One of the // type fields MUST be specified. type ReplicationSource struct { @@ -1353,7 +1436,7 @@ var file_replication_replication_proto_rawDesc = []byte{ 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0xd5, 0x01, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x38, 0x01, 0x22, 0x87, 0x03, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, @@ -1366,71 +1449,82 @@ var file_replication_replication_proto_rawDesc = []byte{ 0x52, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x6c, 0x61, 0x73, - 0x74, 0x53, 0x79, 0x6e, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x22, 0xa2, 0x02, 0x0a, 0x11, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x12, 0x45, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x2b, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, 0x52, - 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x72, - 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, - 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x00, - 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, 0x2b, 0x0a, - 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x1a, 0x3b, 0x0a, 0x11, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, - 0x26, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, - 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x32, - 0x82, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, 0x12, 0x76, - 0x0a, 0x17, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x72, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, - 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x18, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, - 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x74, 0x53, 0x79, 0x6e, 0x63, 0x42, 0x79, 0x74, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x3b, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, + 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x45, 0x41, 0x4c, 0x54, 0x48, + 0x59, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x44, 0x45, 0x47, 0x52, 0x41, 0x44, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0x03, 0x22, 0xa2, 0x02, 0x0a, + 0x11, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x12, 0x45, 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x2e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, + 0x00, 0x52, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x54, 0x0a, 0x0b, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, + 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2e, 0x56, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x48, 0x00, 0x52, 0x0b, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x1a, + 0x2b, 0x0a, 0x0c, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, + 0x1b, 0x0a, 0x09, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x49, 0x64, 0x1a, 0x3b, 0x0a, 0x11, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x6f, 0x75, + 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x76, 0x6f, 0x6c, 0x75, + 0x6d, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x49, 0x64, 0x42, 0x06, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x32, 0x82, 0x05, 0x0a, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x6c, 0x65, 0x72, + 0x12, 0x76, 0x0a, 0x17, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2b, 0x2e, 0x72, 0x65, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x18, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, - 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, - 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0c, 0x44, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x65, - 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, + 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x21, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, + 0x0c, 0x44, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x56, 0x6f, 0x6c, 0x75, - 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x44, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x56, 0x6f, + 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x20, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x18, 0x47, 0x65, 0x74, - 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x52, 0x65, 0x73, 0x79, 0x6e, 0x63, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x18, 0x47, + 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, + 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x2e, 0x47, 0x65, 0x74, 0x56, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x52, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x00, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, 0x66, 0x69, - 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0xcc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x70, 0x68, 0x61, - 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x3b, 0x72, 0x65, 0x70, 0x6c, 0x69, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x3a, 0x3f, 0x0a, 0x0b, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5f, + 0x66, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1d, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0xcc, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x6c, 0x70, + 0x68, 0x61, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x0f, 0x5a, 0x0d, 0x2e, 0x3b, 0x72, 0x65, 0x70, + 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1445,78 +1539,81 @@ func file_replication_replication_proto_rawDescGZIP() []byte { return file_replication_replication_proto_rawDescData } +var file_replication_replication_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_replication_replication_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_replication_replication_proto_goTypes = []interface{}{ - (*EnableVolumeReplicationRequest)(nil), // 0: replication.EnableVolumeReplicationRequest - (*EnableVolumeReplicationResponse)(nil), // 1: replication.EnableVolumeReplicationResponse - (*DisableVolumeReplicationRequest)(nil), // 2: replication.DisableVolumeReplicationRequest - (*DisableVolumeReplicationResponse)(nil), // 3: replication.DisableVolumeReplicationResponse - (*PromoteVolumeRequest)(nil), // 4: replication.PromoteVolumeRequest - (*PromoteVolumeResponse)(nil), // 5: replication.PromoteVolumeResponse - (*DemoteVolumeRequest)(nil), // 6: replication.DemoteVolumeRequest - (*DemoteVolumeResponse)(nil), // 7: replication.DemoteVolumeResponse - (*ResyncVolumeRequest)(nil), // 8: replication.ResyncVolumeRequest - (*ResyncVolumeResponse)(nil), // 9: replication.ResyncVolumeResponse - (*GetVolumeReplicationInfoRequest)(nil), // 10: replication.GetVolumeReplicationInfoRequest - (*GetVolumeReplicationInfoResponse)(nil), // 11: replication.GetVolumeReplicationInfoResponse - (*ReplicationSource)(nil), // 12: replication.ReplicationSource - nil, // 13: replication.EnableVolumeReplicationRequest.ParametersEntry - nil, // 14: replication.EnableVolumeReplicationRequest.SecretsEntry - nil, // 15: replication.DisableVolumeReplicationRequest.ParametersEntry - nil, // 16: replication.DisableVolumeReplicationRequest.SecretsEntry - nil, // 17: replication.PromoteVolumeRequest.ParametersEntry - nil, // 18: replication.PromoteVolumeRequest.SecretsEntry - nil, // 19: replication.DemoteVolumeRequest.ParametersEntry - nil, // 20: replication.DemoteVolumeRequest.SecretsEntry - nil, // 21: replication.ResyncVolumeRequest.ParametersEntry - nil, // 22: replication.ResyncVolumeRequest.SecretsEntry - nil, // 23: replication.GetVolumeReplicationInfoRequest.SecretsEntry - (*ReplicationSource_VolumeSource)(nil), // 24: replication.ReplicationSource.VolumeSource - (*ReplicationSource_VolumeGroupSource)(nil), // 25: replication.ReplicationSource.VolumeGroupSource - (*timestamppb.Timestamp)(nil), // 26: google.protobuf.Timestamp - (*durationpb.Duration)(nil), // 27: google.protobuf.Duration - (*descriptorpb.FieldOptions)(nil), // 28: google.protobuf.FieldOptions + (GetVolumeReplicationInfoResponse_Status)(0), // 0: replication.GetVolumeReplicationInfoResponse.Status + (*EnableVolumeReplicationRequest)(nil), // 1: replication.EnableVolumeReplicationRequest + (*EnableVolumeReplicationResponse)(nil), // 2: replication.EnableVolumeReplicationResponse + (*DisableVolumeReplicationRequest)(nil), // 3: replication.DisableVolumeReplicationRequest + (*DisableVolumeReplicationResponse)(nil), // 4: replication.DisableVolumeReplicationResponse + (*PromoteVolumeRequest)(nil), // 5: replication.PromoteVolumeRequest + (*PromoteVolumeResponse)(nil), // 6: replication.PromoteVolumeResponse + (*DemoteVolumeRequest)(nil), // 7: replication.DemoteVolumeRequest + (*DemoteVolumeResponse)(nil), // 8: replication.DemoteVolumeResponse + (*ResyncVolumeRequest)(nil), // 9: replication.ResyncVolumeRequest + (*ResyncVolumeResponse)(nil), // 10: replication.ResyncVolumeResponse + (*GetVolumeReplicationInfoRequest)(nil), // 11: replication.GetVolumeReplicationInfoRequest + (*GetVolumeReplicationInfoResponse)(nil), // 12: replication.GetVolumeReplicationInfoResponse + (*ReplicationSource)(nil), // 13: replication.ReplicationSource + nil, // 14: replication.EnableVolumeReplicationRequest.ParametersEntry + nil, // 15: replication.EnableVolumeReplicationRequest.SecretsEntry + nil, // 16: replication.DisableVolumeReplicationRequest.ParametersEntry + nil, // 17: replication.DisableVolumeReplicationRequest.SecretsEntry + nil, // 18: replication.PromoteVolumeRequest.ParametersEntry + nil, // 19: replication.PromoteVolumeRequest.SecretsEntry + nil, // 20: replication.DemoteVolumeRequest.ParametersEntry + nil, // 21: replication.DemoteVolumeRequest.SecretsEntry + nil, // 22: replication.ResyncVolumeRequest.ParametersEntry + nil, // 23: replication.ResyncVolumeRequest.SecretsEntry + nil, // 24: replication.GetVolumeReplicationInfoRequest.SecretsEntry + (*ReplicationSource_VolumeSource)(nil), // 25: replication.ReplicationSource.VolumeSource + (*ReplicationSource_VolumeGroupSource)(nil), // 26: replication.ReplicationSource.VolumeGroupSource + (*timestamppb.Timestamp)(nil), // 27: google.protobuf.Timestamp + (*durationpb.Duration)(nil), // 28: google.protobuf.Duration + (*descriptorpb.FieldOptions)(nil), // 29: google.protobuf.FieldOptions } var file_replication_replication_proto_depIdxs = []int32{ - 13, // 0: replication.EnableVolumeReplicationRequest.parameters:type_name -> replication.EnableVolumeReplicationRequest.ParametersEntry - 14, // 1: replication.EnableVolumeReplicationRequest.secrets:type_name -> replication.EnableVolumeReplicationRequest.SecretsEntry - 12, // 2: replication.EnableVolumeReplicationRequest.replication_source:type_name -> replication.ReplicationSource - 15, // 3: replication.DisableVolumeReplicationRequest.parameters:type_name -> replication.DisableVolumeReplicationRequest.ParametersEntry - 16, // 4: replication.DisableVolumeReplicationRequest.secrets:type_name -> replication.DisableVolumeReplicationRequest.SecretsEntry - 12, // 5: replication.DisableVolumeReplicationRequest.replication_source:type_name -> replication.ReplicationSource - 17, // 6: replication.PromoteVolumeRequest.parameters:type_name -> replication.PromoteVolumeRequest.ParametersEntry - 18, // 7: replication.PromoteVolumeRequest.secrets:type_name -> replication.PromoteVolumeRequest.SecretsEntry - 12, // 8: replication.PromoteVolumeRequest.replication_source:type_name -> replication.ReplicationSource - 19, // 9: replication.DemoteVolumeRequest.parameters:type_name -> replication.DemoteVolumeRequest.ParametersEntry - 20, // 10: replication.DemoteVolumeRequest.secrets:type_name -> replication.DemoteVolumeRequest.SecretsEntry - 12, // 11: replication.DemoteVolumeRequest.replication_source:type_name -> replication.ReplicationSource - 21, // 12: replication.ResyncVolumeRequest.parameters:type_name -> replication.ResyncVolumeRequest.ParametersEntry - 22, // 13: replication.ResyncVolumeRequest.secrets:type_name -> replication.ResyncVolumeRequest.SecretsEntry - 12, // 14: replication.ResyncVolumeRequest.replication_source:type_name -> replication.ReplicationSource - 23, // 15: replication.GetVolumeReplicationInfoRequest.secrets:type_name -> replication.GetVolumeReplicationInfoRequest.SecretsEntry - 12, // 16: replication.GetVolumeReplicationInfoRequest.replication_source:type_name -> replication.ReplicationSource - 26, // 17: replication.GetVolumeReplicationInfoResponse.last_sync_time:type_name -> google.protobuf.Timestamp - 27, // 18: replication.GetVolumeReplicationInfoResponse.last_sync_duration:type_name -> google.protobuf.Duration - 24, // 19: replication.ReplicationSource.volume:type_name -> replication.ReplicationSource.VolumeSource - 25, // 20: replication.ReplicationSource.volumegroup:type_name -> replication.ReplicationSource.VolumeGroupSource - 28, // 21: replication.alpha_field:extendee -> google.protobuf.FieldOptions - 0, // 22: replication.Controller.EnableVolumeReplication:input_type -> replication.EnableVolumeReplicationRequest - 2, // 23: replication.Controller.DisableVolumeReplication:input_type -> replication.DisableVolumeReplicationRequest - 4, // 24: replication.Controller.PromoteVolume:input_type -> replication.PromoteVolumeRequest - 6, // 25: replication.Controller.DemoteVolume:input_type -> replication.DemoteVolumeRequest - 8, // 26: replication.Controller.ResyncVolume:input_type -> replication.ResyncVolumeRequest - 10, // 27: replication.Controller.GetVolumeReplicationInfo:input_type -> replication.GetVolumeReplicationInfoRequest - 1, // 28: replication.Controller.EnableVolumeReplication:output_type -> replication.EnableVolumeReplicationResponse - 3, // 29: replication.Controller.DisableVolumeReplication:output_type -> replication.DisableVolumeReplicationResponse - 5, // 30: replication.Controller.PromoteVolume:output_type -> replication.PromoteVolumeResponse - 7, // 31: replication.Controller.DemoteVolume:output_type -> replication.DemoteVolumeResponse - 9, // 32: replication.Controller.ResyncVolume:output_type -> replication.ResyncVolumeResponse - 11, // 33: replication.Controller.GetVolumeReplicationInfo:output_type -> replication.GetVolumeReplicationInfoResponse - 28, // [28:34] is the sub-list for method output_type - 22, // [22:28] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 21, // [21:22] is the sub-list for extension extendee - 0, // [0:21] is the sub-list for field type_name + 14, // 0: replication.EnableVolumeReplicationRequest.parameters:type_name -> replication.EnableVolumeReplicationRequest.ParametersEntry + 15, // 1: replication.EnableVolumeReplicationRequest.secrets:type_name -> replication.EnableVolumeReplicationRequest.SecretsEntry + 13, // 2: replication.EnableVolumeReplicationRequest.replication_source:type_name -> replication.ReplicationSource + 16, // 3: replication.DisableVolumeReplicationRequest.parameters:type_name -> replication.DisableVolumeReplicationRequest.ParametersEntry + 17, // 4: replication.DisableVolumeReplicationRequest.secrets:type_name -> replication.DisableVolumeReplicationRequest.SecretsEntry + 13, // 5: replication.DisableVolumeReplicationRequest.replication_source:type_name -> replication.ReplicationSource + 18, // 6: replication.PromoteVolumeRequest.parameters:type_name -> replication.PromoteVolumeRequest.ParametersEntry + 19, // 7: replication.PromoteVolumeRequest.secrets:type_name -> replication.PromoteVolumeRequest.SecretsEntry + 13, // 8: replication.PromoteVolumeRequest.replication_source:type_name -> replication.ReplicationSource + 20, // 9: replication.DemoteVolumeRequest.parameters:type_name -> replication.DemoteVolumeRequest.ParametersEntry + 21, // 10: replication.DemoteVolumeRequest.secrets:type_name -> replication.DemoteVolumeRequest.SecretsEntry + 13, // 11: replication.DemoteVolumeRequest.replication_source:type_name -> replication.ReplicationSource + 22, // 12: replication.ResyncVolumeRequest.parameters:type_name -> replication.ResyncVolumeRequest.ParametersEntry + 23, // 13: replication.ResyncVolumeRequest.secrets:type_name -> replication.ResyncVolumeRequest.SecretsEntry + 13, // 14: replication.ResyncVolumeRequest.replication_source:type_name -> replication.ReplicationSource + 24, // 15: replication.GetVolumeReplicationInfoRequest.secrets:type_name -> replication.GetVolumeReplicationInfoRequest.SecretsEntry + 13, // 16: replication.GetVolumeReplicationInfoRequest.replication_source:type_name -> replication.ReplicationSource + 27, // 17: replication.GetVolumeReplicationInfoResponse.last_sync_time:type_name -> google.protobuf.Timestamp + 28, // 18: replication.GetVolumeReplicationInfoResponse.last_sync_duration:type_name -> google.protobuf.Duration + 0, // 19: replication.GetVolumeReplicationInfoResponse.status:type_name -> replication.GetVolumeReplicationInfoResponse.Status + 25, // 20: replication.ReplicationSource.volume:type_name -> replication.ReplicationSource.VolumeSource + 26, // 21: replication.ReplicationSource.volumegroup:type_name -> replication.ReplicationSource.VolumeGroupSource + 29, // 22: replication.alpha_field:extendee -> google.protobuf.FieldOptions + 1, // 23: replication.Controller.EnableVolumeReplication:input_type -> replication.EnableVolumeReplicationRequest + 3, // 24: replication.Controller.DisableVolumeReplication:input_type -> replication.DisableVolumeReplicationRequest + 5, // 25: replication.Controller.PromoteVolume:input_type -> replication.PromoteVolumeRequest + 7, // 26: replication.Controller.DemoteVolume:input_type -> replication.DemoteVolumeRequest + 9, // 27: replication.Controller.ResyncVolume:input_type -> replication.ResyncVolumeRequest + 11, // 28: replication.Controller.GetVolumeReplicationInfo:input_type -> replication.GetVolumeReplicationInfoRequest + 2, // 29: replication.Controller.EnableVolumeReplication:output_type -> replication.EnableVolumeReplicationResponse + 4, // 30: replication.Controller.DisableVolumeReplication:output_type -> replication.DisableVolumeReplicationResponse + 6, // 31: replication.Controller.PromoteVolume:output_type -> replication.PromoteVolumeResponse + 8, // 32: replication.Controller.DemoteVolume:output_type -> replication.DemoteVolumeResponse + 10, // 33: replication.Controller.ResyncVolume:output_type -> replication.ResyncVolumeResponse + 12, // 34: replication.Controller.GetVolumeReplicationInfo:output_type -> replication.GetVolumeReplicationInfoResponse + 29, // [29:35] is the sub-list for method output_type + 23, // [23:29] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 22, // [22:23] is the sub-list for extension extendee + 0, // [0:22] is the sub-list for field type_name } func init() { file_replication_replication_proto_init() } @@ -1715,13 +1812,14 @@ func file_replication_replication_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_replication_replication_proto_rawDesc, - NumEnums: 0, + NumEnums: 1, NumMessages: 26, NumExtensions: 1, NumServices: 1, }, GoTypes: file_replication_replication_proto_goTypes, DependencyIndexes: file_replication_replication_proto_depIdxs, + EnumInfos: file_replication_replication_proto_enumTypes, MessageInfos: file_replication_replication_proto_msgTypes, ExtensionInfos: file_replication_replication_proto_extTypes, }.Build() diff --git a/vendor/modules.txt b/vendor/modules.txt index d756f4959..4412eaf63 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -19,7 +19,7 @@ github.com/cespare/xxhash/v2 # github.com/container-storage-interface/spec v1.11.0 ## explicit; go 1.18 github.com/container-storage-interface/spec/lib/go/csi -# github.com/csi-addons/spec v0.2.1-0.20241104111131-27825f744db5 +# github.com/csi-addons/spec v0.2.1-0.20250610152019-b5a7205f6a79 ## explicit github.com/csi-addons/spec/lib/go/encryptionkeyrotation github.com/csi-addons/spec/lib/go/fence