in internal/kubectl.go [402:424]
func (c Kubectl) requestLogs(pod corev1.Pod, out func(string) (io.Writer, error)) error {
// if Pod not in running state let's not extract logs, trying to get logs from previous container does not seem to work
// reliably and might lead to extra misleading noise in the diagnostic data
if pod.Status.Phase != corev1.PodRunning {
return nil
}
logFn := polymorphichelpers.LogsForObjectFn
reqs, err := logFn(c.factory, &pod, &corev1.PodLogOptions{}, 20*time.Second, true)
if err != nil {
return err
}
writer, err := out(archive.Path(pod.Namespace, "pod", pod.Name, "logs.txt"))
if err != nil {
return err
}
for _, r := range reqs {
if err := streamLogs(types.NamespacedName{Namespace: pod.Namespace, Name: pod.Name}, r, writer); err != nil {
return err
}
}
return nil
}