mirror of https://github.com/k3s-io/k3s
Merge pull request #74554 from mkimuram/issue/74380
Fix resource leaking PDs for volume mode testpull/564/head
commit
2235a7e9a2
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue