diff --git a/internal/rbd/types/volume.go b/internal/rbd/types/volume.go index 2ea6e54ca..f6758478f 100644 --- a/internal/rbd/types/volume.go +++ b/internal/rbd/types/volume.go @@ -20,8 +20,10 @@ import ( "context" "github.com/container-storage-interface/spec/lib/go/csi" + "google.golang.org/protobuf/types/known/timestamppb" ) +//nolint:interfacebloat // more than 10 methods are needed for the interface type Volume interface { // Destroy frees the resources used by the Volume. Destroy(ctx context.Context) @@ -40,4 +42,21 @@ type Volume interface { // RemoveFromGroup removes the Volume from the VolumeGroup. RemoveFromGroup(ctx context.Context, vg VolumeGroup) error + + // GetPoolName returns the name of the pool where the volume is stored. + GetPoolName() string + // GetCreationTime returns the creation time of the volume. + GetCreationTime() (*timestamppb.Timestamp, error) + // GetMetadata returns the value of the metadata key from the volume. + GetMetadata(key string) (string, error) + // SetMetadata sets the value of the metadata key on the volume. + SetMetadata(key, value string) error + // RepairResyncedImageID updates the existing image ID with new one in OMAP. + RepairResyncedImageID(ctx context.Context, ready bool) error + // HandleParentImageExistence checks the image's parent. + // if the parent image does not exist and is not in trash, it returns nil. + // if the flattenMode is FlattenModeForce, it flattens the image itself. + // if the parent image is in trash, it returns an error. + // if the parent image exists and is not enabled for mirroring, it returns an error. + HandleParentImageExistence(ctx context.Context, flattenMode FlattenMode) error }