Log more information when the docker-machine command fails

Currently, when the 'docker-machine' command fails, we only logs

   "exit status 1'

Which is not very helpful in root cause analysis.

With this patch, the 'docker-machine' command's stderr output is also
logged.

  # To cause docker-machine command fail
  $ export DOCKER_MACHINE_NAME=xx
  $ k3d create
2019/06/13 16:45:31 Created cluster network with ID 6fc91e0e5e912443e6b847f113a6a0bb85ccd610e5232592296d4b199f0347cf
2019/06/13 16:45:31 Error executing 'docker-machine ip'
2019/06/13 16:45:31 Docker machine "xx" does not exist. Use "docker-machine ls" to list machines. Use "docker-machine create" to add a new one.
exit status 1
This commit is contained in:
Andy Zhou 2019-06-13 16:39:54 -07:00
parent 5ebe276162
commit aa6e142b81

View File

@ -1,6 +1,7 @@
package run package run
import ( import (
"log"
"os" "os"
"os/exec" "os/exec"
"strings" "strings"
@ -19,8 +20,16 @@ func getDockerMachineIp() (string, error) {
} }
out, err := exec.Command(dockerMachinePath, "ip", machine).Output() out, err := exec.Command(dockerMachinePath, "ip", machine).Output()
if err != nil {
log.Printf("Error executing 'docker-machine ip'")
if exitError, ok := err.(*exec.ExitError); ok {
log.Printf("%s", string(exitError.Stderr))
}
return "", err
}
ipStr := strings.TrimSuffix(string(out), "\n") ipStr := strings.TrimSuffix(string(out), "\n")
ipStr = strings.TrimSuffix(ipStr, "\r") ipStr = strings.TrimSuffix(ipStr, "\r")
return ipStr, err
return ipStr, nil
} }