e2e: reading stdin in kubectl

This commit is contained in:
Marek Biskup
2015-07-15 09:52:15 +02:00
parent c5bffaaf31
commit eb43cbb5dc

View File

@@ -858,9 +858,26 @@ func kubectlCmd(args ...string) *exec.Cmd {
return cmd
}
func runKubectl(args ...string) string {
// kubectlBuilder is used to build, custimize and execute a kubectl Command.
// Add more functions to customize the builder as needed.
type kubectlBuilder struct {
cmd *exec.Cmd
}
func newKubectlCommand(args ...string) *kubectlBuilder {
b := new(kubectlBuilder)
b.cmd = kubectlCmd(args...)
return b
}
func (b kubectlBuilder) withStdinData(data string) *kubectlBuilder {
b.cmd.Stdin = strings.NewReader(data)
return &b
}
func (b kubectlBuilder) exec() string {
var stdout, stderr bytes.Buffer
cmd := kubectlCmd(args...)
cmd := b.cmd
cmd.Stdout, cmd.Stderr = &stdout, &stderr
Logf("Running '%s %s'", cmd.Path, strings.Join(cmd.Args, " "))
@@ -873,6 +890,11 @@ func runKubectl(args ...string) string {
return strings.TrimSpace(stdout.String())
}
// runKubectl is a convenience wrapper over kubectlBuilder
func runKubectl(args ...string) string {
return newKubectlCommand(args...).exec()
}
func startCmdAndStreamOutput(cmd *exec.Cmd) (stdout, stderr io.ReadCloser, err error) {
stdout, err = cmd.StdoutPipe()
if err != nil {