From bd308d938a340c171912ee52a3410721a4a6f3c6 Mon Sep 17 00:00:00 2001 From: David Zhu Date: Fri, 14 Sep 2018 14:30:15 -0700 Subject: [PATCH] Fixed leaking dynamic provioning test PDs --- test/e2e/storage/testsuites/base.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/test/e2e/storage/testsuites/base.go b/test/e2e/storage/testsuites/base.go index 5df99d308aa..dd3e482daf3 100644 --- a/test/e2e/storage/testsuites/base.go +++ b/test/e2e/storage/testsuites/base.go @@ -18,6 +18,7 @@ package testsuites import ( "fmt" + "time" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -192,9 +193,25 @@ func (r *genericVolumeTestResource) cleanupResource(driver drivers.TestDriver, p volType := pattern.VolType if r.pvc != nil || r.pv != nil { - By("Deleting pv and pvc") - if errs := framework.PVPVCCleanup(f.ClientSet, f.Namespace.Name, r.pv, r.pvc); len(errs) != 0 { - framework.Failf("Failed to delete PVC or PV: %v", utilerrors.NewAggregate(errs)) + switch volType { + case testpatterns.PreprovisionedPV: + By("Deleting pv and pvc") + if errs := framework.PVPVCCleanup(f.ClientSet, f.Namespace.Name, r.pv, r.pvc); len(errs) != 0 { + framework.Failf("Failed to delete PVC or PV: %v", utilerrors.NewAggregate(errs)) + } + case testpatterns.DynamicPV: + By("Deleting pvc") + // We only delete the PVC so that PV (and disk) can be cleaned up by dynamic provisioner + if r.pv.Spec.PersistentVolumeReclaimPolicy != v1.PersistentVolumeReclaimDelete { + framework.Failf("Test framework does not currently support Dynamically Provisioned Persistent Volume %v specified with reclaim policy that isnt %v", + r.pv.Name, v1.PersistentVolumeReclaimDelete) + } + err := framework.DeletePersistentVolumeClaim(f.ClientSet, r.pvc.Name, f.Namespace.Name) + framework.ExpectNoError(err, "Failed to delete PVC %v", r.pvc.Name) + err = framework.WaitForPersistentVolumeDeleted(f.ClientSet, r.pv.Name, 5*time.Second, 5*time.Minute) + framework.ExpectNoError(err, "Persistent Volume %v not deleted by dynamic provisioner", r.pv.Name) + default: + framework.Failf("Found PVC (%v) or PV (%v) but not running Preprovisioned or Dynamic test pattern", r.pvc, r.pv) } }