(ctx context.Context, client kubectl.Client, pod *v1.Pod, container string, command []string, reader io.Reader, stdoutWriter io.Writer, buffer bool, log logpkg.Logger)
| 628 | } |
| 629 | |
| 630 | func StartStream(ctx context.Context, client kubectl.Client, pod *v1.Pod, container string, command []string, reader io.Reader, stdoutWriter io.Writer, buffer bool, log logpkg.Logger) error { |
| 631 | stderrBuffer := &bytes.Buffer{} |
| 632 | stderrReader, stderrWriter := io.Pipe() |
| 633 | defer stderrWriter.Close() |
| 634 | |
| 635 | go func() { |
| 636 | defer stderrReader.Close() |
| 637 | s := scanner.NewScanner(stderrReader) |
| 638 | for s.Scan() { |
| 639 | log.Debug("Helper - " + s.Text()) |
| 640 | } |
| 641 | if s.Err() != nil && s.Err() != context.Canceled { |
| 642 | log.Warnf("Helper - Error streaming logs: %v", s.Err()) |
| 643 | } |
| 644 | }() |
| 645 | |
| 646 | var stdErr io.Writer = stderrWriter |
| 647 | if buffer { |
| 648 | stdErr = io.MultiWriter(stderrBuffer, stderrWriter) |
| 649 | } |
| 650 | |
| 651 | err := client.ExecStream(ctx, &kubectl.ExecStreamOptions{ |
| 652 | Pod: pod, |
| 653 | Container: container, |
| 654 | Command: command, |
| 655 | Stdin: reader, |
| 656 | Stdout: stdoutWriter, |
| 657 | Stderr: stdErr, |
| 658 | }) |
| 659 | if err != nil { |
| 660 | return fmt.Errorf("%s %v", stderrBuffer.String(), err) |
| 661 | } |
| 662 | return nil |
| 663 | } |
no test coverage detected