builder/vmware: Ability to specify the SSH port with "ssh_port"

This commit is contained in:
Mitchell Hashimoto 2013-06-23 14:30:52 -07:00
parent 9367df4a3f
commit 43085e472b
3 changed files with 34 additions and 1 deletions

View File

@ -40,6 +40,7 @@ type config struct {
ShutdownTimeout time.Duration ``
SSHUser string `mapstructure:"ssh_username"`
SSHPassword string `mapstructure:"ssh_password"`
SSHPort uint `mapstructure:"ssh_port"`
SSHWaitTimeout time.Duration ``
VMXData map[string]string `mapstructure:"vmx_data"`
VNCPortMin uint `mapstructure:"vnc_port_min"`
@ -92,6 +93,10 @@ func (b *Builder) Prepare(raws ...interface{}) error {
b.config.OutputDir = "vmware"
}
if b.config.SSHPort == 0 {
b.config.SSHPort = 22
}
// Accumulate any errors
var err error
errs := make([]error, 0)

View File

@ -200,6 +200,34 @@ func TestBuilderPrepare_SSHUser(t *testing.T) {
}
}
func TestBuilderPrepare_SSHPort(t *testing.T) {
var b Builder
config := testConfig()
// Test with a bad value
delete(config, "ssh_port")
err := b.Prepare(config)
if err != nil {
t.Fatalf("bad err: %s", err)
}
if b.config.SSHPort != 22 {
t.Fatalf("bad ssh port: %d", b.config.SSHPort)
}
// Test with a good one
config["ssh_port"] = 44
b = Builder{}
err = b.Prepare(config)
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if b.config.SSHPort != 44 {
t.Fatalf("bad ssh port: %d", b.config.SSHPort)
}
}
func TestBuilderPrepare_SSHWaitTimeout(t *testing.T) {
var b Builder
config := testConfig()

View File

@ -144,7 +144,7 @@ func (s *stepWaitForSSH) waitForSSH(state map[string]interface{}) (packer.Commun
log.Printf("Detected IP: %s", ip)
// Attempt to connect to SSH port
nc, err = net.Dial("tcp", fmt.Sprintf("%s:22", ip))
nc, err = net.Dial("tcp", fmt.Sprintf("%s:%d", ip, config.SSHPort))
if err != nil {
log.Printf("TCP connection to SSH ip/port failed: %s", err)
continue