mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-11-09 16:00:22 +00:00
e2e: validate PVC-PVC clone creation with deleted parent snap
This commit modifies a test case to check creation of
PVC-PVC clone of a restored PVC when parent snapshot
is deleted.
Signed-off-by: Rakshith R <rar@redhat.com>
(cherry picked from commit 1bb78fdf43
)
This commit is contained in:
parent
3c68748c11
commit
2f19479981
37
e2e/rbd.go
37
e2e/rbd.go
@ -3552,7 +3552,7 @@ var _ = Describe("RBD", func() {
|
|||||||
validateRBDImageCount(f, 1, defaultRBDPool)
|
validateRBDImageCount(f, 1, defaultRBDPool)
|
||||||
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
||||||
for i := 0; i < snapChainDepth; i++ {
|
for i := 0; i < snapChainDepth; i++ {
|
||||||
var pvcClone *v1.PersistentVolumeClaim
|
var pvcClone, smartClonePVC *v1.PersistentVolumeClaim
|
||||||
snap := getSnapshot(snapshotPath)
|
snap := getSnapshot(snapshotPath)
|
||||||
snap.Name = fmt.Sprintf("%s-%d", snap.Name, i)
|
snap.Name = fmt.Sprintf("%s-%d", snap.Name, i)
|
||||||
snap.Namespace = f.UniqueName
|
snap.Namespace = f.UniqueName
|
||||||
@ -3609,6 +3609,41 @@ var _ = Describe("RBD", func() {
|
|||||||
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
||||||
validateOmapCount(f, 0, rbdType, defaultRBDPool, snapsType)
|
validateOmapCount(f, 0, rbdType, defaultRBDPool, snapsType)
|
||||||
|
|
||||||
|
// create pvc-pvc clone to validate pvc-pvc clone creation
|
||||||
|
// of child PVC created from a snapshot which no longer exits.
|
||||||
|
// Snapshot-> restore PVC -> delete Snapshot -> PVC-PVC clone.
|
||||||
|
smartClonePVC, err = loadPVC(pvcSmartClonePath)
|
||||||
|
if err != nil {
|
||||||
|
framework.Failf("failed to load smart clone PVC: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
smartClonePVC.Name = fmt.Sprintf("%s-%d", smartClonePVC.Name, i)
|
||||||
|
smartClonePVC.Namespace = f.UniqueName
|
||||||
|
smartClonePVC.Spec.DataSource.Name = pvcClone.Name
|
||||||
|
err = createPVCAndvalidatePV(f.ClientSet, smartClonePVC, deployTimeout)
|
||||||
|
if err != nil {
|
||||||
|
framework.Failf("failed to create smart clone PVC %q: %v",
|
||||||
|
smartClonePVC.Name, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate created backend rbd images = clone + smart clone + temp image
|
||||||
|
totalImages = 3
|
||||||
|
validateRBDImageCount(f, totalImages, defaultRBDPool)
|
||||||
|
validateOmapCount(f, 2, rbdType, defaultRBDPool, volumesType)
|
||||||
|
validateOmapCount(f, 0, rbdType, defaultRBDPool, snapsType)
|
||||||
|
|
||||||
|
err = deletePVCAndValidatePV(f.ClientSet, smartClonePVC, deployTimeout)
|
||||||
|
if err != nil {
|
||||||
|
framework.Failf("failed to delete smart clone PVC %q: %v",
|
||||||
|
smartClonePVC.Name, err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate created backend rbd images = clone
|
||||||
|
totalImages = 1
|
||||||
|
validateRBDImageCount(f, totalImages, defaultRBDPool)
|
||||||
|
validateOmapCount(f, 1, rbdType, defaultRBDPool, volumesType)
|
||||||
|
validateOmapCount(f, 0, rbdType, defaultRBDPool, snapsType)
|
||||||
|
|
||||||
app.Spec.Volumes[0].PersistentVolumeClaim.ClaimName = pvcClone.Name
|
app.Spec.Volumes[0].PersistentVolumeClaim.ClaimName = pvcClone.Name
|
||||||
// create application
|
// create application
|
||||||
err = createApp(f.ClientSet, app, deployTimeout)
|
err = createApp(f.ClientSet, app, deployTimeout)
|
||||||
|
@ -116,8 +116,6 @@ type rbdImage struct {
|
|||||||
ParentName string
|
ParentName string
|
||||||
// Parent Pool is the pool that contains the parent image.
|
// Parent Pool is the pool that contains the parent image.
|
||||||
ParentPool string
|
ParentPool string
|
||||||
// ParentInTrash indicates the parent image is in trash.
|
|
||||||
ParentInTrash bool
|
|
||||||
// Cluster name
|
// Cluster name
|
||||||
ClusterName string
|
ClusterName string
|
||||||
|
|
||||||
@ -148,6 +146,8 @@ type rbdImage struct {
|
|||||||
|
|
||||||
// Set metadata on volume
|
// Set metadata on volume
|
||||||
EnableMetadata bool
|
EnableMetadata bool
|
||||||
|
// ParentInTrash indicates the parent image is in trash.
|
||||||
|
ParentInTrash bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// rbdVolume represents a CSI volume and its RBD image specifics.
|
// rbdVolume represents a CSI volume and its RBD image specifics.
|
||||||
|
Loading…
Reference in New Issue
Block a user