Add SSH logs when provisioning with RedHat derivatives

Fixes #3507

Signed-off-by: KOBAYASHI Shinji <koba@jp.fujitsu.com>
This commit is contained in:
KOBAYASHI Shinji 2016-06-14 11:13:32 +00:00
parent 91ec013436
commit ec4697ea33
1 changed files with 18 additions and 3 deletions

View File

@ -1,7 +1,10 @@
package provision
import (
"fmt"
"github.com/docker/machine/libmachine/drivers"
"github.com/docker/machine/libmachine/log"
"github.com/docker/machine/libmachine/ssh"
)
@ -15,17 +18,29 @@ func (sshCmder RedHatSSHCommander) SSHCommand(args string) (string, error) {
return "", err
}
log.Debugf("About to run SSH command:\n%s", args)
// redhat needs "-t" for tty allocation on ssh therefore we check for the
// external client and add as needed.
// Note: CentOS 7.0 needs multiple "-tt" to force tty allocation when ssh has
// no local tty.
var output string
switch c := client.(type) {
case *ssh.ExternalClient:
c.BaseArgs = append(c.BaseArgs, "-tt")
client = c
output, err = c.Output(args)
case *ssh.NativeClient:
return c.OutputWithPty(args)
output, err = c.OutputWithPty(args)
}
return client.Output(args)
log.Debugf("SSH cmd err, output: %v: %s", err, output)
if err != nil {
return "", fmt.Errorf(`Something went wrong running an SSH command!
command : %s
err : %v
output : %s
`, args, err, output)
}
return output, nil
}