diff --git a/internal/csi-common/utils.go b/internal/csi-common/utils.go index 3f2dadd12..91db95f93 100644 --- a/internal/csi-common/utils.go +++ b/internal/csi-common/utils.go @@ -128,6 +128,11 @@ func GetIDFromReplication(req interface{}) string { if src != nil && src.GetVolume() != nil { reqID = src.GetVolume().GetVolumeId() } + if reqID == "" { + if src != nil && src.GetVolumegroup() != nil { + reqID = src.GetVolumegroup().GetVolumeGroupId() + } + } if reqID == "" { reqID = r.GetVolumeId() //nolint:nolintlint,staticcheck // req.VolumeId is deprecated } diff --git a/internal/csi-common/utils_test.go b/internal/csi-common/utils_test.go index a3c230d0d..9ca2a9105 100644 --- a/internal/csi-common/utils_test.go +++ b/internal/csi-common/utils_test.go @@ -150,6 +150,61 @@ func TestGetReqID(t *testing.T) { }, }, }, + // volumeGroupId is set in ReplicationSource + &replication.EnableVolumeReplicationRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, + &replication.DisableVolumeReplicationRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, + &replication.PromoteVolumeRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, + &replication.DemoteVolumeRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, + &replication.ResyncVolumeRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, + &replication.GetVolumeReplicationInfoRequest{ + ReplicationSource: &replication.ReplicationSource{ + Type: &replication.ReplicationSource_Volumegroup{ + Volumegroup: &replication.ReplicationSource_VolumeGroupSource{ + VolumeGroupId: fakeID, + }, + }, + }, + }, } for _, r := range req { if got := getReqID(r); got != fakeID { @@ -161,6 +216,11 @@ func TestGetReqID(t *testing.T) { if got := getReqID(nil); got != "" { t.Errorf("getReqID() = %v, want empty string", got) } + + // test when both volume and group id not set + if got := getReqID(&replication.EnableVolumeReplicationRequest{}); got != "" { + t.Errorf("getReqID() = %v, want empty string", got) + } } func TestFilesystemNodeGetVolumeStats(t *testing.T) {