diff --git a/test/e2e/storage/testsuites/base.go b/test/e2e/storage/testsuites/base.go index 85dd8347c6f..9cd5dd499bb 100644 --- a/test/e2e/storage/testsuites/base.go +++ b/test/e2e/storage/testsuites/base.go @@ -232,14 +232,18 @@ func (r *genericVolumeTestResource) cleanupResource() { 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 { + if r.pv != nil && 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) + if r.pvc != nil { + err := framework.DeletePersistentVolumeClaim(f.ClientSet, r.pvc.Name, f.Namespace.Name) + framework.ExpectNoError(err, "Failed to delete PVC %v", r.pvc.Name) + if r.pv != nil { + 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) } diff --git a/test/e2e/storage/testsuites/volumemode.go b/test/e2e/storage/testsuites/volumemode.go index b90fddb9b44..a9893edf350 100644 --- a/test/e2e/storage/testsuites/volumemode.go +++ b/test/e2e/storage/testsuites/volumemode.go @@ -25,7 +25,6 @@ import ( "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - utilerrors "k8s.io/apimachinery/pkg/util/errors" clientset "k8s.io/client-go/kubernetes" "k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/storage/testpatterns" @@ -67,12 +66,10 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern config *PerTestConfig testCleanup func() - cs clientset.Interface - ns *v1.Namespace - sc *storagev1.StorageClass - pvc *v1.PersistentVolumeClaim - pv *v1.PersistentVolume - volume TestVolume + cs clientset.Interface + ns *v1.Namespace + // genericVolumeTestResource contains pv, pvc, sc, etc., owns cleaning that up + genericVolumeTestResource } var ( dInfo = driver.GetDriverInfo() @@ -104,6 +101,12 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern volumeNodeAffinity *v1.VolumeNodeAffinity ) + l.genericVolumeTestResource = genericVolumeTestResource{ + driver: driver, + config: l.config, + pattern: pattern, + } + // Create volume for pre-provisioned volume tests l.volume = CreateVolume(driver, l.config, pattern.VolType) @@ -144,26 +147,7 @@ func (t *volumeModeTestSuite) defineTests(driver TestDriver, pattern testpattern } cleanup := func() { - if l.pv != nil || l.pvc != nil { - By("Deleting pv and pvc") - errs := framework.PVPVCCleanup(f.ClientSet, f.Namespace.Name, l.pv, l.pvc) - if len(errs) > 0 { - framework.Logf("Failed to delete PV and/or PVC: %v", utilerrors.NewAggregate(errs)) - } - l.pv = nil - l.pvc = nil - } - - if l.sc != nil { - By("Deleting sc") - deleteStorageClass(f.ClientSet, l.sc.Name) - l.sc = nil - } - - if l.volume != nil { - l.volume.DeleteVolume() - l.volume = nil - } + l.cleanupResource() if l.testCleanup != nil { l.testCleanup()