Merge pull request #17486 from rook/mergify/bp/release-1.20/pr-17483

csi: wait for the PV deletion (backport #17483)
This commit is contained in:
subham rai authored and GitHub committed 2026-05-06 14:37:52 +05:30
commit ef126a3918
2 files changed
+88 -1

No files matched your search

+46 -1
View File
@@ -95,18 +95,34 @@ func blockCSICloneTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s *sui
require.NoError(s.T(), err)
logger.Infof("delete clone pvc")
// Get the PV name before deleting the PVC
clonePVName, err := k8sh.GetPVCVolumeName(defaultNamespace, clonePVCName)
assert.NoError(s.T(), err)
err = helper.BlockClient.DeletePVC(defaultNamespace, clonePVCName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, clonePVCName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, clonePVName, false, ""))
logger.Infof("clone PV %s deleted successfully", clonePVName)
// delete the parent PVC and app
err = k8sh.DeletePod(k8sutil.DefaultNamespace, podName)
require.NoError(s.T(), err)
logger.Infof("delete parent pvc")
// Get the PV name before deleting the PVC
parentPVName, err := k8sh.GetPVCVolumeName(defaultNamespace, pvcName)
assert.NoError(s.T(), err)
err = helper.BlockClient.DeletePVC(defaultNamespace, pvcName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, pvcName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, parentPVName, false, ""))
logger.Infof("parent PV %s deleted successfully", parentPVName)
}
func blockCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s *suite.Suite, storageClassName, namespace string) {
@@ -204,10 +220,18 @@ func blockCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s *
require.NoError(s.T(), err)
logger.Infof("delete restore pvc")
// Get the PV name before deleting the PVC
restorePVName, err := k8sh.GetPVCVolumeName(defaultNamespace, restorePVCName)
assert.NoError(s.T(), err)
err = helper.BlockClient.DeletePVC(defaultNamespace, restorePVCName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, restorePVCName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, restorePVName, false, ""))
logger.Infof("restore PV %s deleted successfully", restorePVName)
// delete the snapshot
logger.Infof("delete snapshot")
@@ -220,10 +244,18 @@ func blockCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s *
require.NoError(s.T(), err)
logger.Infof("delete parent pvc")
// Get the PV name before deleting the PVC
parentPVName, err := k8sh.GetPVCVolumeName(defaultNamespace, pvcName)
assert.NoError(s.T(), err)
err = helper.BlockClient.DeletePVC(defaultNamespace, pvcName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, pvcName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, parentPVName, false, ""))
logger.Infof("parent PV %s deleted successfully", parentPVName)
logger.Infof("delete snapshotclass")
err = helper.BlockClient.DeleteSnapshotClass(snapshotClassName, snapshotDeletePolicy, namespace)
@@ -435,10 +467,23 @@ func createAndWaitForPVC(helper *clients.TestClient, k8sh *utils.K8sHelper, s *s
func deleteBlockLite(helper *clients.TestClient, k8sh *utils.K8sHelper, s *suite.Suite, clusterInfo *client.ClusterInfo, poolName, storageClassName, blockName string, requireBlockImagesRemoved bool) {
logger.Infof("deleteBlockLite: cleaning up after test")
// Get the PV name before deleting the PVC
pvName, err := k8sh.GetPVCVolumeName(defaultNamespace, blockName)
if err != nil {
logger.Warningf("failed to get PV name for PVC %s: %v", blockName, err)
}
// Delete pvc and storageclass
err := helper.BlockClient.DeletePVC(defaultNamespace, blockName)
err = helper.BlockClient.DeletePVC(defaultNamespace, blockName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, blockName))
// Wait for the PV to be deleted as well
if pvName != "" {
assert.True(s.T(), retryPVCheck(k8sh, pvName, false, ""))
logger.Infof("PV %s deleted successfully", pvName)
}
if requireBlockImagesRemoved {
assert.NoError(s.T(), retryBlockImageCountCheck(helper, clusterInfo, 0), "Make sure block images were deleted")
}
+42
View File
@@ -102,18 +102,34 @@ func fileSystemCSICloneTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s
require.NoError(s.T(), err)
logger.Infof("delete clone pvc")
// Get the PV name before deleting the PVC
clonePVName, err := k8sh.GetPVCVolumeName(defaultNamespace, clonePVCName)
assert.NoError(s.T(), err)
err = helper.FSClient.DeletePVC(defaultNamespace, clonePVCName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, clonePVCName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, clonePVName, false, ""))
logger.Infof("clone PV %s deleted successfully", clonePVName)
// delete the parent PVC and app
err = k8sh.DeletePod(k8sutil.DefaultNamespace, podName)
require.NoError(s.T(), err)
logger.Infof("delete parent pvc")
// Get the PV name before deleting the PVC
parentPVName, err := k8sh.GetPVCVolumeName(defaultNamespace, pvcName)
assert.NoError(s.T(), err)
err = helper.FSClient.DeletePVC(defaultNamespace, pvcName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, pvcName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, parentPVName, false, ""))
logger.Infof("parent PV %s deleted successfully", parentPVName)
}
func fileSystemCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper, s *suite.Suite, storageClassName, namespace string, testNFS bool) {
@@ -216,10 +232,18 @@ func fileSystemCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper
require.NoError(s.T(), err)
logger.Infof("delete restore pvc")
// Get the PV name before deleting the PVC
restorePVName, err := k8sh.GetPVCVolumeName(defaultNamespace, restorePVCName)
assert.NoError(s.T(), err)
err = helper.FSClient.DeletePVC(defaultNamespace, restorePVCName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, restorePVCName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, restorePVName, false, ""))
logger.Infof("restore PV %s deleted successfully", restorePVName)
// delete the snapshot
logger.Infof("delete snapshot")
@@ -232,10 +256,18 @@ func fileSystemCSISnapshotTest(helper *clients.TestClient, k8sh *utils.K8sHelper
require.NoError(s.T(), err)
logger.Infof("delete parent pvc")
// Get the PV name before deleting the PVC
parentPVName, err := k8sh.GetPVCVolumeName(defaultNamespace, pvcName)
assert.NoError(s.T(), err)
err = helper.FSClient.DeletePVC(defaultNamespace, pvcName)
assertNoErrorUnlessNotFound(s, err)
assert.True(s.T(), k8sh.WaitUntilPVCIsDeleted(defaultNamespace, pvcName))
// Wait for the PV to be deleted as well
assert.True(s.T(), retryPVCheck(k8sh, parentPVName, false, ""))
logger.Infof("parent PV %s deleted successfully", parentPVName)
logger.Infof("delete snapshotclass")
if !testNFS {
err = helper.FSClient.DeleteSnapshotClass(snapshotClassName, snapshotDeletePolicy, namespace)
@@ -440,12 +472,22 @@ func cleanupFilesystemConsumer(helper *clients.TestClient, k8sh *utils.K8sHelper
k8sh.PrintPodDescribe(namespace, podName)
assert.Fail(s.T(), fmt.Sprintf("make sure %s pod is terminated", podName))
}
// Get the PV name before deleting the PVC
pvName, err := k8sh.GetPVCVolumeName(namespace, podName)
assert.NoError(s.T(), err)
err = helper.FSClient.DeletePVC(namespace, podName)
assertNoErrorUnlessNotFound(s, err)
isdeleted := k8sh.WaitUntilPVCIsDeleted(namespace, podName)
if !isdeleted {
assert.Fail(s.T(), fmt.Sprintf("Failed to delete PVC %q", podName))
}
// Wait for the PV to be deleted
assert.True(s.T(), retryPVCheck(k8sh, pvName, false, ""))
logger.Infof("PV %s deleted successfully", pvName)
isPVListZero := k8sh.WaitUntilZeroPVs()
if !isPVListZero {
assert.Fail(s.T(), "PV list is not zero")