diff --git a/builder/hyperv/common/driver_ps_4.go b/builder/hyperv/common/driver_ps_4.go index a5c2abd6f..4b0146146 100644 --- a/builder/hyperv/common/driver_ps_4.go +++ b/builder/hyperv/common/driver_ps_4.go @@ -68,12 +68,33 @@ func (d *HypervPS4Driver) Verify() error { // Get mac address for VM. func (d *HypervPS4Driver) Mac(vmName string) (string, error) { - return hyperv.Mac(vmName) + res, err := hyperv.Mac(vmName) + + if err != nil { + return res, err + } + + if res == "" { + err := fmt.Errorf("%s", "No mac address.") + return res, err + } + + return res, err } // Get ip address for mac address. func (d *HypervPS4Driver) IpAddress(mac string) (string, error) { - return hyperv.IpAddress(mac) + res, err := hyperv.IpAddress(mac) + + if err != nil { + return res, err + } + + if res == "" { + err := fmt.Errorf("%s", "No ip address.") + return res, err + } + return res, err } func (d *HypervPS4Driver) verifyPSVersion() error { diff --git a/builder/hyperv/common/ssh.go b/builder/hyperv/common/ssh.go index f61047dd4..1bb06bfd2 100644 --- a/builder/hyperv/common/ssh.go +++ b/builder/hyperv/common/ssh.go @@ -3,8 +3,8 @@ package common import ( "github.com/mitchellh/multistep" commonssh "github.com/mitchellh/packer/common/ssh" - packerssh "github.com/mitchellh/packer/communicator/ssh" - "golang.org/x/crypto/ssh" + "github.com/mitchellh/packer/communicator/ssh" + gossh "golang.org/x/crypto/ssh" ) func CommHost(state multistep.StateBag) (string, error) { @@ -24,28 +24,26 @@ func CommHost(state multistep.StateBag) (string, error) { return ip, nil } -func SSHConfigFunc(config SSHConfig) func(multistep.StateBag) (*ssh.ClientConfig, error) { - return func(state multistep.StateBag) (*ssh.ClientConfig, error) { - auth := []ssh.AuthMethod{ - ssh.Password(config.Comm.SSHPassword), - ssh.KeyboardInteractive( - packerssh.PasswordKeyboardInteractive(config.Comm.SSHPassword)), +func SSHConfigFunc(config *SSHConfig) func(multistep.StateBag) (*gossh.ClientConfig, error) { + return func(state multistep.StateBag) (*gossh.ClientConfig, error) { + auth := []gossh.AuthMethod{ + gossh.Password(config.Comm.SSHPassword), + gossh.KeyboardInteractive( + ssh.PasswordKeyboardInteractive(config.Comm.SSHPassword)), } - if config.SSHKeyPath != "" { + if config.Comm.SSHPrivateKey != "" { signer, err := commonssh.FileSigner(config.Comm.SSHPrivateKey) if err != nil { return nil, err } - auth = append(auth, ssh.PublicKeys(signer)) + auth = append(auth, gossh.PublicKeys(signer)) } - return &ssh.ClientConfig{ + return &gossh.ClientConfig{ User: config.Comm.SSHUsername, Auth: auth, }, nil } } - - diff --git a/builder/hyperv/iso/builder.go b/builder/hyperv/iso/builder.go index cf7e776a0..c7d4e6405 100644 --- a/builder/hyperv/iso/builder.go +++ b/builder/hyperv/iso/builder.go @@ -299,7 +299,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe &communicator.StepConnect{ Config: &b.config.SSHConfig.Comm, Host: hypervcommon.CommHost, - SSHConfig: hypervcommon.SSHConfigFunc(b.config.SSHConfig), + SSHConfig: hypervcommon.SSHConfigFunc(&b.config.SSHConfig), }, // provision requires communicator to be setup diff --git a/powershell/hyperv/hyperv.go b/powershell/hyperv/hyperv.go index 250722eff..b5e3fc137 100644 --- a/powershell/hyperv/hyperv.go +++ b/powershell/hyperv/hyperv.go @@ -77,7 +77,7 @@ Set-VMFloppyDiskDrive -VMName $vmName -Path $null func CreateVirtualMachine(vmName string, path string, ram string, diskSize string, switchName string, generation string) error { var script = ` -param([string]$vmName, [string]$path, [long]$memoryStartupBytes, [long]$newVHDSizeBytes, [string]$switchName, [int]generation) +param([string]$vmName, [string]$path, [long]$memoryStartupBytes, [long]$newVHDSizeBytes, [string]$switchName, [int]$generation) $vhdx = $vmName + '.vhdx' $vhdPath = Join-Path -Path $path -ChildPath $vhdx New-VM -Name $vmName -Path $path -MemoryStartupBytes $memoryStartupBytes -NewVHDPath $vhdPath -NewVHDSizeBytes $newVHDSizeBytes -SwitchName $switchName -Generation $generation @@ -91,8 +91,8 @@ New-VM -Name $vmName -Path $path -MemoryStartupBytes $memoryStartupBytes -NewVHD func SetVirtualMachineCpu(vmName string, cpu string) error { var script = ` -param([string]$vmName, [int]cpu) -Set-VMProcessor -VMName $vmName –Count $cpu +param([string]$vmName, [int]$cpu) +Set-VMProcessor -VMName $vmName -Count $cpu ` var ps powershell.PowerShellCmd @@ -359,15 +359,15 @@ $vm.State -eq [Microsoft.HyperV.PowerShell.VMState]::Running func Mac(vmName string) (string, error) { var script = ` -param([string]$vmName, [int]$addressIndex) +param([string]$vmName, [int]$adapterIndex) try { $adapter = Get-VMNetworkAdapter -VMName $vmName -ErrorAction SilentlyContinue - $mac = $adapter.MacAddress[$addressIndex] + $mac = $adapter[$adapterIndex].MacAddress if($mac -eq $null) { - return $false + return "" } } catch { - return $false + return "" } $mac ` @@ -385,10 +385,10 @@ try { $ip = Get-Vm | %{$_.NetworkAdapters} | ?{$_.MacAddress -eq $mac} | %{$_.IpAddresses[$addressIndex]} if($ip -eq $null) { - return $false + return "" } } catch { - return $false + return "" } $ip `