diff --git a/test/e2e/framework/pod/resource.go b/test/e2e/framework/pod/resource.go index 839bc82d0ae..9c9bc5013c0 100644 --- a/test/e2e/framework/pod/resource.go +++ b/test/e2e/framework/pod/resource.go @@ -175,28 +175,6 @@ func CountRemainingPods(c clientset.Interface, namespace string) (int, int, erro return numPods, missingTimestamp, nil } -// Initialized checks the state of all init containers in the pod. -func Initialized(pod *v1.Pod) (ok bool, failed bool, err error) { - allInit := true - initFailed := false - for _, s := range pod.Status.InitContainerStatuses { - switch { - case initFailed && s.State.Waiting == nil: - return allInit, initFailed, fmt.Errorf("container %s is after a failed container but isn't waiting", s.Name) - case allInit && s.State.Waiting == nil: - return allInit, initFailed, fmt.Errorf("container %s is after an initializing container but isn't waiting", s.Name) - case s.State.Terminated == nil: - allInit = false - case s.State.Terminated.ExitCode != 0: - allInit = false - initFailed = true - case !s.Ready: - return allInit, initFailed, fmt.Errorf("container %s initialized but isn't marked as ready", s.Name) - } - } - return allInit, initFailed, nil -} - func podRunning(c clientset.Interface, podName, namespace string) wait.ConditionFunc { return func() (bool, error) { pod, err := c.CoreV1().Pods(namespace).Get(podName, metav1.GetOptions{}) diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index f450c18e7b2..1a9b9c6b172 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -675,10 +675,10 @@ func ContainerInitInvariant(older, newer runtime.Object) error { if err := initContainersInvariants(newPod); err != nil { return err } - oldInit, _, _ := e2epod.Initialized(oldPod) - newInit, _, _ := e2epod.Initialized(newPod) + oldInit, _, _ := initialized(oldPod) + newInit, _, _ := initialized(newPod) if oldInit && !newInit { - // TODO: we may in the future enable resetting Initialized = false if the kubelet needs to restart it + // TODO: we may in the future enable resetting initialized = false if the kubelet needs to restart it // from scratch return fmt.Errorf("pod cannot be initialized and then regress to not being initialized") } @@ -686,7 +686,7 @@ func ContainerInitInvariant(older, newer runtime.Object) error { } func initContainersInvariants(pod *v1.Pod) error { - allInit, initFailed, err := e2epod.Initialized(pod) + allInit, initFailed, err := initialized(pod) if err != nil { return err } @@ -2837,3 +2837,25 @@ func PrettyPrintJSON(metrics interface{}) string { } return string(formatted.Bytes()) } + +// initialized checks the state of all init containers in the pod. +func initialized(pod *v1.Pod) (ok bool, failed bool, err error) { + allInit := true + initFailed := false + for _, s := range pod.Status.InitContainerStatuses { + switch { + case initFailed && s.State.Waiting == nil: + return allInit, initFailed, fmt.Errorf("container %s is after a failed container but isn't waiting", s.Name) + case allInit && s.State.Waiting == nil: + return allInit, initFailed, fmt.Errorf("container %s is after an initializing container but isn't waiting", s.Name) + case s.State.Terminated == nil: + allInit = false + case s.State.Terminated.ExitCode != 0: + allInit = false + initFailed = true + case !s.Ready: + return allInit, initFailed, fmt.Errorf("container %s initialized but isn't marked as ready", s.Name) + } + } + return allInit, initFailed, nil +}