mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
rbd: remove the VolumeGroup from the journal on DeleteVolumeGroup
Signed-off-by: Niels de Vos <ndevos@ibm.com>
This commit is contained in:
parent
fd20536662
commit
382d70893d
@ -179,6 +179,24 @@ func (vg *volumeGroup) GetName(ctx context.Context) (string, error) {
|
|||||||
return vg.name, nil
|
return vg.name, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetPool returns the name of the pool that holds the VolumeGroup.
|
||||||
|
func (vg *volumeGroup) GetPool(ctx context.Context) (string, error) {
|
||||||
|
if vg.pool == "" {
|
||||||
|
return "", errors.New("BUG: pool is not set")
|
||||||
|
}
|
||||||
|
|
||||||
|
return vg.pool, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetClusterID returns the name of the pool that holds the VolumeGroup.
|
||||||
|
func (vg *volumeGroup) GetClusterID(ctx context.Context) (string, error) {
|
||||||
|
if vg.clusterID == "" {
|
||||||
|
return "", errors.New("BUG: clusterID is not set")
|
||||||
|
}
|
||||||
|
|
||||||
|
return vg.clusterID, nil
|
||||||
|
}
|
||||||
|
|
||||||
// ToCSI creates a CSI-Addons type for the VolumeGroup.
|
// ToCSI creates a CSI-Addons type for the VolumeGroup.
|
||||||
func (vg *volumeGroup) ToCSI(ctx context.Context) (*volumegroup.VolumeGroup, error) {
|
func (vg *volumeGroup) ToCSI(ctx context.Context) (*volumegroup.VolumeGroup, error) {
|
||||||
volumes, err := vg.ListVolumes(ctx)
|
volumes, err := vg.ListVolumes(ctx)
|
||||||
|
@ -21,8 +21,10 @@ import (
|
|||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/ceph/go-ceph/rados"
|
||||||
|
|
||||||
"github.com/ceph/ceph-csi/internal/journal"
|
"github.com/ceph/ceph-csi/internal/journal"
|
||||||
"github.com/ceph/ceph-csi/internal/rbd/group"
|
rbd_group "github.com/ceph/ceph-csi/internal/rbd/group"
|
||||||
"github.com/ceph/ceph-csi/internal/rbd/types"
|
"github.com/ceph/ceph-csi/internal/rbd/types"
|
||||||
"github.com/ceph/ceph-csi/internal/util"
|
"github.com/ceph/ceph-csi/internal/util"
|
||||||
"github.com/ceph/ceph-csi/internal/util/log"
|
"github.com/ceph/ceph-csi/internal/util/log"
|
||||||
@ -251,6 +253,40 @@ func (mgr *rbdManager) CreateVolumeGroup(ctx context.Context, name string) (type
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (mgr *rbdManager) DeleteVolumeGroup(ctx context.Context, vg types.VolumeGroup) error {
|
func (mgr *rbdManager) DeleteVolumeGroup(ctx context.Context, vg types.VolumeGroup) error {
|
||||||
// TODO: remove from journal
|
err := vg.Delete(ctx)
|
||||||
return vg.Delete(ctx)
|
if err != nil && !errors.Is(rados.ErrNotFound, err) {
|
||||||
|
return fmt.Errorf("failed to delete volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
clusterID, err := vg.GetClusterID(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get cluster id for volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
vgJournal, err := mgr.getVolumeGroupJournal(clusterID)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
name, err := vg.GetName(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get name for volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
csiID, err := vg.GetID(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get id for volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
pool, err := vg.GetPool(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("failed to get pool for volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = vgJournal.UndoReservation(ctx, pool, name, csiID)
|
||||||
|
if err != nil /* TODO? !errors.Is(..., err) */ {
|
||||||
|
return fmt.Errorf("failed to undo the reservation for volume group %q: %w", vg, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user