-
- stdoutChan := make(chan []byte)
- go func() {
- b, _ := ioutil.ReadAll(stdoutReader)
- stdoutReader.Close()
- stdoutChan <- b
- }()
-
- stderrChan := make(chan []byte)
- go func() {
- b, _ := ioutil.ReadAll(stderrReader)
- stderrReader.Close()
- stderrChan <- b
- }()
-
- // Send a tiny script on stdin to execute the crunch-run command
- // slurm actually enforces that this must be a #! script
- io.WriteString(stdinWriter, execScript(append(crunchRunCommand, container.UUID)))
- stdinWriter.Close()
-
- err = cmd.Wait()
-
- stdoutMsg := <-stdoutChan
- stderrmsg := <-stderrChan
-
- close(stdoutChan)
- close(stderrChan)
-
- if err != nil {
- submitErr = fmt.Errorf("Container submission failed: %v: %v (stderr: %q)", cmd.Args, err, stderrmsg)
- return
- }
-
- log.Printf("sbatch succeeded: %s", strings.TrimSpace(string(stdoutMsg)))
- return