Merge pull request #44356 from copejon/deflake-e2e-volume-pd

Automatic merge from submit-queue

De-Flake Volume E2E:  force GCEPD detach to prevent timeout

**What this PR does / why we need it**:
Fix flake`[k8s.io] Volumes [Volume] [k8s.io] PD should be mountable [Flaky] 5m38s.  

Flake occurs as a result of an automated detach taking longer than 5 minutes, which exceeds the timeout limit of the delete function.

This PR adds explicit detach and wait func calls before the deletion.  By forcing the detach and giving GCE an appropriate timeout limit, this should squash the timeout flake.  This also significantly shortens cleanup time.

This PR does not remove the [Flaky] tag.  Once this PR is merged, I'll keep an eye on the test grid for ~1 week.  If no flakes surface, I'll submit a PR to pull the tag off.

**Which issue this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close that issue when PR gets merged)*: fixes  #43977

**Release note**:

```release-note
NONE
```
This commit is contained in:
Kubernetes Submit Queue 2017-04-20 17:05:54 -07:00 committed by GitHub
commit 3153cd6841

View File

@ -47,14 +47,14 @@ import (
"strings"
"time"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/types"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
"k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere"
"k8s.io/kubernetes/test/e2e/framework"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
func DeleteCinderVolume(name string) error {
@ -518,7 +518,11 @@ var _ = framework.KubeDescribe("Volumes [Volume]", func() {
volumeName, err := framework.CreatePDWithRetry()
Expect(err).NotTo(HaveOccurred())
defer func() {
framework.ExpectNoError(framework.DeletePDWithRetry(volumeName))
// - Get NodeName from the pod spec to which the volume is mounted.
// - Force detach and delete.
pod, err := f.PodClient().Get(config.Prefix+"-client", metav1.GetOptions{})
Expect(err).NotTo(HaveOccurred(), "Failed getting pod %q.", config.Prefix+"-client")
detachAndDeletePDs(volumeName, []types.NodeName{types.NodeName(pod.Spec.NodeName)})
}()
defer func() {