rbd: add mirroring helper for image

Add helper methods for the rbd
image mirroring.

Signed-off-by: Madhu Rajanna <madhupr007@gmail.com>
This commit is contained in:
Madhu Rajanna 2024-07-26 09:58:48 +02:00 committed by mergify[bot]
parent 03de220380
commit 132f258569

View File

@ -20,8 +20,10 @@ import (
"context" "context"
"github.com/container-storage-interface/spec/lib/go/csi" "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 { type Volume interface {
// Destroy frees the resources used by the Volume. // Destroy frees the resources used by the Volume.
Destroy(ctx context.Context) Destroy(ctx context.Context)
@ -40,4 +42,21 @@ type Volume interface {
// RemoveFromGroup removes the Volume from the VolumeGroup. // RemoveFromGroup removes the Volume from the VolumeGroup.
RemoveFromGroup(ctx context.Context, vg VolumeGroup) error 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
} }