diff --git a/internal/rbd/controllerserver.go b/internal/rbd/controllerserver.go index 7735d8306..50d7c4f73 100644 --- a/internal/rbd/controllerserver.go +++ b/internal/rbd/controllerserver.go @@ -851,11 +851,15 @@ func (cs *ControllerServer) DeleteVolume( } defer cs.OperationLocks.ReleaseDeleteLock(volumeID) + // if this is a migration request volID, delete the volume in backend if isMigrationVolID(volumeID) { - log.DebugLog(ctx, "migration volume ID : %s", volumeID) - err = parseAndDeleteMigratedVolume(ctx, volumeID, cr) - if err != nil && !errors.Is(err, ErrImageNotFound) { - return nil, status.Error(codes.Internal, err.Error()) + pmVolID, pErr := parseMigrationVolID(volumeID) + if pErr != nil { + return nil, status.Error(codes.InvalidArgument, pErr.Error()) + } + pErr = deleteMigratedVolume(ctx, pmVolID, cr) + if pErr != nil && !errors.Is(pErr, ErrImageNotFound) { + return nil, status.Error(codes.Internal, pErr.Error()) } return &csi.DeleteVolumeResponse{}, nil diff --git a/internal/rbd/migration.go b/internal/rbd/migration.go index d76fab28e..ca8c48e4c 100644 --- a/internal/rbd/migration.go +++ b/internal/rbd/migration.go @@ -74,15 +74,10 @@ func parseMigrationVolID(vh string) (*migrationVolID, error) { return mh, nil } -// parseAndDeleteMigratedVolume get rbd volume details from the migration volID +// deleteMigratedVolume get rbd volume details from the migration volID // and delete the volume from the cluster, return err if there was an error on the process. -func parseAndDeleteMigratedVolume(ctx context.Context, volumeID string, cr *util.Credentials) error { - parsedMigHandle, err := parseMigrationVolID(volumeID) - if err != nil { - log.ErrorLog(ctx, "failed to parse migration volumeID: %s , err: %v", volumeID, err) - - return err - } +func deleteMigratedVolume(ctx context.Context, parsedMigHandle *migrationVolID, cr *util.Credentials) error { + var err error rv := &rbdVolume{} // fill details to rv struct from parsed migration handle