diff --git a/test/e2e/framework/pod/BUILD b/test/e2e/framework/pod/BUILD index c5628a99213..86ee6c59d5c 100644 --- a/test/e2e/framework/pod/BUILD +++ b/test/e2e/framework/pod/BUILD @@ -27,6 +27,7 @@ go_library( "//test/utils/image:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library", + "//vendor/k8s.io/klog:go_default_library", ], ) diff --git a/test/e2e/framework/pod/resource.go b/test/e2e/framework/pod/resource.go index da22ad63c4d..85a91d376db 100644 --- a/test/e2e/framework/pod/resource.go +++ b/test/e2e/framework/pod/resource.go @@ -32,6 +32,7 @@ import ( "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" + "k8s.io/klog" "k8s.io/kubectl/pkg/util/podutils" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" e2elog "k8s.io/kubernetes/test/e2e/framework/log" @@ -583,3 +584,24 @@ func getNodeTTLAnnotationValue(c clientset.Interface) (time.Duration, error) { } return time.Duration(intValue) * time.Second, nil } + +// FilterActivePods returns pods that have not terminated. +func FilterActivePods(pods []*v1.Pod) []*v1.Pod { + var result []*v1.Pod + for _, p := range pods { + if IsPodActive(p) { + result = append(result, p) + } else { + klog.V(4).Infof("Ignoring inactive pod %v/%v in state %v, deletion time %v", + p.Namespace, p.Name, p.Status.Phase, p.DeletionTimestamp) + } + } + return result +} + +// IsPodActive return true if the pod meets certain conditions. +func IsPodActive(p *v1.Pod) bool { + return v1.PodSucceeded != p.Status.Phase && + v1.PodFailed != p.Status.Phase && + p.DeletionTimestamp == nil +} diff --git a/test/e2e/framework/resource/BUILD b/test/e2e/framework/resource/BUILD index 9dfa07d08a3..986506e7b1b 100644 --- a/test/e2e/framework/resource/BUILD +++ b/test/e2e/framework/resource/BUILD @@ -9,7 +9,6 @@ go_library( importpath = "k8s.io/kubernetes/test/e2e/framework/resource", visibility = ["//visibility:public"], deps = [ - "//pkg/controller:go_default_library", "//staging/src/k8s.io/api/apps/v1:go_default_library", "//staging/src/k8s.io/api/batch/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", diff --git a/test/e2e/framework/resource/resources.go b/test/e2e/framework/resource/resources.go index a64383d9491..437f616aac8 100644 --- a/test/e2e/framework/resource/resources.go +++ b/test/e2e/framework/resource/resources.go @@ -30,7 +30,6 @@ import ( "k8s.io/apimachinery/pkg/util/wait" clientset "k8s.io/client-go/kubernetes" scaleclient "k8s.io/client-go/scale" - "k8s.io/kubernetes/pkg/controller" "k8s.io/kubernetes/test/e2e/framework" e2epod "k8s.io/kubernetes/test/e2e/framework/pod" testutils "k8s.io/kubernetes/test/utils" @@ -159,7 +158,7 @@ func waitForPodsInactive(ps *testutils.PodStore, interval, timeout time.Duration var activePods []*v1.Pod err := wait.PollImmediate(interval, timeout, func() (bool, error) { pods := ps.List() - activePods = controller.FilterActivePods(pods) + activePods = e2epod.FilterActivePods(pods) if len(activePods) != 0 { return false, nil }