Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
packer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kristopher Ruzic
packer
Commits
29931cd0
Commit
29931cd0
authored
Dec 23, 2013
by
Mitchell Hashimoto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
builder/vmware/common: SSHConfig
parent
6d83ef54
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
271 additions
and
218 deletions
+271
-218
builder/vmware/common/config_test.go
builder/vmware/common/config_test.go
+15
-0
builder/vmware/common/ssh.go
builder/vmware/common/ssh.go
+29
-0
builder/vmware/common/ssh_config.go
builder/vmware/common/ssh_config.go
+67
-0
builder/vmware/common/ssh_config_test.go
builder/vmware/common/ssh_config_test.go
+155
-0
builder/vmware/iso/builder.go
builder/vmware/iso/builder.go
+3
-41
builder/vmware/iso/builder_test.go
builder/vmware/iso/builder_test.go
+2
-177
No files found.
builder/vmware/common/config_test.go
0 → 100644
View file @
29931cd0
package
common
import
(
"github.com/mitchellh/packer/packer"
"testing"
)
func
testConfigTemplate
(
t
*
testing
.
T
)
*
packer
.
ConfigTemplate
{
result
,
err
:=
packer
.
NewConfigTemplate
()
if
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
return
result
}
builder/vmware/common/ssh.go
0 → 100644
View file @
29931cd0
package
common
import
(
gossh
"code.google.com/p/go.crypto/ssh"
"io/ioutil"
"os"
"github.com/mitchellh/packer/communicator/ssh"
)
func
sshKeyToKeyring
(
path
string
)
(
gossh
.
ClientKeyring
,
error
)
{
f
,
err
:=
os
.
Open
(
path
)
if
err
!=
nil
{
return
nil
,
err
}
defer
f
.
Close
()
keyBytes
,
err
:=
ioutil
.
ReadAll
(
f
)
if
err
!=
nil
{
return
nil
,
err
}
keyring
:=
new
(
ssh
.
SimpleKeychain
)
if
err
:=
keyring
.
AddPEMKey
(
string
(
keyBytes
));
err
!=
nil
{
return
nil
,
err
}
return
keyring
,
nil
}
builder/vmware/common/ssh_config.go
0 → 100644
View file @
29931cd0
package
common
import
(
"errors"
"fmt"
"os"
"time"
"github.com/mitchellh/packer/packer"
)
type
SSHConfig
struct
{
SSHUser
string
`mapstructure:"ssh_username"`
SSHKeyPath
string
`mapstructure:"ssh_key_path"`
SSHPassword
string
`mapstructure:"ssh_password"`
SSHPort
uint
`mapstructure:"ssh_port"`
SSHSkipRequestPty
bool
`mapstructure:"ssh_skip_request_pty"`
RawSSHWaitTimeout
string
`mapstructure:"ssh_wait_timeout"`
SSHWaitTimeout
time
.
Duration
}
func
(
c
*
SSHConfig
)
Prepare
(
t
*
packer
.
ConfigTemplate
)
[]
error
{
if
c
.
SSHPort
==
0
{
c
.
SSHPort
=
22
}
if
c
.
RawSSHWaitTimeout
==
""
{
c
.
RawSSHWaitTimeout
=
"20m"
}
templates
:=
map
[
string
]
*
string
{
"ssh_key_path"
:
&
c
.
SSHKeyPath
,
"ssh_password"
:
&
c
.
SSHPassword
,
"ssh_username"
:
&
c
.
SSHUser
,
"ssh_wait_timeout"
:
&
c
.
RawSSHWaitTimeout
,
}
errs
:=
make
([]
error
,
0
)
for
n
,
ptr
:=
range
templates
{
var
err
error
*
ptr
,
err
=
t
.
Process
(
*
ptr
,
nil
)
if
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"Error processing %s: %s"
,
n
,
err
))
}
}
if
c
.
SSHKeyPath
!=
""
{
if
_
,
err
:=
os
.
Stat
(
c
.
SSHKeyPath
);
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"ssh_key_path is invalid: %s"
,
err
))
}
else
if
_
,
err
:=
sshKeyToKeyring
(
c
.
SSHKeyPath
);
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"ssh_key_path is invalid: %s"
,
err
))
}
}
if
c
.
SSHUser
==
""
{
errs
=
append
(
errs
,
errors
.
New
(
"An ssh_username must be specified."
))
}
var
err
error
c
.
SSHWaitTimeout
,
err
=
time
.
ParseDuration
(
c
.
RawSSHWaitTimeout
)
if
err
!=
nil
{
errs
=
append
(
errs
,
fmt
.
Errorf
(
"Failed parsing ssh_wait_timeout: %s"
,
err
))
}
return
errs
}
builder/vmware/common/ssh_config_test.go
0 → 100644
View file @
29931cd0
package
common
import
(
"io/ioutil"
"os"
"testing"
)
func
testSSHConfig
()
*
SSHConfig
{
return
&
SSHConfig
{
SSHUser
:
"foo"
,
}
}
func
TestSSHConfigPrepare
(
t
*
testing
.
T
)
{
c
:=
testSSHConfig
()
errs
:=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"err: %#v"
,
errs
)
}
if
c
.
SSHPort
!=
22
{
t
.
Errorf
(
"bad ssh port: %d"
,
c
.
SSHPort
)
}
}
func
TestSSHConfigPrepare_SSHKeyPath
(
t
*
testing
.
T
)
{
var
c
*
SSHConfig
var
errs
[]
error
c
=
testSSHConfig
()
c
.
SSHKeyPath
=
""
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"should not have error: %#v"
,
errs
)
}
c
=
testSSHConfig
()
c
.
SSHKeyPath
=
"/i/dont/exist"
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
==
0
{
t
.
Fatal
(
"should have error"
)
}
// Test bad contents
tf
,
err
:=
ioutil
.
TempFile
(
""
,
"packer"
)
if
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
defer
os
.
Remove
(
tf
.
Name
())
defer
tf
.
Close
()
if
_
,
err
:=
tf
.
Write
([]
byte
(
"HELLO!"
));
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
c
=
testSSHConfig
()
c
.
SSHKeyPath
=
tf
.
Name
()
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
==
0
{
t
.
Fatal
(
"should have error"
)
}
// Test good contents
tf
.
Seek
(
0
,
0
)
tf
.
Truncate
(
0
)
tf
.
Write
([]
byte
(
testPem
))
c
=
testSSHConfig
()
c
.
SSHKeyPath
=
tf
.
Name
()
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"should not have error: %#v"
,
errs
)
}
}
func
TestSSHConfigPrepare_SSHUser
(
t
*
testing
.
T
)
{
var
c
*
SSHConfig
var
errs
[]
error
c
=
testSSHConfig
()
c
.
SSHUser
=
""
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
==
0
{
t
.
Fatalf
(
"should have error"
)
}
c
=
testSSHConfig
()
c
.
SSHUser
=
"exists"
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"should not have error: %#v"
,
errs
)
}
}
func
TestSSHConfigPrepare_SSHWaitTimeout
(
t
*
testing
.
T
)
{
var
c
*
SSHConfig
var
errs
[]
error
// Defaults
c
=
testSSHConfig
()
c
.
RawSSHWaitTimeout
=
""
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"should not have error: %#v"
,
errs
)
}
if
c
.
RawSSHWaitTimeout
!=
"20m"
{
t
.
Fatalf
(
"bad value: %s"
,
c
.
RawSSHWaitTimeout
)
}
// Test with a bad value
c
=
testSSHConfig
()
c
.
RawSSHWaitTimeout
=
"this is not good"
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
==
0
{
t
.
Fatal
(
"should have error"
)
}
// Test with a good one
c
=
testSSHConfig
()
c
.
RawSSHWaitTimeout
=
"5s"
errs
=
c
.
Prepare
(
testConfigTemplate
(
t
))
if
len
(
errs
)
>
0
{
t
.
Fatalf
(
"should not have error: %#v"
,
errs
)
}
}
const
testPem
=
`
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxd4iamvrwRJvtNDGQSIbNvvIQN8imXTRWlRY62EvKov60vqu
hh+rDzFYAIIzlmrJopvOe0clqmi3mIP9dtkjPFrYflq52a2CF5q+BdwsJXuRHbJW
LmStZUwW1khSz93DhvhmK50nIaczW63u4EO/jJb3xj+wxR1Nkk9bxi3DDsYFt8SN
AzYx9kjlEYQ/+sI4/ATfmdV9h78SVotjScupd9KFzzi76gWq9gwyCBLRynTUWlyD
2UOfJRkOvhN6/jKzvYfVVwjPSfA9IMuooHdScmC4F6KBKJl/zf/zETM0XyzIDNmH
uOPbCiljq2WoRM+rY6ET84EO0kVXbfx8uxUsqQIDAQABAoIBAQCkPj9TF0IagbM3
5BSs/CKbAWS4dH/D4bPlxx4IRCNirc8GUg+MRb04Xz0tLuajdQDqeWpr6iLZ0RKV
BvreLF+TOdV7DNQ4XE4gSdJyCtCaTHeort/aordL3l0WgfI7mVk0L/yfN1PEG4YG
E9q1TYcyrB3/8d5JwIkjabxERLglCcP+geOEJp+QijbvFIaZR/n2irlKW4gSy6ko
9B0fgUnhkHysSg49ChHQBPQ+o5BbpuLrPDFMiTPTPhdfsvGGcyCGeqfBA56oHcSF
K02Fg8OM+Bd1lb48LAN9nWWY4WbwV+9bkN3Ym8hO4c3a/Dxf2N7LtAQqWZzFjvM3
/AaDvAgBAoGBAPLD+Xn1IYQPMB2XXCXfOuJewRY7RzoVWvMffJPDfm16O7wOiW5+
2FmvxUDayk4PZy6wQMzGeGKnhcMMZTyaq2g/QtGfrvy7q1Lw2fB1VFlVblvqhoJa
nMJojjC4zgjBkXMHsRLeTmgUKyGs+fdFbfI6uejBnnf+eMVUMIdJ+6I9AoGBANCn
kWO9640dttyXURxNJ3lBr2H3dJOkmD6XS+u+LWqCSKQe691Y/fZ/ZL0Oc4Mhy7I6
hsy3kDQ5k2V0fkaNODQIFJvUqXw2pMewUk8hHc9403f4fe9cPrL12rQ8WlQw4yoC
v2B61vNczCCUDtGxlAaw8jzSRaSI5s6ax3K7enbdAoGBAJB1WYDfA2CoAQO6y9Sl
b07A/7kQ8SN5DbPaqrDrBdJziBQxukoMJQXJeGFNUFD/DXFU5Fp2R7C86vXT7HIR
v6m66zH+CYzOx/YE6EsUJms6UP9VIVF0Rg/RU7teXQwM01ZV32LQ8mswhTH20o/3
uqMHmxUMEhZpUMhrfq0isyApAoGAe1UxGTXfj9AqkIVYylPIq2HqGww7+jFmVEj1
9Wi6S6Sq72ffnzzFEPkIQL/UA4TsdHMnzsYKFPSbbXLIWUeMGyVTmTDA5c0e5XIR
lPhMOKCAzv8w4VUzMnEkTzkFY5JqFCD/ojW57KvDdNZPVB+VEcdxyAW6aKELXMAc
eHLc1nkCgYEApm/motCTPN32nINZ+Vvywbv64ZD+gtpeMNP3CLrbe1X9O+H52AXa
1jCoOldWR8i2bs2NVPcKZgdo6fFULqE4dBX7Te/uYEIuuZhYLNzRO1IKU/YaqsXG
3bfQ8hKYcSnTfE0gPtLDnqCIxTocaGLSHeG3TH9fTw+dA8FvWpUztI4=
-----END RSA PRIVATE KEY-----
`
builder/vmware/iso/builder.go
View file @
29931cd0
...
...
@@ -26,6 +26,7 @@ type Builder struct {
type
config
struct
{
common
.
PackerConfig
`mapstructure:",squash"`
vmwcommon
.
SSHConfig
`mapstructure:",squash"`
DiskName
string
`mapstructure:"vmdk_name"`
DiskSize
uint
`mapstructure:"disk_size"`
...
...
@@ -44,11 +45,6 @@ type config struct {
BootCommand
[]
string
`mapstructure:"boot_command"`
SkipCompaction
bool
`mapstructure:"skip_compaction"`
ShutdownCommand
string
`mapstructure:"shutdown_command"`
SSHUser
string
`mapstructure:"ssh_username"`
SSHKeyPath
string
`mapstructure:"ssh_key_path"`
SSHPassword
string
`mapstructure:"ssh_password"`
SSHPort
uint
`mapstructure:"ssh_port"`
SSHSkipRequestPty
bool
`mapstructure:"ssh_skip_request_pty"`
ToolsUploadFlavor
string
`mapstructure:"tools_upload_flavor"`
ToolsUploadPath
string
`mapstructure:"tools_upload_path"`
VMXData
map
[
string
]
string
`mapstructure:"vmx_data"`
...
...
@@ -66,11 +62,9 @@ type config struct {
RawBootWait
string
`mapstructure:"boot_wait"`
RawSingleISOUrl
string
`mapstructure:"iso_url"`
RawShutdownTimeout
string
`mapstructure:"shutdown_timeout"`
RawSSHWaitTimeout
string
`mapstructure:"ssh_wait_timeout"`
bootWait
time
.
Duration
``
shutdownTimeout
time
.
Duration
``
sshWaitTimeout
time
.
Duration
``
tpl
*
packer
.
ConfigTemplate
}
...
...
@@ -88,6 +82,7 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
// Accumulate any errors
errs
:=
common
.
CheckUnusedConfig
(
md
)
errs
=
packer
.
MultiErrorAppend
(
errs
,
b
.
config
.
SSHConfig
.
Prepare
(
b
.
config
.
tpl
)
...
)
warnings
:=
make
([]
string
,
0
)
if
b
.
config
.
DiskName
==
""
{
...
...
@@ -155,10 +150,6 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
b
.
config
.
RemotePort
=
22
}
if
b
.
config
.
SSHPort
==
0
{
b
.
config
.
SSHPort
=
22
}
if
b
.
config
.
ToolsUploadPath
==
""
{
b
.
config
.
ToolsUploadPath
=
"{{ .Flavor }}.iso"
}
...
...
@@ -173,14 +164,10 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
"iso_url"
:
&
b
.
config
.
RawSingleISOUrl
,
"output_directory"
:
&
b
.
config
.
OutputDir
,
"shutdown_command"
:
&
b
.
config
.
ShutdownCommand
,
"ssh_key_path"
:
&
b
.
config
.
SSHKeyPath
,
"ssh_password"
:
&
b
.
config
.
SSHPassword
,
"ssh_username"
:
&
b
.
config
.
SSHUser
,
"tools_upload_flavor"
:
&
b
.
config
.
ToolsUploadFlavor
,
"vm_name"
:
&
b
.
config
.
VMName
,
"boot_wait"
:
&
b
.
config
.
RawBootWait
,
"shutdown_timeout"
:
&
b
.
config
.
RawShutdownTimeout
,
"ssh_wait_timeout"
:
&
b
.
config
.
RawSSHWaitTimeout
,
"vmx_template_path"
:
&
b
.
config
.
VMXTemplatePath
,
"remote_type"
:
&
b
.
config
.
RemoteType
,
"remote_host"
:
&
b
.
config
.
RemoteHost
,
...
...
@@ -295,21 +282,6 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
}
}
if
b
.
config
.
SSHKeyPath
!=
""
{
if
_
,
err
:=
os
.
Stat
(
b
.
config
.
SSHKeyPath
);
err
!=
nil
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
fmt
.
Errorf
(
"ssh_key_path is invalid: %s"
,
err
))
}
else
if
_
,
err
:=
sshKeyToKeyring
(
b
.
config
.
SSHKeyPath
);
err
!=
nil
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
fmt
.
Errorf
(
"ssh_key_path is invalid: %s"
,
err
))
}
}
if
b
.
config
.
SSHUser
==
""
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
errors
.
New
(
"An ssh_username must be specified."
))
}
if
b
.
config
.
RawBootWait
!=
""
{
b
.
config
.
bootWait
,
err
=
time
.
ParseDuration
(
b
.
config
.
RawBootWait
)
if
err
!=
nil
{
...
...
@@ -328,16 +300,6 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
errs
,
fmt
.
Errorf
(
"Failed parsing shutdown_timeout: %s"
,
err
))
}
if
b
.
config
.
RawSSHWaitTimeout
==
""
{
b
.
config
.
RawSSHWaitTimeout
=
"20m"
}
b
.
config
.
sshWaitTimeout
,
err
=
time
.
ParseDuration
(
b
.
config
.
RawSSHWaitTimeout
)
if
err
!=
nil
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
fmt
.
Errorf
(
"Failed parsing ssh_wait_timeout: %s"
,
err
))
}
if
_
,
err
:=
template
.
New
(
"path"
)
.
Parse
(
b
.
config
.
ToolsUploadPath
);
err
!=
nil
{
errs
=
packer
.
MultiErrorAppend
(
errs
,
fmt
.
Errorf
(
"tools_upload_path invalid: %s"
,
err
))
...
...
@@ -417,7 +379,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
&
common
.
StepConnectSSH
{
SSHAddress
:
driver
.
SSHAddress
,
SSHConfig
:
sshConfig
,
SSHWaitTimeout
:
b
.
config
.
ssh
WaitTimeout
,
SSHWaitTimeout
:
b
.
config
.
SSH
WaitTimeout
,
NoPty
:
b
.
config
.
SSHSkipRequestPty
,
},
&
stepUploadTools
{},
...
...
builder/vmware/iso/builder_test.go
View file @
29931cd0
...
...
@@ -9,36 +9,6 @@ import (
"time"
)
var
testPem
=
`
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAxd4iamvrwRJvtNDGQSIbNvvIQN8imXTRWlRY62EvKov60vqu
hh+rDzFYAIIzlmrJopvOe0clqmi3mIP9dtkjPFrYflq52a2CF5q+BdwsJXuRHbJW
LmStZUwW1khSz93DhvhmK50nIaczW63u4EO/jJb3xj+wxR1Nkk9bxi3DDsYFt8SN
AzYx9kjlEYQ/+sI4/ATfmdV9h78SVotjScupd9KFzzi76gWq9gwyCBLRynTUWlyD
2UOfJRkOvhN6/jKzvYfVVwjPSfA9IMuooHdScmC4F6KBKJl/zf/zETM0XyzIDNmH
uOPbCiljq2WoRM+rY6ET84EO0kVXbfx8uxUsqQIDAQABAoIBAQCkPj9TF0IagbM3
5BSs/CKbAWS4dH/D4bPlxx4IRCNirc8GUg+MRb04Xz0tLuajdQDqeWpr6iLZ0RKV
BvreLF+TOdV7DNQ4XE4gSdJyCtCaTHeort/aordL3l0WgfI7mVk0L/yfN1PEG4YG
E9q1TYcyrB3/8d5JwIkjabxERLglCcP+geOEJp+QijbvFIaZR/n2irlKW4gSy6ko
9B0fgUnhkHysSg49ChHQBPQ+o5BbpuLrPDFMiTPTPhdfsvGGcyCGeqfBA56oHcSF
K02Fg8OM+Bd1lb48LAN9nWWY4WbwV+9bkN3Ym8hO4c3a/Dxf2N7LtAQqWZzFjvM3
/AaDvAgBAoGBAPLD+Xn1IYQPMB2XXCXfOuJewRY7RzoVWvMffJPDfm16O7wOiW5+
2FmvxUDayk4PZy6wQMzGeGKnhcMMZTyaq2g/QtGfrvy7q1Lw2fB1VFlVblvqhoJa
nMJojjC4zgjBkXMHsRLeTmgUKyGs+fdFbfI6uejBnnf+eMVUMIdJ+6I9AoGBANCn
kWO9640dttyXURxNJ3lBr2H3dJOkmD6XS+u+LWqCSKQe691Y/fZ/ZL0Oc4Mhy7I6
hsy3kDQ5k2V0fkaNODQIFJvUqXw2pMewUk8hHc9403f4fe9cPrL12rQ8WlQw4yoC
v2B61vNczCCUDtGxlAaw8jzSRaSI5s6ax3K7enbdAoGBAJB1WYDfA2CoAQO6y9Sl
b07A/7kQ8SN5DbPaqrDrBdJziBQxukoMJQXJeGFNUFD/DXFU5Fp2R7C86vXT7HIR
v6m66zH+CYzOx/YE6EsUJms6UP9VIVF0Rg/RU7teXQwM01ZV32LQ8mswhTH20o/3
uqMHmxUMEhZpUMhrfq0isyApAoGAe1UxGTXfj9AqkIVYylPIq2HqGww7+jFmVEj1
9Wi6S6Sq72ffnzzFEPkIQL/UA4TsdHMnzsYKFPSbbXLIWUeMGyVTmTDA5c0e5XIR
lPhMOKCAzv8w4VUzMnEkTzkFY5JqFCD/ojW57KvDdNZPVB+VEcdxyAW6aKELXMAc
eHLc1nkCgYEApm/motCTPN32nINZ+Vvywbv64ZD+gtpeMNP3CLrbe1X9O+H52AXa
1jCoOldWR8i2bs2NVPcKZgdo6fFULqE4dBX7Te/uYEIuuZhYLNzRO1IKU/YaqsXG
3bfQ8hKYcSnTfE0gPtLDnqCIxTocaGLSHeG3TH9fTw+dA8FvWpUztI4=
-----END RSA PRIVATE KEY-----
`
func
testConfig
()
map
[
string
]
interface
{}
{
return
map
[
string
]
interface
{}{
"iso_checksum"
:
"foo"
,
...
...
@@ -188,8 +158,8 @@ func TestBuilderPrepare_Defaults(t *testing.T) {
t
.
Errorf
(
"bad output dir: %s"
,
b
.
config
.
OutputDir
)
}
if
b
.
config
.
ssh
WaitTimeout
!=
(
20
*
time
.
Minute
)
{
t
.
Errorf
(
"bad wait timeout: %s"
,
b
.
config
.
ssh
WaitTimeout
)
if
b
.
config
.
SSH
WaitTimeout
!=
(
20
*
time
.
Minute
)
{
t
.
Errorf
(
"bad wait timeout: %s"
,
b
.
config
.
SSH
WaitTimeout
)
}
if
b
.
config
.
VMName
!=
"packer-foo"
{
...
...
@@ -460,151 +430,6 @@ func TestBuilderPrepare_ShutdownTimeout(t *testing.T) {
}
}
func
TestBuilderPrepare_sshKeyPath
(
t
*
testing
.
T
)
{
var
b
Builder
config
:=
testConfig
()
config
[
"ssh_key_path"
]
=
""
b
=
Builder
{}
warns
,
err
:=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
!=
nil
{
t
.
Fatalf
(
"should not have error: %s"
,
err
)
}
config
[
"ssh_key_path"
]
=
"/i/dont/exist"
b
=
Builder
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
==
nil
{
t
.
Fatal
(
"should have error"
)
}
// Test bad contents
tf
,
err
:=
ioutil
.
TempFile
(
""
,
"packer"
)
if
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
defer
os
.
Remove
(
tf
.
Name
())
defer
tf
.
Close
()
if
_
,
err
:=
tf
.
Write
([]
byte
(
"HELLO!"
));
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
config
[
"ssh_key_path"
]
=
tf
.
Name
()
b
=
Builder
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
==
nil
{
t
.
Fatal
(
"should have error"
)
}
// Test good contents
tf
.
Seek
(
0
,
0
)
tf
.
Truncate
(
0
)
tf
.
Write
([]
byte
(
testPem
))
config
[
"ssh_key_path"
]
=
tf
.
Name
()
b
=
Builder
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
!=
nil
{
t
.
Fatalf
(
"err: %s"
,
err
)
}
}
func
TestBuilderPrepare_SSHUser
(
t
*
testing
.
T
)
{
var
b
Builder
config
:=
testConfig
()
config
[
"ssh_username"
]
=
""
warns
,
err
:=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
==
nil
{
t
.
Fatal
(
"should have error"
)
}
config
[
"ssh_username"
]
=
"exists"
b
=
Builder
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
!=
nil
{
t
.
Fatalf
(
"should not have error: %s"
,
err
)
}
}
func
TestBuilderPrepare_SSHPort
(
t
*
testing
.
T
)
{
var
b
Builder
config
:=
testConfig
()
// Test with a bad value
delete
(
config
,
"ssh_port"
)
warns
,
err
:=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
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
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
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
()
// Test with a bad value
config
[
"ssh_wait_timeout"
]
=
"this is not good"
warns
,
err
:=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
==
nil
{
t
.
Fatal
(
"should have error"
)
}
// Test with a good one
config
[
"ssh_wait_timeout"
]
=
"5s"
b
=
Builder
{}
warns
,
err
=
b
.
Prepare
(
config
)
if
len
(
warns
)
>
0
{
t
.
Fatalf
(
"bad: %#v"
,
warns
)
}
if
err
!=
nil
{
t
.
Fatalf
(
"should not have error: %s"
,
err
)
}
}
func
TestBuilderPrepare_ToolsUploadPath
(
t
*
testing
.
T
)
{
var
b
Builder
config
:=
testConfig
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment