Problem: All replication request messages (EnableVolumeReplicationRequest, DisableVolumeReplicationRequest, PromoteVolumeRequest, DemoteVolumeRequest, ResyncVolumeRequest, GetVolumeReplicationInfoRequest) still have volume_id as field 1 with [deprecated = true].
This means the generated Go code retains a GetVolumeId() string method on these structs. Our CSI driver framework (e.g., gocsi) use Go interface type assertions to validate that any request with a GetVolumeId() method has a non-empty value. When a driver uses only ReplicationSource (as intended for volume group replication), the empty volume_id triggers a false validation failure.
Note: The kubernetes-csi-addons controller repo's internal copy of this proto (replication.proto) has already changed these to reserved 1, removing the field entirely. The spec repo should be aligned.
References:
#51 (added replication_source)
#67 (added [deprecated = true] annotation to volume_id)
Problem: All replication request messages (
EnableVolumeReplicationRequest, DisableVolumeReplicationRequest, PromoteVolumeRequest, DemoteVolumeRequest, ResyncVolumeRequest, GetVolumeReplicationInfoRequest) still havevolume_idas field 1 with[deprecated = true].This means the generated Go code retains a
GetVolumeId()string method on these structs. Our CSI driver framework (e.g., gocsi) use Go interface type assertions to validate that any request with aGetVolumeId()method has a non-empty value. When a driver uses onlyReplicationSource(as intended for volume group replication), the emptyvolume_idtriggers a false validation failure.Note: The kubernetes-csi-addons controller repo's internal copy of this proto (replication.proto) has already changed these to reserved 1, removing the field entirely. The spec repo should be aligned.
References:
#51 (added replication_source)
#67 (added [deprecated = true] annotation to volume_id)