From 6db82141f0e70616b870ee6af9d1cf20f58cc27e Mon Sep 17 00:00:00 2001 From: Nathan LeClaire Date: Fri, 10 Jul 2015 11:07:49 -0700 Subject: [PATCH] Bail on failed SSH command with information about what failed Signed-off-by: Nathan LeClaire --- drivers/utils.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/utils.go b/drivers/utils.go index 5f6b6d620e..4c73076f61 100644 --- a/drivers/utils.go +++ b/drivers/utils.go @@ -2,12 +2,17 @@ package drivers import ( "fmt" + "strings" "github.com/docker/machine/log" "github.com/docker/machine/ssh" "github.com/docker/machine/utils" ) +const ( + ErrExitCode255 = "255" +) + func GetSSHClientFromDriver(d Driver) (ssh.Client, error) { addr, err := d.GetSSHHostname() if err != nil { @@ -28,6 +33,10 @@ func GetSSHClientFromDriver(d Driver) (ssh.Client, error) { } +func isErr255Exit(err error) bool { + return strings.Contains(err.Error(), ErrExitCode255) +} + func RunSSHCommandFromDriver(d Driver, command string) (string, error) { client, err := GetSSHClientFromDriver(d) if err != nil { @@ -38,6 +47,12 @@ func RunSSHCommandFromDriver(d Driver, command string) (string, error) { output, err := client.Output(command) log.Debugf("SSH cmd err, output: %v: %s", err, output) + if err != nil && !isErr255Exit(err) { + log.Error("SSH cmd error!") + log.Errorf("command: %s", command) + log.Errorf("err : %v", err) + log.Fatalf("output : %s", output) + } return output, err }