Move Initialized() to e2e framework util

The function is used at e2e framework util module only.
So this moves the function to the module for trying to remove
dependencies to subpackages from core e2e framework.
This commit is contained in:
Kenichi Omichi 2019-10-11 22:29:03 +00:00
parent a847874655
commit 06d41a485c
2 changed files with 26 additions and 26 deletions

View File

@ -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{})

View File

@ -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
}