mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
e2e/framework: capture logs only from pods that actually started
Attempting to retrieve logs for a container that hasn't started yet may have been the reason for the "the server does not allow this method on the requested resource" error that showed up on the GCE CI test cluster (issue #70888). If we wait with retrieving logs until the pod is running or has terminated, then we might be able to avoid that error. It's the right thing to do either way and not complicated to implement.
This commit is contained in:
parent
7ba79c3183
commit
a4fc58cc98
@ -99,9 +99,15 @@ func CopyAllLogs(ctx context.Context, cs clientset.Interface, ns string, to LogO
|
||||
}
|
||||
|
||||
for _, pod := range pods.Items {
|
||||
for _, c := range pod.Spec.Containers {
|
||||
for i, c := range pod.Spec.Containers {
|
||||
name := pod.ObjectMeta.Name + "/" + c.Name
|
||||
if logging[name] {
|
||||
if logging[name] ||
|
||||
// sanity check, array should have entry for each container
|
||||
len(pod.Status.ContainerStatuses) <= i ||
|
||||
// Don't attempt to get logs for a container unless it is running or has terminated.
|
||||
// Trying to get a log would just end up with an error that we would have to suppress.
|
||||
(pod.Status.ContainerStatuses[i].State.Running == nil &&
|
||||
pod.Status.ContainerStatuses[i].State.Terminated == nil) {
|
||||
continue
|
||||
}
|
||||
readCloser, err := LogsForPod(ctx, cs, ns, pod.ObjectMeta.Name,
|
||||
|
Loading…
Reference in New Issue
Block a user