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:
Rakshith R 2024-03-29 15:06:01 +05:30 committed by mergify[bot]
parent 3c68748c11
commit 2f19479981
2 changed files with 38 additions and 3 deletions

View File

@ -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)

View File

@ -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.