rbd: always include the SourceVolumeID when returning a Snapshot

`doSnapshotClone()` returns a new `rbdVolume` object from a temporary
snapshot. This conversion drops the `SourceVolumeID` attribute, as a
`rbdVolume` does not have that.

After converting the `rbdVolume` back to a `rbdSnapshot`, the
`SourceVolumeID` attribute can be set again, and the `ToCSI()` function
can create an appropriate CSI Snapshot struct.

Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
Niels de Vos 2025-02-18 16:11:48 +01:00 committed by mergify[bot]
parent 0907ba98c4
commit b3faa04504

View File

@ -1248,7 +1248,11 @@ func (cs *ControllerServer) CreateSnapshot(
return nil, status.Error(codes.Internal, err.Error())
}
csiSnap, err := vol.toSnapshot().ToCSI(ctx)
// FIXME: doSnapshotClone() returns a rbdVolume, some attributes may be missing?
snap := vol.toSnapshot()
snap.SourceVolumeID = rbdSnap.SourceVolumeID
csiSnap, err := snap.ToCSI(ctx)
if err != nil {
return nil, status.Error(codes.Internal, err.Error())
}