Skip to content

Commit f13987d

Browse files
authored
Update krew plugin to consume previous pod logs if available (#45)
Co-authored-by: Tony Meehan <tonymeehan@users.noreply.github.com>
1 parent 56e1d89 commit f13987d

1 file changed

Lines changed: 15 additions & 14 deletions

File tree

cmd/plugin/krew/krew.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -328,30 +328,31 @@ func redirectConfigMap(ctx context.Context, clientset *kubernetes.Clientset, nam
328328
}
329329

330330
func redirectPodLogs(ctx context.Context, clientset *kubernetes.Clientset, namespace, pod string) error {
331-
332-
var (
333-
rdr io.ReadCloser
334-
err error
335-
)
336-
337-
rdr, err = clientset.CoreV1().Pods(namespace).GetLogs(pod, &v1.PodLogOptions{}).Stream(ctx)
338-
if err != nil {
339-
return err
340-
}
341-
342331
pr, pw, err := os.Pipe()
343332
if err != nil {
344333
return err
345334
}
346335

347336
go func() {
348337
defer pw.Close()
349-
if _, err := io.Copy(pw, rdr); err != nil {
350-
log.Warn().Err(err).Msg("copy logs -> pipe failed")
338+
339+
if prev, err := clientset.CoreV1().
340+
Pods(namespace).
341+
GetLogs(pod, &v1.PodLogOptions{Previous: true}).
342+
Stream(ctx); err == nil {
343+
_, _ = io.Copy(pw, prev) // best-effort copy
344+
_ = prev.Close()
345+
}
346+
347+
if curr, err := clientset.CoreV1().
348+
Pods(namespace).
349+
GetLogs(pod, &v1.PodLogOptions{}).
350+
Stream(ctx); err == nil {
351+
_, _ = io.Copy(pw, curr)
352+
_ = curr.Close()
351353
}
352354
}()
353355

354356
os.Stdin = pr
355-
356357
return cli.InitAndExecute(ctx)
357358
}

0 commit comments

Comments
 (0)