From 6d391fc34a677d5b3435a83d1fc06bdd4d9872b2 Mon Sep 17 00:00:00 2001 From: Patrick Lang Date: Fri, 5 Aug 2016 23:09:33 -0700 Subject: [PATCH] Adding support for nested Hyper-V --- builder/hyperv/common/step_create_vm.go | 4 ++-- builder/hyperv/iso/builder.go | 4 ++-- powershell/hyperv/hyperv.go | 9 ++++++--- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/builder/hyperv/common/step_create_vm.go b/builder/hyperv/common/step_create_vm.go index e67942920..c03636f30 100644 --- a/builder/hyperv/common/step_create_vm.go +++ b/builder/hyperv/common/step_create_vm.go @@ -22,7 +22,7 @@ type StepCreateVM struct { Generation uint Cpu uint EnableSecureBoot bool - ExposeVirtualizationExtensions bool + EnableVirtualizationExtensions bool } func (s *StepCreateVM) Run(state multistep.StateBag) multistep.StepAction { @@ -47,7 +47,7 @@ func (s *StepCreateVM) Run(state multistep.StateBag) multistep.StepAction { return multistep.ActionHalt } - err = driver.SetVirtualMachineCpu(s.VMName, s.Cpu, s.ExposeVirtualizationExtensions) + err = driver.SetVirtualMachineCpu(s.VMName, s.Cpu, s.EnableVirtualizationExtensions) if err != nil { err := fmt.Errorf("Error creating setting virtual machine cpu: %s", err) state.Put("error", err) diff --git a/builder/hyperv/iso/builder.go b/builder/hyperv/iso/builder.go index 92d192424..274dca2ea 100644 --- a/builder/hyperv/iso/builder.go +++ b/builder/hyperv/iso/builder.go @@ -89,7 +89,7 @@ type Config struct { Cpu uint `mapstructure:"cpu"` Generation uint `mapstructure:"generation"` EnableSecureBoot bool `mapstructure:"enable_secure_boot"` - EnableVirtualizationExtensions `mapstructure:"enable_virtualization_extensions` + EnableVirtualizationExtensions bool `mapstructure:"enable_virtualization_extensions"` Communicator string `mapstructure:"communicator"` @@ -299,7 +299,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe Generation: b.config.Generation, Cpu: b.config.Cpu, EnableSecureBoot: b.config.EnableSecureBoot, - EnableVirtualizationExtensions: b.config.EnableVirtualizationExtensions + EnableVirtualizationExtensions: b.config.EnableVirtualizationExtensions, }, &hypervcommon.StepEnableIntegrationService{}, diff --git a/powershell/hyperv/hyperv.go b/powershell/hyperv/hyperv.go index b75a5e0b7..2b75a7c5e 100644 --- a/powershell/hyperv/hyperv.go +++ b/powershell/hyperv/hyperv.go @@ -217,15 +217,18 @@ New-VM -Name $vmName -Path $path -MemoryStartupBytes $memoryStartupBytes -NewVHD } } -func SetVirtualMachineCpu(vmName string, cpu uint, exposeVirtualizationExtensions bool) error { +func SetVirtualMachineCpu(vmName string, cpu uint, enableVirtualizationExtensions bool) error { var script = ` param([string]$vmName, [int]$cpu, [bool]$exposeVirtualizationExtensions) Set-VMProcessor -VMName $vmName -Count $cpu -exposeVirtualizationExtensions $exposeVirtualizationExtensions ` - + exposeVirtualizationExtensionsString := "$False" + if enableVirtualizationExtensions { + exposeVirtualizationExtensionsString = "$True" + } var ps powershell.PowerShellCmd - err := ps.Run(script, vmName, strconv.FormatInt(int64(cpu), 10)) + err := ps.Run(script, vmName, strconv.FormatInt(int64(cpu), 10), exposeVirtualizationExtensionsString) return err }