WaitForPodReady is simply wrapper functions for e2epod package,

and they made an invalid dependency to sub e2e framework from the core framework.

So we can use e2epod.WaitTimeoutForPodReadyInNamespace to remove invalid dependency.

The main purpose of this pr is to handle the framework core package dependency subpackage pod.
This commit is contained in:
tanjunchen 2020-03-22 23:08:52 +08:00
parent d3df233d9c
commit bed22fbb44
10 changed files with 20 additions and 23 deletions

View File

@ -63,7 +63,7 @@ var _ = framework.KubeDescribe("Probing container", func() {
framework.ConformanceIt("with readiness probe should not be ready before initial delay and never restart [NodeConformance]", func() { framework.ConformanceIt("with readiness probe should not be ready before initial delay and never restart [NodeConformance]", func() {
containerName := "test-webserver" containerName := "test-webserver"
p := podClient.Create(testWebServerPodSpec(probe.withInitialDelay().build(), nil, containerName, 80)) p := podClient.Create(testWebServerPodSpec(probe.withInitialDelay().build(), nil, containerName, 80))
f.WaitForPodReady(p.Name) e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, p.Name, f.Namespace.Name, framework.PodStartTimeout)
p, err := podClient.Get(context.TODO(), p.Name, metav1.GetOptions{}) p, err := podClient.Get(context.TODO(), p.Name, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)

View File

@ -515,11 +515,6 @@ func (f *Framework) WaitForPodTerminated(podName, reason string) error {
return e2epod.WaitForPodTerminatedInNamespace(f.ClientSet, podName, reason, f.Namespace.Name) return e2epod.WaitForPodTerminatedInNamespace(f.ClientSet, podName, reason, f.Namespace.Name)
} }
// WaitForPodReady waits for the pod to flip to ready in the namespace.
func (f *Framework) WaitForPodReady(podName string) error {
return e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podName, f.Namespace.Name, PodStartTimeout)
}
// ClientConfig an externally accessible method for reading the kube client config. // ClientConfig an externally accessible method for reading the kube client config.
func (f *Framework) ClientConfig() *rest.Config { func (f *Framework) ClientConfig() *rest.Config {
ret := rest.CopyConfig(f.clientConfig) ret := rest.CopyConfig(f.clientConfig)

View File

@ -664,7 +664,7 @@ func (config *NetworkingTestConfig) createNetProxyPods(podName string, selector
// wait that all of them are up // wait that all of them are up
runningPods := make([]*v1.Pod, 0, len(nodes)) runningPods := make([]*v1.Pod, 0, len(nodes))
for _, p := range createdPods { for _, p := range createdPods {
framework.ExpectNoError(config.f.WaitForPodReady(p.Name)) framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(config.f.ClientSet, p.Name, config.f.Namespace.Name, framework.PodStartTimeout))
rp, err := config.getPodClient().Get(context.TODO(), p.Name, metav1.GetOptions{}) rp, err := config.getPodClient().Get(context.TODO(), p.Name, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
runningPods = append(runningPods, rp) runningPods = append(runningPods, rp)

View File

@ -211,7 +211,7 @@ func doTestConnectSendDisconnect(bindAddress string, f *framework.Framework) {
if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil { if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil {
framework.Failf("Couldn't create pod: %v", err) framework.Failf("Couldn't create pod: %v", err)
} }
if err := f.WaitForPodReady(pod.Name); err != nil { if err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout); err != nil {
framework.Failf("Pod did not start running: %v", err) framework.Failf("Pod did not start running: %v", err)
} }
@ -259,7 +259,7 @@ func doTestMustConnectSendNothing(bindAddress string, f *framework.Framework) {
if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil { if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil {
framework.Failf("Couldn't create pod: %v", err) framework.Failf("Couldn't create pod: %v", err)
} }
if err := f.WaitForPodReady(pod.Name); err != nil { if err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout); err != nil {
framework.Failf("Pod did not start running: %v", err) framework.Failf("Pod did not start running: %v", err)
} }
@ -296,7 +296,7 @@ func doTestMustConnectSendDisconnect(bindAddress string, f *framework.Framework)
if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil { if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil {
framework.Failf("Couldn't create pod: %v", err) framework.Failf("Couldn't create pod: %v", err)
} }
if err := f.WaitForPodReady(pod.Name); err != nil { if err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout); err != nil {
framework.Failf("Pod did not start running: %v", err) framework.Failf("Pod did not start running: %v", err)
} }
@ -366,7 +366,7 @@ func doTestOverWebSockets(bindAddress string, f *framework.Framework) {
if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil { if _, err := f.ClientSet.CoreV1().Pods(f.Namespace.Name).Create(context.TODO(), pod, metav1.CreateOptions{}); err != nil {
framework.Failf("Couldn't create pod: %v", err) framework.Failf("Couldn't create pod: %v", err)
} }
if err := f.WaitForPodReady(pod.Name); err != nil { if err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout); err != nil {
framework.Failf("Pod did not start running: %v", err) framework.Failf("Pod did not start running: %v", err)
} }

View File

@ -424,7 +424,7 @@ var _ = SIGDescribe("DNS", func() {
framework.Failf("ginkgo.Failed to delete pod %s: %v", testAgnhostPod.Name, err) framework.Failf("ginkgo.Failed to delete pod %s: %v", testAgnhostPod.Name, err)
} }
}() }()
err = f.WaitForPodReady(testAgnhostPod.Name) err = e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, testAgnhostPod.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "failed to wait for pod %s to be running", testAgnhostPod.Name) framework.ExpectNoError(err, "failed to wait for pod %s to be running", testAgnhostPod.Name)
runCommand := func(arg string) string { runCommand := func(arg string) string {

View File

@ -32,6 +32,7 @@ import (
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2enetwork "k8s.io/kubernetes/test/e2e/framework/network" e2enetwork "k8s.io/kubernetes/test/e2e/framework/network"
e2enode "k8s.io/kubernetes/test/e2e/framework/node" e2enode "k8s.io/kubernetes/test/e2e/framework/node"
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
"k8s.io/kubernetes/test/e2e/framework/providers/gce" "k8s.io/kubernetes/test/e2e/framework/providers/gce"
e2eservice "k8s.io/kubernetes/test/e2e/framework/service" e2eservice "k8s.io/kubernetes/test/e2e/framework/service"
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper" e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
@ -154,7 +155,7 @@ var _ = SIGDescribe("Firewall rule", func() {
pod.Spec.HostNetwork = true pod.Spec.HostNetwork = true
_, err := cs.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{}) _, err := cs.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
framework.ExpectNoError(f.WaitForPodReady(podName)) framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podName, f.Namespace.Name, framework.PodStartTimeout))
framework.Logf("Netexec pod %q in namespace %q running", podName, ns) framework.Logf("Netexec pod %q in namespace %q running", podName, ns)
defer func() { defer func() {

View File

@ -60,7 +60,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
podServer, service = createServerPodAndService(f, f.Namespace, "server", []int{80, 81}) podServer, service = createServerPodAndService(f, f.Namespace, "server", []int{80, 81})
ginkgo.By("Waiting for pod ready", func() { ginkgo.By("Waiting for pod ready", func() {
err := f.WaitForPodReady(podServer.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podServer.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err) framework.ExpectNoError(err)
}) })
@ -1067,7 +1067,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
defer cleanupServerPodAndService(f, podServerB, serviceB) defer cleanupServerPodAndService(f, podServerB, serviceB)
ginkgo.By("Waiting for pod ready", func() { ginkgo.By("Waiting for pod ready", func() {
err := f.WaitForPodReady(podServerB.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podServerB.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.") framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.")
}) })
@ -1243,7 +1243,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
// Creating pod-b and service-b // Creating pod-b and service-b
podServerB, serviceB = createServerPodAndService(f, f.Namespace, "pod-b", []int{80}) podServerB, serviceB = createServerPodAndService(f, f.Namespace, "pod-b", []int{80})
ginkgo.By("Waiting for pod-b to be ready", func() { ginkgo.By("Waiting for pod-b to be ready", func() {
err = f.WaitForPodReady(podServerB.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podServerB.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.") framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.")
}) })
defer cleanupServerPodAndService(f, podServerB, serviceB) defer cleanupServerPodAndService(f, podServerB, serviceB)
@ -1380,7 +1380,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
// Before applying policy, communication should be successful between pod-a and pod-b // Before applying policy, communication should be successful between pod-a and pod-b
podA, serviceA = createServerPodAndService(f, f.Namespace, "pod-a", []int{80}) podA, serviceA = createServerPodAndService(f, f.Namespace, "pod-a", []int{80})
ginkgo.By("Waiting for pod-a to be ready", func() { ginkgo.By("Waiting for pod-a to be ready", func() {
err = f.WaitForPodReady(podA.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podA.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.") framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.")
}) })
ginkgo.By("Creating client pod-b which should be able to contact the server pod-a.", func() { ginkgo.By("Creating client pod-b which should be able to contact the server pod-a.", func() {
@ -1390,7 +1390,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
podB, serviceB = createServerPodAndService(f, f.Namespace, "pod-b", []int{80}) podB, serviceB = createServerPodAndService(f, f.Namespace, "pod-b", []int{80})
ginkgo.By("Waiting for pod-b to be ready", func() { ginkgo.By("Waiting for pod-b to be ready", func() {
err = f.WaitForPodReady(podB.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podB.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.") framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.")
}) })
ginkgo.By("Creating client pod-a which should be able to contact the server pod-b.", func() { ginkgo.By("Creating client pod-a which should be able to contact the server pod-b.", func() {
@ -1472,7 +1472,7 @@ var _ = SIGDescribe("NetworkPolicy [LinuxOnly]", func() {
// Creating server pod with label "pod-name": "pod-a" to deny traffic from client pod with label "pod-name": "pod-b" // Creating server pod with label "pod-name": "pod-a" to deny traffic from client pod with label "pod-name": "pod-b"
podA, serviceA = createServerPodAndService(f, f.Namespace, "pod-a", []int{80}) podA, serviceA = createServerPodAndService(f, f.Namespace, "pod-a", []int{80})
ginkgo.By("Waiting for pod-a to be ready", func() { ginkgo.By("Waiting for pod-a to be ready", func() {
err = f.WaitForPodReady(podA.Name) err := e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, podA.Name, f.Namespace.Name, framework.PodStartTimeout)
framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.") framework.ExpectNoError(err, "Error occurred while waiting for pod type: Ready.")
}) })

View File

@ -906,7 +906,7 @@ var _ = SIGDescribe("Services", func() {
pod.Labels = jig.Labels pod.Labels = jig.Labels
_, err = cs.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{}) _, err = cs.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
framework.ExpectNoError(f.WaitForPodReady(pod.Name)) framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout))
defer func() { defer func() {
framework.Logf("Cleaning up the echo server pod") framework.Logf("Cleaning up the echo server pod")
err := cs.CoreV1().Pods(ns).Delete(context.TODO(), serverPodName, metav1.DeleteOptions{}) err := cs.CoreV1().Pods(ns).Delete(context.TODO(), serverPodName, metav1.DeleteOptions{})
@ -964,7 +964,7 @@ var _ = SIGDescribe("Services", func() {
podTemplate.Labels = jig.Labels podTemplate.Labels = jig.Labels
pod, err := cs.CoreV1().Pods(ns).Create(context.TODO(), podTemplate, metav1.CreateOptions{}) pod, err := cs.CoreV1().Pods(ns).Create(context.TODO(), podTemplate, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
framework.ExpectNoError(f.WaitForPodReady(pod.Name)) framework.ExpectNoError(e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, pod.Name, f.Namespace.Name, framework.PodStartTimeout))
ginkgo.By("waiting for the service to expose an endpoint") ginkgo.By("waiting for the service to expose an endpoint")
err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}}) err = validateEndpointsPorts(cs, ns, serviceName, portsByPodName{serverPodName: {servicePort}})

View File

@ -172,7 +172,7 @@ func createPodUsingNfs(f *framework.Framework, c clientset.Interface, ns, nfsIP,
rtnPod, err := c.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{}) rtnPod, err := c.CoreV1().Pods(ns).Create(context.TODO(), pod, metav1.CreateOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
err = f.WaitForPodReady(rtnPod.Name) // running & ready err = e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, rtnPod.Name, f.Namespace.Name, framework.PodStartTimeout) // running & ready
framework.ExpectNoError(err) framework.ExpectNoError(err)
rtnPod, err = c.CoreV1().Pods(ns).Get(context.TODO(), rtnPod.Name, metav1.GetOptions{}) // return fresh pod rtnPod, err = c.CoreV1().Pods(ns).Get(context.TODO(), rtnPod.Name, metav1.GetOptions{}) // return fresh pod

View File

@ -27,6 +27,7 @@ import (
kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config" kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
"k8s.io/kubernetes/test/e2e/common" "k8s.io/kubernetes/test/e2e/common"
"k8s.io/kubernetes/test/e2e/framework" "k8s.io/kubernetes/test/e2e/framework"
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
testutils "k8s.io/kubernetes/test/utils" testutils "k8s.io/kubernetes/test/utils"
imageutils "k8s.io/kubernetes/test/utils/image" imageutils "k8s.io/kubernetes/test/utils/image"
@ -172,7 +173,7 @@ var _ = framework.KubeDescribe("StartupProbe [Serial] [Disruptive]", func() {
p, err := podClient.Get(context.TODO(), p.Name, metav1.GetOptions{}) p, err := podClient.Get(context.TODO(), p.Name, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)
f.WaitForPodReady(p.Name) e2epod.WaitTimeoutForPodReadyInNamespace(f.ClientSet, p.Name, f.Namespace.Name, framework.PodStartTimeout)
p, err = podClient.Get(context.TODO(), p.Name, metav1.GetOptions{}) p, err = podClient.Get(context.TODO(), p.Name, metav1.GetOptions{})
framework.ExpectNoError(err) framework.ExpectNoError(err)