diff --git a/test/e2e/framework/pod/wait.go b/test/e2e/framework/pod/wait.go index 836ea749292..44d77b197fb 100644 --- a/test/e2e/framework/pod/wait.go +++ b/test/e2e/framework/pod/wait.go @@ -421,6 +421,25 @@ func WaitForPodNameUnschedulableInNamespace(c clientset.Interface, podName, name }) } +// WaitTimeoutForPodNoLongerRunningOrNotFoundInNamespace waits default amount of time (defaultPodDeletionTimeout) +// for the specified pod to stop running or disappear. Returns an error if timeout occurs first. +func WaitTimeoutForPodNoLongerRunningOrNotFoundInNamespace(c clientset.Interface, podName, namespace string) error { + return wait.PollImmediate(poll, defaultPodDeletionTimeout, func() (bool, error) { + pod, err := c.CoreV1().Pods(namespace).Get(context.TODO(), podName, metav1.GetOptions{}) + if apierrors.IsNotFound(err) { + return true, nil + } + if err != nil { + return handleWaitingAPIError(err, true, "getting pod %s", podIdentifier(namespace, podName)) + } + switch pod.Status.Phase { + case v1.PodFailed, v1.PodSucceeded: + return true, nil + } + return false, nil + }) +} + // WaitForPodNameRunningInNamespace waits default amount of time (PodStartTimeout) for the specified pod to become running. // Returns an error if timeout occurs first, or pod goes in to failed state. func WaitForPodNameRunningInNamespace(c clientset.Interface, podName, namespace string) error { diff --git a/test/e2e/storage/ubernetes_lite_volumes.go b/test/e2e/storage/ubernetes_lite_volumes.go index 8c139c68471..41990115f28 100644 --- a/test/e2e/storage/ubernetes_lite_volumes.go +++ b/test/e2e/storage/ubernetes_lite_volumes.go @@ -93,7 +93,7 @@ func PodsUseStaticPVsOrFail(f *framework.Framework, podCount int, image string) e2epod.DeletePodOrFail(c, ns, config.pod.Name) } for _, config := range configs { - e2epod.WaitForPodNoLongerRunningInNamespace(c, config.pod.Name, ns) + e2epod.WaitTimeoutForPodNoLongerRunningOrNotFoundInNamespace(c, config.pod.Name, ns) e2epv.PVPVCCleanup(c, ns, config.pv, config.pvc) err = e2epv.DeletePVSource(config.pvSource) framework.ExpectNoError(err)