Merge pull request #7108 from hashicorp/revert_hddorder_setting
Revert hddorder setting
This commit is contained in:
commit
2045390e74
|
@ -74,7 +74,7 @@ type Driver interface {
|
||||||
|
|
||||||
AddVirtualMachineHardDrive(string, string, string, int64, int64, string) error
|
AddVirtualMachineHardDrive(string, string, string, int64, int64, string) error
|
||||||
|
|
||||||
CloneVirtualMachine(string, string, string, bool, string, string, string, int64, string) error
|
CloneVirtualMachine(string, string, string, bool, string, string, string, int64, string, bool) error
|
||||||
|
|
||||||
DeleteVirtualMachine(string) error
|
DeleteVirtualMachine(string) error
|
||||||
|
|
||||||
|
|
|
@ -143,6 +143,7 @@ type DriverMock struct {
|
||||||
CloneVirtualMachine_HarddrivePath string
|
CloneVirtualMachine_HarddrivePath string
|
||||||
CloneVirtualMachine_Ram int64
|
CloneVirtualMachine_Ram int64
|
||||||
CloneVirtualMachine_SwitchName string
|
CloneVirtualMachine_SwitchName string
|
||||||
|
CloneVirtualMachine_Copy bool
|
||||||
CloneVirtualMachine_Err error
|
CloneVirtualMachine_Err error
|
||||||
|
|
||||||
DeleteVirtualMachine_Called bool
|
DeleteVirtualMachine_Called bool
|
||||||
|
@ -425,7 +426,7 @@ func (d *DriverMock) CreateVirtualMachine(vmName string, path string, harddriveP
|
||||||
|
|
||||||
func (d *DriverMock) CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
func (d *DriverMock) CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
||||||
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string,
|
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string,
|
||||||
harddrivePath string, ram int64, switchName string) error {
|
harddrivePath string, ram int64, switchName string, copyTF bool) error {
|
||||||
d.CloneVirtualMachine_Called = true
|
d.CloneVirtualMachine_Called = true
|
||||||
d.CloneVirtualMachine_CloneFromVmcxPath = cloneFromVmcxPath
|
d.CloneVirtualMachine_CloneFromVmcxPath = cloneFromVmcxPath
|
||||||
d.CloneVirtualMachine_CloneFromVmName = cloneFromVmName
|
d.CloneVirtualMachine_CloneFromVmName = cloneFromVmName
|
||||||
|
@ -436,6 +437,8 @@ func (d *DriverMock) CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmNa
|
||||||
d.CloneVirtualMachine_HarddrivePath = harddrivePath
|
d.CloneVirtualMachine_HarddrivePath = harddrivePath
|
||||||
d.CloneVirtualMachine_Ram = ram
|
d.CloneVirtualMachine_Ram = ram
|
||||||
d.CloneVirtualMachine_SwitchName = switchName
|
d.CloneVirtualMachine_SwitchName = switchName
|
||||||
|
d.CloneVirtualMachine_Copy = copyTF
|
||||||
|
|
||||||
return d.CloneVirtualMachine_Err
|
return d.CloneVirtualMachine_Err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -190,9 +190,9 @@ func (d *HypervPS4Driver) CreateVirtualMachine(vmName string, path string, hardd
|
||||||
|
|
||||||
func (d *HypervPS4Driver) CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
func (d *HypervPS4Driver) CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
||||||
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string,
|
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string,
|
||||||
ram int64, switchName string) error {
|
ram int64, switchName string, copyTF bool) error {
|
||||||
return hyperv.CloneVirtualMachine(cloneFromVmcxPath, cloneFromVmName, cloneFromSnapshotName,
|
return hyperv.CloneVirtualMachine(cloneFromVmcxPath, cloneFromVmName, cloneFromSnapshotName,
|
||||||
cloneAllSnapshots, vmName, path, harddrivePath, ram, switchName)
|
cloneAllSnapshots, vmName, path, harddrivePath, ram, switchName, copyTF)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *HypervPS4Driver) DeleteVirtualMachine(vmName string) error {
|
func (d *HypervPS4Driver) DeleteVirtualMachine(vmName string) error {
|
||||||
|
|
|
@ -22,6 +22,7 @@ type StepCloneVM struct {
|
||||||
CloneAllSnapshots bool
|
CloneAllSnapshots bool
|
||||||
VMName string
|
VMName string
|
||||||
SwitchName string
|
SwitchName string
|
||||||
|
CompareCopy bool
|
||||||
RamSize uint
|
RamSize uint
|
||||||
Cpu uint
|
Cpu uint
|
||||||
EnableMacSpoofing bool
|
EnableMacSpoofing bool
|
||||||
|
@ -55,8 +56,9 @@ func (s *StepCloneVM) Run(_ context.Context, state multistep.StateBag) multistep
|
||||||
// convert the MB to bytes
|
// convert the MB to bytes
|
||||||
ramSize := int64(s.RamSize * 1024 * 1024)
|
ramSize := int64(s.RamSize * 1024 * 1024)
|
||||||
|
|
||||||
err := driver.CloneVirtualMachine(s.CloneFromVMCXPath, s.CloneFromVMName, s.CloneFromSnapshotName,
|
err := driver.CloneVirtualMachine(s.CloneFromVMCXPath, s.CloneFromVMName,
|
||||||
s.CloneAllSnapshots, s.VMName, path, harddrivePath, ramSize, s.SwitchName)
|
s.CloneFromSnapshotName, s.CloneAllSnapshots, s.VMName, path,
|
||||||
|
harddrivePath, ramSize, s.SwitchName, s.CompareCopy)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
err := fmt.Errorf("Error cloning virtual machine: %s", err)
|
err := fmt.Errorf("Error cloning virtual machine: %s", err)
|
||||||
state.Put("error", err)
|
state.Put("error", err)
|
||||||
|
|
|
@ -81,6 +81,7 @@ type Config struct {
|
||||||
DifferencingDisk bool `mapstructure:"differencing_disk"`
|
DifferencingDisk bool `mapstructure:"differencing_disk"`
|
||||||
|
|
||||||
SwitchName string `mapstructure:"switch_name"`
|
SwitchName string `mapstructure:"switch_name"`
|
||||||
|
CompareCopy bool `mapstructure:"copy_in_compare"`
|
||||||
SwitchVlanId string `mapstructure:"switch_vlan_id"`
|
SwitchVlanId string `mapstructure:"switch_vlan_id"`
|
||||||
MacAddress string `mapstructure:"mac_address"`
|
MacAddress string `mapstructure:"mac_address"`
|
||||||
VlanId string `mapstructure:"vlan_id"`
|
VlanId string `mapstructure:"vlan_id"`
|
||||||
|
@ -430,6 +431,7 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
|
||||||
CloneAllSnapshots: b.config.CloneAllSnapshots,
|
CloneAllSnapshots: b.config.CloneAllSnapshots,
|
||||||
VMName: b.config.VMName,
|
VMName: b.config.VMName,
|
||||||
SwitchName: b.config.SwitchName,
|
SwitchName: b.config.SwitchName,
|
||||||
|
CompareCopy: b.config.CompareCopy,
|
||||||
RamSize: b.config.RamSize,
|
RamSize: b.config.RamSize,
|
||||||
Cpu: b.config.Cpu,
|
Cpu: b.config.Cpu,
|
||||||
EnableMacSpoofing: b.config.EnableMacSpoofing,
|
EnableMacSpoofing: b.config.EnableMacSpoofing,
|
||||||
|
|
|
@ -24,8 +24,6 @@ type vmxTemplateData struct {
|
||||||
CpuCount string
|
CpuCount string
|
||||||
MemorySize string
|
MemorySize string
|
||||||
|
|
||||||
HDD_BootOrder string
|
|
||||||
|
|
||||||
SCSI_Present string
|
SCSI_Present string
|
||||||
SCSI_diskAdapterType string
|
SCSI_diskAdapterType string
|
||||||
SATA_Present string
|
SATA_Present string
|
||||||
|
@ -166,7 +164,6 @@ func (s *stepCreateVMX) Run(_ context.Context, state multistep.StateBag) multist
|
||||||
NVME_Present: "FALSE",
|
NVME_Present: "FALSE",
|
||||||
|
|
||||||
DiskType: "scsi",
|
DiskType: "scsi",
|
||||||
HDD_BootOrder: "scsi0:0",
|
|
||||||
CDROMType: "ide",
|
CDROMType: "ide",
|
||||||
CDROMType_PrimarySecondary: "0",
|
CDROMType_PrimarySecondary: "0",
|
||||||
|
|
||||||
|
@ -189,20 +186,17 @@ func (s *stepCreateVMX) Run(_ context.Context, state multistep.StateBag) multist
|
||||||
templateData.DiskType = "ide"
|
templateData.DiskType = "ide"
|
||||||
templateData.CDROMType = "ide"
|
templateData.CDROMType = "ide"
|
||||||
templateData.CDROMType_PrimarySecondary = "1"
|
templateData.CDROMType_PrimarySecondary = "1"
|
||||||
templateData.HDD_BootOrder = "ide0:0"
|
|
||||||
case "sata":
|
case "sata":
|
||||||
templateData.SATA_Present = "TRUE"
|
templateData.SATA_Present = "TRUE"
|
||||||
templateData.DiskType = "sata"
|
templateData.DiskType = "sata"
|
||||||
templateData.CDROMType = "sata"
|
templateData.CDROMType = "sata"
|
||||||
templateData.CDROMType_PrimarySecondary = "1"
|
templateData.CDROMType_PrimarySecondary = "1"
|
||||||
templateData.HDD_BootOrder = "sata0:0"
|
|
||||||
case "nvme":
|
case "nvme":
|
||||||
templateData.NVME_Present = "TRUE"
|
templateData.NVME_Present = "TRUE"
|
||||||
templateData.DiskType = "nvme"
|
templateData.DiskType = "nvme"
|
||||||
templateData.SATA_Present = "TRUE"
|
templateData.SATA_Present = "TRUE"
|
||||||
templateData.CDROMType = "sata"
|
templateData.CDROMType = "sata"
|
||||||
templateData.CDROMType_PrimarySecondary = "0"
|
templateData.CDROMType_PrimarySecondary = "0"
|
||||||
templateData.HDD_BootOrder = "nvme0:0"
|
|
||||||
case "scsi":
|
case "scsi":
|
||||||
diskAdapterType = "lsilogic"
|
diskAdapterType = "lsilogic"
|
||||||
fallthrough
|
fallthrough
|
||||||
|
@ -212,7 +206,6 @@ func (s *stepCreateVMX) Run(_ context.Context, state multistep.StateBag) multist
|
||||||
templateData.DiskType = "scsi"
|
templateData.DiskType = "scsi"
|
||||||
templateData.CDROMType = "ide"
|
templateData.CDROMType = "ide"
|
||||||
templateData.CDROMType_PrimarySecondary = "0"
|
templateData.CDROMType_PrimarySecondary = "0"
|
||||||
templateData.HDD_BootOrder = "scsi0:0"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle the cdrom adapter type. If the disk adapter type and the
|
/// Handle the cdrom adapter type. If the disk adapter type and the
|
||||||
|
@ -476,7 +469,6 @@ nvram = "{{ .Name }}.nvram"
|
||||||
|
|
||||||
floppy0.present = "FALSE"
|
floppy0.present = "FALSE"
|
||||||
bios.bootOrder = "hdd,cdrom"
|
bios.bootOrder = "hdd,cdrom"
|
||||||
bios.hddOrder = "{{ .HDD_BootOrder }}"
|
|
||||||
|
|
||||||
// Configuration
|
// Configuration
|
||||||
extendedConfigFile = "{{ .Name }}.vmxf"
|
extendedConfigFile = "{{ .Name }}.vmxf"
|
||||||
|
|
|
@ -366,10 +366,10 @@ Hyper-V\Set-VMNetworkAdapter $vmName -staticmacaddress $mac
|
||||||
}
|
}
|
||||||
|
|
||||||
func ImportVmcxVirtualMachine(importPath string, vmName string, harddrivePath string,
|
func ImportVmcxVirtualMachine(importPath string, vmName string, harddrivePath string,
|
||||||
ram int64, switchName string) error {
|
ram int64, switchName string, copyTF bool) error {
|
||||||
|
|
||||||
var script = `
|
var script = `
|
||||||
param([string]$importPath, [string]$vmName, [string]$harddrivePath, [long]$memoryStartupBytes, [string]$switchName)
|
param([string]$importPath, [string]$vmName, [string]$harddrivePath, [long]$memoryStartupBytes, [string]$switchName, [string]$copy)
|
||||||
|
|
||||||
$VirtualHarddisksPath = Join-Path -Path $importPath -ChildPath 'Virtual Hard Disks'
|
$VirtualHarddisksPath = Join-Path -Path $importPath -ChildPath 'Virtual Hard Disks'
|
||||||
if (!(Test-Path $VirtualHarddisksPath)) {
|
if (!(Test-Path $VirtualHarddisksPath)) {
|
||||||
|
@ -395,7 +395,13 @@ if (!$VirtualMachinePath){
|
||||||
$VirtualMachinePath = Get-ChildItem -Path $importPath -Filter *.xml -Recurse -ErrorAction SilentlyContinue | select -First 1 | %{$_.FullName}
|
$VirtualMachinePath = Get-ChildItem -Path $importPath -Filter *.xml -Recurse -ErrorAction SilentlyContinue | select -First 1 | %{$_.FullName}
|
||||||
}
|
}
|
||||||
|
|
||||||
$compatibilityReport = Hyper-V\Compare-VM -Path $VirtualMachinePath -VirtualMachinePath $importPath -SmartPagingFilePath $importPath -SnapshotFilePath $importPath -VhdDestinationPath $VirtualHarddisksPath -GenerateNewId
|
$copyBool = $false
|
||||||
|
switch($copy) {
|
||||||
|
"true" { $copyBool = $true }
|
||||||
|
default { $copyBool = $false }
|
||||||
|
}
|
||||||
|
|
||||||
|
$compatibilityReport = Hyper-V\Compare-VM -Path $VirtualMachinePath -VirtualMachinePath $importPath -SmartPagingFilePath $importPath -SnapshotFilePath $importPath -VhdDestinationPath $VirtualHarddisksPath -GenerateNewId -Copy:$false
|
||||||
if ($vhdPath){
|
if ($vhdPath){
|
||||||
Copy-Item -Path $harddrivePath -Destination $vhdPath
|
Copy-Item -Path $harddrivePath -Destination $vhdPath
|
||||||
$existingFirstHarddrive = $compatibilityReport.VM.HardDrives | Select -First 1
|
$existingFirstHarddrive = $compatibilityReport.VM.HardDrives | Select -First 1
|
||||||
|
@ -415,16 +421,15 @@ if ($vm) {
|
||||||
$result = Hyper-V\Rename-VM -VM $vm -NewName $VMName
|
$result = Hyper-V\Rename-VM -VM $vm -NewName $VMName
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
var ps powershell.PowerShellCmd
|
var ps powershell.PowerShellCmd
|
||||||
err := ps.Run(script, importPath, vmName, harddrivePath, strconv.FormatInt(ram, 10), switchName)
|
err := ps.Run(script, importPath, vmName, harddrivePath, strconv.FormatInt(ram, 10), switchName, strconv.FormatBool(copyTF))
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
func CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
||||||
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string,
|
cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string,
|
||||||
path string, harddrivePath string, ram int64, switchName string) error {
|
path string, harddrivePath string, ram int64, switchName string, copyTF bool) error {
|
||||||
|
|
||||||
if cloneFromVmName != "" {
|
if cloneFromVmName != "" {
|
||||||
if err := ExportVmcxVirtualMachine(path, cloneFromVmName,
|
if err := ExportVmcxVirtualMachine(path, cloneFromVmName,
|
||||||
|
@ -439,7 +444,7 @@ func CloneVirtualMachine(cloneFromVmcxPath string, cloneFromVmName string,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := ImportVmcxVirtualMachine(path, vmName, harddrivePath, ram, switchName); err != nil {
|
if err := ImportVmcxVirtualMachine(path, vmName, harddrivePath, ram, switchName, copyTF); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -116,6 +116,15 @@ builder.
|
||||||
This setting only has an effect if using `clone_from_vm_name` and is
|
This setting only has an effect if using `clone_from_vm_name` and is
|
||||||
ignored otherwise.
|
ignored otherwise.
|
||||||
|
|
||||||
|
- `copy_in_compare` - (bool) When cloning a vm to build from, we run a powershell
|
||||||
|
Compare-VM command, which, depending on your version of Windows, may need
|
||||||
|
the "Copy" flag to be set to true or false. Defaults to "false". Command:
|
||||||
|
|
||||||
|
`$compatibilityReport = Hyper-V\Compare-VM -Path $VirtualMachinePath -VirtualMachinePath $importPath -SmartPagingFilePath $importPath -SnapshotFilePath $importPath -VhdDestinationPath $VirtualHarddisksPath -GenerateNewId -Copy:$copy`
|
||||||
|
|
||||||
|
Where $copy is replaced with either true or false depending on the value of
|
||||||
|
"copy_in_compare".
|
||||||
|
|
||||||
- `cpu` (number) - The number of CPUs the virtual machine should use. If
|
- `cpu` (number) - The number of CPUs the virtual machine should use. If
|
||||||
this isn't specified, the default is 1 CPU.
|
this isn't specified, the default is 1 CPU.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue