mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
rbd: convert rbdVolume to rbdSnapshot
After cloning the RBD snapshot, an rbdVolume is returned for the CSI.Snapshot object. In order to use the rbdSnapshot.ToCSI() function, the rbdVolume needs to be converted (back) to an rbdSnaphot. Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
parent
503d10eb1a
commit
869aaced7d
@ -32,7 +32,6 @@ import (
|
|||||||
"github.com/kubernetes-csi/csi-lib-utils/protosanitizer"
|
"github.com/kubernetes-csi/csi-lib-utils/protosanitizer"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
"google.golang.org/protobuf/types/known/timestamppb"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -1236,14 +1235,13 @@ func (cs *ControllerServer) CreateSnapshot(
|
|||||||
return nil, status.Error(codes.Internal, err.Error())
|
return nil, status.Error(codes.Internal, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
csiSnap, err := vol.toSnapshot().ToCSI(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, status.Error(codes.Internal, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
return &csi.CreateSnapshotResponse{
|
return &csi.CreateSnapshotResponse{
|
||||||
Snapshot: &csi.Snapshot{
|
Snapshot: csiSnap,
|
||||||
SizeBytes: vol.VolSize,
|
|
||||||
SnapshotId: vol.VolID,
|
|
||||||
SourceVolumeId: req.GetSourceVolumeId(),
|
|
||||||
CreationTime: timestamppb.New(*vol.CreatedAt),
|
|
||||||
ReadyToUse: true,
|
|
||||||
},
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1296,14 +1294,13 @@ func cloneFromSnapshot(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
csiSnap, err := rbdSnap.ToCSI(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return nil, status.Error(codes.Internal, err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
return &csi.CreateSnapshotResponse{
|
return &csi.CreateSnapshotResponse{
|
||||||
Snapshot: &csi.Snapshot{
|
Snapshot: csiSnap,
|
||||||
SizeBytes: rbdSnap.VolSize,
|
|
||||||
SnapshotId: rbdSnap.VolID,
|
|
||||||
SourceVolumeId: rbdSnap.SourceVolumeID,
|
|
||||||
CreationTime: timestamppb.New(*rbdSnap.CreatedAt),
|
|
||||||
ReadyToUse: true,
|
|
||||||
},
|
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,6 +101,27 @@ func cleanUpSnapshot(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rv *rbdVolume) toSnapshot() *rbdSnapshot {
|
||||||
|
return &rbdSnapshot{
|
||||||
|
rbdImage: rbdImage{
|
||||||
|
ClusterID: rv.ClusterID,
|
||||||
|
VolID: rv.VolID,
|
||||||
|
Monitors: rv.Monitors,
|
||||||
|
Pool: rv.Pool,
|
||||||
|
JournalPool: rv.JournalPool,
|
||||||
|
RadosNamespace: rv.RadosNamespace,
|
||||||
|
RbdImageName: rv.RbdImageName,
|
||||||
|
ImageID: rv.ImageID,
|
||||||
|
CreatedAt: rv.CreatedAt,
|
||||||
|
// copyEncryptionConfig cannot be used here because the volume and the
|
||||||
|
// snapshot will have the same volumeID which cases the panic in
|
||||||
|
// copyEncryptionConfig function.
|
||||||
|
blockEncryption: rv.blockEncryption,
|
||||||
|
fileEncryption: rv.fileEncryption,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (rbdSnap *rbdSnapshot) toVolume() *rbdVolume {
|
func (rbdSnap *rbdSnapshot) toVolume() *rbdVolume {
|
||||||
return &rbdVolume{
|
return &rbdVolume{
|
||||||
rbdImage: rbdImage{
|
rbdImage: rbdImage{
|
||||||
@ -112,6 +133,7 @@ func (rbdSnap *rbdSnapshot) toVolume() *rbdVolume {
|
|||||||
RadosNamespace: rbdSnap.RadosNamespace,
|
RadosNamespace: rbdSnap.RadosNamespace,
|
||||||
RbdImageName: rbdSnap.RbdSnapName,
|
RbdImageName: rbdSnap.RbdSnapName,
|
||||||
ImageID: rbdSnap.ImageID,
|
ImageID: rbdSnap.ImageID,
|
||||||
|
CreatedAt: rbdSnap.CreatedAt,
|
||||||
// copyEncryptionConfig cannot be used here because the volume and the
|
// copyEncryptionConfig cannot be used here because the volume and the
|
||||||
// snapshot will have the same volumeID which cases the panic in
|
// snapshot will have the same volumeID which cases the panic in
|
||||||
// copyEncryptionConfig function.
|
// copyEncryptionConfig function.
|
||||||
|
Loading…
Reference in New Issue
Block a user