From 674bad0ab4a61c6bcb85b450ee8677d011dacaa6 Mon Sep 17 00:00:00 2001 From: DanHam Date: Mon, 9 Jul 2018 17:20:38 +0100 Subject: [PATCH] Break very long lines for readability --- builder/hyperv/common/driver_mock.go | 17 +++-- builder/hyperv/common/driver_ps_4.go | 29 +++++--- builder/hyperv/common/step_clone_vm.go | 3 +- builder/hyperv/common/step_create_vm.go | 3 +- .../common/step_mount_guest_additions.go | 3 +- .../common/step_mount_secondary_dvd_images.go | 3 +- builder/hyperv/common/step_sleep.go | 3 +- .../hyperv/common/step_unmount_dvddrive.go | 6 +- .../common/step_unmount_guest_additions.go | 6 +- .../step_unmount_secondary_dvd_images.go | 6 +- builder/hyperv/iso/builder.go | 60 +++++++++++----- builder/hyperv/iso/builder_test.go | 15 ++-- builder/hyperv/vmcx/builder.go | 70 +++++++++++++------ builder/hyperv/vmcx/builder_test.go | 3 +- common/powershell/hyperv/hyperv.go | 40 ++++++++--- 15 files changed, 186 insertions(+), 81 deletions(-) diff --git a/builder/hyperv/common/driver_mock.go b/builder/hyperv/common/driver_mock.go index e3ddada15..43a26b517 100644 --- a/builder/hyperv/common/driver_mock.go +++ b/builder/hyperv/common/driver_mock.go @@ -395,7 +395,8 @@ func (d *DriverMock) CreateVirtualSwitch(switchName string, switchType string) ( return d.CreateVirtualSwitch_Return, d.CreateVirtualSwitch_Err } -func (d *DriverMock) AddVirtualMachineHardDrive(vmName string, vhdFile string, vhdName string, vhdSizeBytes int64, vhdDiskBlockSize int64, controllerType string) error { +func (d *DriverMock) AddVirtualMachineHardDrive(vmName string, vhdFile string, vhdName string, + vhdSizeBytes int64, vhdDiskBlockSize int64, controllerType string) error { d.AddVirtualMachineHardDrive_Called = true d.AddVirtualMachineHardDrive_VmName = vmName d.AddVirtualMachineHardDrive_VhdFile = vhdFile @@ -406,7 +407,9 @@ func (d *DriverMock) AddVirtualMachineHardDrive(vmName string, vhdFile string, v return d.AddVirtualMachineHardDrive_Err } -func (d *DriverMock) CreateVirtualMachine(vmName string, path string, harddrivePath string, ram int64, diskSize int64, diskBlockSize int64, switchName string, generation uint, diffDisks bool, fixedVHD bool) error { +func (d *DriverMock) CreateVirtualMachine(vmName string, path string, harddrivePath string, + ram int64, diskSize int64, diskBlockSize int64, switchName string, generation uint, + diffDisks bool, fixedVHD bool) error { d.CreateVirtualMachine_Called = true d.CreateVirtualMachine_VmName = vmName d.CreateVirtualMachine_Path = path @@ -420,7 +423,9 @@ func (d *DriverMock) CreateVirtualMachine(vmName string, path string, harddriveP return d.CreateVirtualMachine_Err } -func (d *DriverMock) CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string, ram int64, switchName string) error { +func (d *DriverMock) CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, + cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, + harddrivePath string, ram int64, switchName string) error { d.CloneVirtualMachine_Called = true d.CloneVirtualMachine_CloneFromVmxcPath = cloneFromVmxcPath d.CloneVirtualMachine_CloneFromVmName = cloneFromVmName @@ -525,7 +530,8 @@ func (d *DriverMock) CreateDvdDrive(vmName string, isoPath string, generation ui return d.CreateDvdDrive_ControllerNumber, d.CreateDvdDrive_ControllerLocation, d.CreateDvdDrive_Err } -func (d *DriverMock) MountDvdDrive(vmName string, path string, controllerNumber uint, controllerLocation uint) error { +func (d *DriverMock) MountDvdDrive(vmName string, path string, controllerNumber uint, + controllerLocation uint) error { d.MountDvdDrive_Called = true d.MountDvdDrive_VmName = vmName d.MountDvdDrive_Path = path @@ -534,7 +540,8 @@ func (d *DriverMock) MountDvdDrive(vmName string, path string, controllerNumber return d.MountDvdDrive_Err } -func (d *DriverMock) SetBootDvdDrive(vmName string, controllerNumber uint, controllerLocation uint, generation uint) error { +func (d *DriverMock) SetBootDvdDrive(vmName string, controllerNumber uint, controllerLocation uint, + generation uint) error { d.SetBootDvdDrive_Called = true d.SetBootDvdDrive_VmName = vmName d.SetBootDvdDrive_ControllerNumber = controllerNumber diff --git a/builder/hyperv/common/driver_ps_4.go b/builder/hyperv/common/driver_ps_4.go index c07473447..7e27ed5e4 100644 --- a/builder/hyperv/common/driver_ps_4.go +++ b/builder/hyperv/common/driver_ps_4.go @@ -175,16 +175,24 @@ func (d *HypervPS4Driver) CreateVirtualSwitch(switchName string, switchType stri return hyperv.CreateVirtualSwitch(switchName, switchType) } -func (d *HypervPS4Driver) AddVirtualMachineHardDrive(vmName string, vhdFile string, vhdName string, vhdSizeBytes int64, diskBlockSize int64, controllerType string) error { - return hyperv.AddVirtualMachineHardDiskDrive(vmName, vhdFile, vhdName, vhdSizeBytes, diskBlockSize, controllerType) +func (d *HypervPS4Driver) AddVirtualMachineHardDrive(vmName string, vhdFile string, vhdName string, + vhdSizeBytes int64, diskBlockSize int64, controllerType string) error { + return hyperv.AddVirtualMachineHardDiskDrive(vmName, vhdFile, vhdName, vhdSizeBytes, + diskBlockSize, controllerType) } -func (d *HypervPS4Driver) CreateVirtualMachine(vmName string, path string, harddrivePath string, ram int64, diskSize int64, diskBlockSize int64, switchName string, generation uint, diffDisks bool, fixedVHD bool) error { - return hyperv.CreateVirtualMachine(vmName, path, harddrivePath, ram, diskSize, diskBlockSize, switchName, generation, diffDisks, fixedVHD) +func (d *HypervPS4Driver) CreateVirtualMachine(vmName string, path string, harddrivePath string, ram int64, + diskSize int64, diskBlockSize int64, switchName string, generation uint, diffDisks bool, + fixedVHD bool) error { + return hyperv.CreateVirtualMachine(vmName, path, harddrivePath, ram, diskSize, diskBlockSize, switchName, + generation, diffDisks, fixedVHD) } -func (d *HypervPS4Driver) CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string, ram int64, switchName string) error { - return hyperv.CloneVirtualMachine(cloneFromVmxcPath, cloneFromVmName, cloneFromSnapshotName, cloneAllSnapshots, vmName, path, harddrivePath, ram, switchName) +func (d *HypervPS4Driver) CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, + cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string, + ram int64, switchName string) error { + return hyperv.CloneVirtualMachine(cloneFromVmxcPath, cloneFromVmName, cloneFromSnapshotName, + cloneAllSnapshots, vmName, path, harddrivePath, ram, switchName) } func (d *HypervPS4Driver) DeleteVirtualMachine(vmName string) error { @@ -211,7 +219,8 @@ func (d *HypervPS4Driver) SetVirtualMachineVirtualizationExtensions(vmName strin return hyperv.SetVirtualMachineVirtualizationExtensions(vmName, enable) } -func (d *HypervPS4Driver) EnableVirtualMachineIntegrationService(vmName string, integrationServiceName string) error { +func (d *HypervPS4Driver) EnableVirtualMachineIntegrationService(vmName string, + integrationServiceName string) error { return hyperv.EnableVirtualMachineIntegrationService(vmName, integrationServiceName) } @@ -239,11 +248,13 @@ func (d *HypervPS4Driver) CreateDvdDrive(vmName string, isoPath string, generati return hyperv.CreateDvdDrive(vmName, isoPath, generation) } -func (d *HypervPS4Driver) MountDvdDrive(vmName string, path string, controllerNumber uint, controllerLocation uint) error { +func (d *HypervPS4Driver) MountDvdDrive(vmName string, path string, controllerNumber uint, + controllerLocation uint) error { return hyperv.MountDvdDrive(vmName, path, controllerNumber, controllerLocation) } -func (d *HypervPS4Driver) SetBootDvdDrive(vmName string, controllerNumber uint, controllerLocation uint, generation uint) error { +func (d *HypervPS4Driver) SetBootDvdDrive(vmName string, controllerNumber uint, controllerLocation uint, + generation uint) error { return hyperv.SetBootDvdDrive(vmName, controllerNumber, controllerLocation, generation) } diff --git a/builder/hyperv/common/step_clone_vm.go b/builder/hyperv/common/step_clone_vm.go index 6a3d434a8..514929669 100644 --- a/builder/hyperv/common/step_clone_vm.go +++ b/builder/hyperv/common/step_clone_vm.go @@ -55,7 +55,8 @@ func (s *StepCloneVM) Run(_ context.Context, state multistep.StateBag) multistep // convert the MB to bytes ramSize := int64(s.RamSize * 1024 * 1024) - err := driver.CloneVirtualMachine(s.CloneFromVMXCPath, s.CloneFromVMName, s.CloneFromSnapshotName, s.CloneAllSnapshots, s.VMName, path, harddrivePath, ramSize, s.SwitchName) + err := driver.CloneVirtualMachine(s.CloneFromVMXCPath, s.CloneFromVMName, s.CloneFromSnapshotName, + s.CloneAllSnapshots, s.VMName, path, harddrivePath, ramSize, s.SwitchName) if err != nil { err := fmt.Errorf("Error cloning virtual machine: %s", err) state.Put("error", err) diff --git a/builder/hyperv/common/step_create_vm.go b/builder/hyperv/common/step_create_vm.go index 1c655becf..b5b36ddaf 100644 --- a/builder/hyperv/common/step_create_vm.go +++ b/builder/hyperv/common/step_create_vm.go @@ -63,7 +63,8 @@ func (s *StepCreateVM) Run(_ context.Context, state multistep.StateBag) multiste diskSize := int64(s.DiskSize * 1024 * 1024) diskBlockSize := int64(s.DiskBlockSize * 1024 * 1024) - err := driver.CreateVirtualMachine(s.VMName, path, harddrivePath, ramSize, diskSize, diskBlockSize, s.SwitchName, s.Generation, s.DifferencingDisk, s.FixedVHD) + err := driver.CreateVirtualMachine(s.VMName, path, harddrivePath, ramSize, diskSize, diskBlockSize, + s.SwitchName, s.Generation, s.DifferencingDisk, s.FixedVHD) if err != nil { err := fmt.Errorf("Error creating virtual machine: %s", err) state.Put("error", err) diff --git a/builder/hyperv/common/step_mount_guest_additions.go b/builder/hyperv/common/step_mount_guest_additions.go index 71b6c3eec..d333c5baf 100644 --- a/builder/hyperv/common/step_mount_guest_additions.go +++ b/builder/hyperv/common/step_mount_guest_additions.go @@ -56,7 +56,8 @@ func (s *StepMountGuestAdditions) Run(_ context.Context, state multistep.StateBa return multistep.ActionHalt } - log.Println(fmt.Sprintf("ISO %s mounted on DVD controller %v, location %v", s.GuestAdditionsPath, controllerNumber, controllerLocation)) + log.Println(fmt.Sprintf("ISO %s mounted on DVD controller %v, location %v", s.GuestAdditionsPath, + controllerNumber, controllerLocation)) return multistep.ActionContinue } diff --git a/builder/hyperv/common/step_mount_secondary_dvd_images.go b/builder/hyperv/common/step_mount_secondary_dvd_images.go index c23e39fac..22563376b 100644 --- a/builder/hyperv/common/step_mount_secondary_dvd_images.go +++ b/builder/hyperv/common/step_mount_secondary_dvd_images.go @@ -58,7 +58,8 @@ func (s *StepMountSecondaryDvdImages) Run(_ context.Context, state multistep.Sta return multistep.ActionHalt } - log.Println(fmt.Sprintf("ISO %s mounted on DVD controller %v, location %v", isoPath, controllerNumber, controllerLocation)) + log.Println(fmt.Sprintf("ISO %s mounted on DVD controller %v, location %v", isoPath, controllerNumber, + controllerLocation)) } return multistep.ActionContinue diff --git a/builder/hyperv/common/step_sleep.go b/builder/hyperv/common/step_sleep.go index e65bcf0b1..e7ed01cca 100644 --- a/builder/hyperv/common/step_sleep.go +++ b/builder/hyperv/common/step_sleep.go @@ -18,7 +18,8 @@ func (s *StepSleep) Run(_ context.Context, state multistep.StateBag) multistep.S ui := state.Get("ui").(packer.Ui) if len(s.ActionName) > 0 { - ui.Say(s.ActionName + "! Waiting for " + fmt.Sprintf("%v", uint(s.Minutes)) + " minutes to let the action to complete...") + ui.Say(s.ActionName + "! Waiting for " + fmt.Sprintf("%v", uint(s.Minutes)) + + " minutes to let the action to complete...") } time.Sleep(time.Minute * s.Minutes) diff --git a/builder/hyperv/common/step_unmount_dvddrive.go b/builder/hyperv/common/step_unmount_dvddrive.go index 010e8b067..50298f6e1 100644 --- a/builder/hyperv/common/step_unmount_dvddrive.go +++ b/builder/hyperv/common/step_unmount_dvddrive.go @@ -27,7 +27,8 @@ func (s *StepUnmountDvdDrive) Run(_ context.Context, state multistep.StateBag) m dvdController := dvdControllerState.(DvdControllerProperties) if dvdController.Existing { - ui.Say(fmt.Sprintf("Unmounting os dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Unmounting os dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.UnmountDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error unmounting os dvd drive: %s", err) @@ -36,7 +37,8 @@ func (s *StepUnmountDvdDrive) Run(_ context.Context, state multistep.StateBag) m return multistep.ActionHalt } } else { - ui.Say(fmt.Sprintf("Delete os dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Delete os dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.DeleteDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error deleting os dvd drive: %s", err) diff --git a/builder/hyperv/common/step_unmount_guest_additions.go b/builder/hyperv/common/step_unmount_guest_additions.go index 06600ddaa..c7f78cf52 100644 --- a/builder/hyperv/common/step_unmount_guest_additions.go +++ b/builder/hyperv/common/step_unmount_guest_additions.go @@ -27,7 +27,8 @@ func (s *StepUnmountGuestAdditions) Run(_ context.Context, state multistep.State dvdController := dvdControllerState.(DvdControllerProperties) if dvdController.Existing { - ui.Say(fmt.Sprintf("Unmounting Integration Services dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Unmounting Integration Services dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.UnmountDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error unmounting Integration Services dvd drive: %s", err) @@ -36,7 +37,8 @@ func (s *StepUnmountGuestAdditions) Run(_ context.Context, state multistep.State return multistep.ActionHalt } } else { - ui.Say(fmt.Sprintf("Delete Integration Services dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Delete Integration Services dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.DeleteDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error deleting Integration Services dvd drive: %s", err) diff --git a/builder/hyperv/common/step_unmount_secondary_dvd_images.go b/builder/hyperv/common/step_unmount_secondary_dvd_images.go index 0f74d2789..06bd2e0db 100644 --- a/builder/hyperv/common/step_unmount_secondary_dvd_images.go +++ b/builder/hyperv/common/step_unmount_secondary_dvd_images.go @@ -28,7 +28,8 @@ func (s *StepUnmountSecondaryDvdImages) Run(_ context.Context, state multistep.S for _, dvdController := range dvdControllers { if dvdController.Existing { - ui.Say(fmt.Sprintf("Unmounting secondary dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Unmounting secondary dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.UnmountDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error unmounting secondary dvd drive: %s", err) @@ -37,7 +38,8 @@ func (s *StepUnmountSecondaryDvdImages) Run(_ context.Context, state multistep.S return multistep.ActionHalt } } else { - ui.Say(fmt.Sprintf("Delete secondary dvd drives controller %d location %d ...", dvdController.ControllerNumber, dvdController.ControllerLocation)) + ui.Say(fmt.Sprintf("Delete secondary dvd drives controller %d location %d ...", + dvdController.ControllerNumber, dvdController.ControllerLocation)) err := driver.DeleteDvdDrive(vmName, dvdController.ControllerNumber, dvdController.ControllerLocation) if err != nil { err := fmt.Errorf("Error deleting secondary dvd drive: %s", err) diff --git a/builder/hyperv/iso/builder.go b/builder/hyperv/iso/builder.go index fd51c85c0..61aa70fc4 100644 --- a/builder/hyperv/iso/builder.go +++ b/builder/hyperv/iso/builder.go @@ -145,7 +145,9 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { errs = packer.MultiErrorAppend(errs, b.config.SSHConfig.Prepare(&b.config.ctx)...) errs = packer.MultiErrorAppend(errs, b.config.ShutdownConfig.Prepare(&b.config.ctx)...) - if len(b.config.ISOConfig.ISOUrls) < 1 || (strings.ToLower(filepath.Ext(b.config.ISOConfig.ISOUrls[0])) != ".vhd" && strings.ToLower(filepath.Ext(b.config.ISOConfig.ISOUrls[0])) != ".vhdx") { + if len(b.config.ISOConfig.ISOUrls) < 1 || + (strings.ToLower(filepath.Ext(b.config.ISOConfig.ISOUrls[0])) != ".vhd" && + strings.ToLower(filepath.Ext(b.config.ISOConfig.ISOUrls[0])) != ".vhdx") { //We only create a new hard drive if an existing one to copy from does not exist err = b.checkDiskSize() if err != nil { @@ -249,25 +251,35 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.Generation < 2 && numberOfIsos > 2 { if b.config.GuestAdditionsMode == "attach" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so we can't support guest additions and these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, "+ + "so we can't support guest additions and these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } else { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so we can't support these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, "+ + "so we can't support these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) } } else if b.config.Generation > 1 && len(b.config.SecondaryDvdImages) > 16 { if b.config.GuestAdditionsMode == "attach" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for scsi (limited to 16), so we can't support guest additions and these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available "+ + "for scsi (limited to 16), so we can't support guest additions and these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } else { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for scsi (limited to 16), so we can't support these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available "+ + "for scsi (limited to 16), so we can't support these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } } if b.config.EnableVirtualizationExtensions { hasVirtualMachineVirtualizationExtensions, err := powershell.HasVirtualMachineVirtualizationExtensions() if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine virtualization extensions support: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine virtualization "+ + "extensions support: %s", err)) } else { if !hasVirtualMachineVirtualizationExtensions { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("This version of Hyper-V does not support virtual machine virtualization extension. Please use Windows 10 or Windows Server 2016 or newer.")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("This version of Hyper-V does not support "+ + "virtual machine virtualization extension. Please use Windows 10 or Windows Server "+ + "2016 or newer.")) } } } @@ -302,24 +314,29 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.EnableVirtualizationExtensions { if b.config.EnableDynamicMemory { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, dynamic memory should not be allowed.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "dynamic memory should not be allowed.") warnings = appendWarnings(warnings, warning) } if !b.config.EnableMacSpoofing { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, mac spoofing should be allowed.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "mac spoofing should be allowed.") warnings = appendWarnings(warnings, warning) } if b.config.RamSize < MinNestedVirtualizationRamSize { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, there should be 4GB or more memory set for the vm, otherwise Hyper-V may fail to start any nested VMs.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "there should be 4GB or more memory set for the vm, otherwise Hyper-V may fail to start " + + "any nested VMs.") warnings = appendWarnings(warnings, warning) } } if b.config.SwitchVlanId != "" { if b.config.SwitchVlanId != b.config.VlanId { - warning = fmt.Sprintf("Switch network adaptor vlan should match virtual machine network adaptor vlan. The switch will not be able to see traffic from the VM.") + warning = fmt.Sprintf("Switch network adaptor vlan should match virtual machine network adaptor " + + "vlan. The switch will not be able to see traffic from the VM.") warnings = appendWarnings(warnings, warning) } } @@ -524,11 +541,14 @@ func (b *Builder) checkDiskSize() error { log.Println(fmt.Sprintf("%s: %v", "DiskSize", b.config.DiskSize)) if b.config.DiskSize < MinDiskSize { - return fmt.Errorf("disk_size: Virtual machine requires disk space >= %v GB, but defined: %v", MinDiskSize, b.config.DiskSize/1024) + return fmt.Errorf("disk_size: Virtual machine requires disk space >= %v GB, but defined: %v", + MinDiskSize, b.config.DiskSize/1024) } else if b.config.DiskSize > MaxDiskSize && !b.config.FixedVHD { - return fmt.Errorf("disk_size: Virtual machine requires disk space <= %v GB, but defined: %v", MaxDiskSize, b.config.DiskSize/1024) + return fmt.Errorf("disk_size: Virtual machine requires disk space <= %v GB, but defined: %v", + MaxDiskSize, b.config.DiskSize/1024) } else if b.config.DiskSize > MaxVHDSize && b.config.FixedVHD { - return fmt.Errorf("disk_size: Virtual machine requires disk space <= %v GB, but defined: %v", MaxVHDSize/1024, b.config.DiskSize/1024) + return fmt.Errorf("disk_size: Virtual machine requires disk space <= %v GB, but defined: %v", + MaxVHDSize/1024, b.config.DiskSize/1024) } return nil @@ -542,9 +562,11 @@ func (b *Builder) checkDiskBlockSize() error { log.Println(fmt.Sprintf("%s: %v", "DiskBlockSize", b.config.DiskBlockSize)) if b.config.DiskBlockSize < MinDiskBlockSize { - return fmt.Errorf("disk_block_size: Virtual machine requires disk block size >= %v MB, but defined: %v", MinDiskBlockSize, b.config.DiskBlockSize) + return fmt.Errorf("disk_block_size: Virtual machine requires disk block size >= %v MB, but defined: %v", + MinDiskBlockSize, b.config.DiskBlockSize) } else if b.config.DiskBlockSize > MaxDiskBlockSize { - return fmt.Errorf("disk_block_size: Virtual machine requires disk block size <= %v MB, but defined: %v", MaxDiskBlockSize, b.config.DiskBlockSize) + return fmt.Errorf("disk_block_size: Virtual machine requires disk block size <= %v MB, but defined: %v", + MaxDiskBlockSize, b.config.DiskBlockSize) } return nil @@ -558,9 +580,11 @@ func (b *Builder) checkRamSize() error { log.Println(fmt.Sprintf("%s: %v", "RamSize", b.config.RamSize)) if b.config.RamSize < MinRamSize { - return fmt.Errorf("ram_size: Virtual machine requires memory size >= %v MB, but defined: %v", MinRamSize, b.config.RamSize) + return fmt.Errorf("ram_size: Virtual machine requires memory size >= %v MB, but defined: %v", + MinRamSize, b.config.RamSize) } else if b.config.RamSize > MaxRamSize { - return fmt.Errorf("ram_size: Virtual machine requires memory size <= %v MB, but defined: %v", MaxRamSize, b.config.RamSize) + return fmt.Errorf("ram_size: Virtual machine requires memory size <= %v MB, but defined: %v", + MaxRamSize, b.config.RamSize) } return nil diff --git a/builder/hyperv/iso/builder_test.go b/builder/hyperv/iso/builder_test.go index 4a63f3c67..44d73e8c8 100644 --- a/builder/hyperv/iso/builder_test.go +++ b/builder/hyperv/iso/builder_test.go @@ -104,7 +104,8 @@ func TestBuilderPrepare_DiskBlockSize(t *testing.T) { t.Fatalf("bad err: %s", err) } if b.config.DiskBlockSize != expected_default_block_size { - t.Fatalf("bad default block size with empty config: %d. Expected %d", b.config.DiskBlockSize, expected_default_block_size) + t.Fatalf("bad default block size with empty config: %d. Expected %d", b.config.DiskBlockSize, + expected_default_block_size) } test_sizes := []uint{0, 1, 32, 256, 512, 1 * 1024, 32 * 1024} @@ -117,7 +118,8 @@ func TestBuilderPrepare_DiskBlockSize(t *testing.T) { t.Fatalf("bad, should have no warns: %#v", warns) } if err == nil { - t.Fatalf("bad, should have error but didn't. disk_block_size=%d outside expected valid range [%d,%d]", test_size, expected_min_block_size, expected_max_block_size) + t.Fatalf("bad, should have error. disk_block_size=%d outside expected valid range [%d,%d]", + test_size, expected_min_block_size, expected_max_block_size) } } else { if len(warns) > 0 { @@ -128,11 +130,13 @@ func TestBuilderPrepare_DiskBlockSize(t *testing.T) { } if test_size == 0 { if b.config.DiskBlockSize != expected_default_block_size { - t.Fatalf("bad default block size with 0 value config: %d. Expected: %d", b.config.DiskBlockSize, expected_default_block_size) + t.Fatalf("bad default block size with 0 value config: %d. Expected: %d", + b.config.DiskBlockSize, expected_default_block_size) } } else { if b.config.DiskBlockSize != test_size { - t.Fatalf("bad block size with 0 value config: %d. Expected: %d", b.config.DiskBlockSize, expected_default_block_size) + t.Fatalf("bad block size with 0 value config: %d. Expected: %d", b.config.DiskBlockSize, + expected_default_block_size) } } } @@ -147,7 +151,8 @@ func TestBuilderPrepare_FixedVHDFormat(t *testing.T) { config["skip_compaction"] = true config["differencing_disk"] = false - //use_fixed_vhd_format should work with generation = 1, skip_compaction = true, and differencing_disk = false + // use_fixed_vhd_format should work with generation = 1, skip_compaction + // = true, and differencing_disk = false warns, err := b.Prepare(config) if len(warns) > 0 { t.Fatalf("bad: %#v", warns) diff --git a/builder/hyperv/vmcx/builder.go b/builder/hyperv/vmcx/builder.go index 88ebef783..c4675c0cd 100644 --- a/builder/hyperv/vmcx/builder.go +++ b/builder/hyperv/vmcx/builder.go @@ -159,35 +159,44 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.CloneFromVMName == "" { if b.config.CloneFromVMXCPath == "" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("The clone_from_vm_name must be specified if clone_from_vmxc_path is not specified.")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("The clone_from_vm_name must be specified if "+ + "clone_from_vmxc_path is not specified.")) } } else { virtualMachineExists, err := powershell.DoesVirtualMachineExist(b.config.CloneFromVMName) if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine to clone from exists: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine to clone "+ + "from exists: %s", err)) } else { if !virtualMachineExists { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Virtual machine '%s' to clone from does not exist.", b.config.CloneFromVMName)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Virtual machine '%s' to clone from does not "+ + "exist.", b.config.CloneFromVMName)) } else { b.config.Generation, err = powershell.GetVirtualMachineGeneration(b.config.CloneFromVMName) if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine to clone from generation: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine to clone "+ + "from generation: %s", err)) } if b.config.CloneFromSnapshotName != "" { - virtualMachineSnapshotExists, err := powershell.DoesVirtualMachineSnapshotExist(b.config.CloneFromVMName, b.config.CloneFromSnapshotName) + virtualMachineSnapshotExists, err := powershell.DoesVirtualMachineSnapshotExist( + b.config.CloneFromVMName, b.config.CloneFromSnapshotName) if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine snapshot to clone from exists: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine "+ + "snapshot to clone from exists: %s", err)) } else { if !virtualMachineSnapshotExists { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Virtual machine snapshot '%s' on virtual machine '%s' to clone from does not exist.", b.config.CloneFromSnapshotName, b.config.CloneFromVMName)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Virtual machine snapshot '%s' on "+ + "virtual machine '%s' to clone from does not exist.", + b.config.CloneFromSnapshotName, b.config.CloneFromVMName)) } } } virtualMachineOn, err := powershell.IsVirtualMachineOn(b.config.CloneFromVMName) if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine to clone is running: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting if virtual machine to "+ + "clone is running: %s", err)) } else { if virtualMachineOn { warning := fmt.Sprintf("Cloning from a virtual machine that is running.") @@ -200,7 +209,8 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.CloneFromVMXCPath == "" { if b.config.CloneFromVMName == "" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("The clone_from_vmxc_path be specified if clone_from_vm_name must is not specified.")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("The clone_from_vmxc_path be specified if "+ + "clone_from_vm_name must is not specified.")) } } else { if _, err := os.Stat(b.config.CloneFromVMXCPath); os.IsNotExist(err) { @@ -277,25 +287,36 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.Generation < 2 && numberOfIsos > 2 { if b.config.GuestAdditionsMode == "attach" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so we can't support guest additions and these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so "+ + "we can't support guest additions and these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } else { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so we can't support these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are only 2 ide controllers available, so "+ + "we can't support these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } } else if b.config.Generation > 1 && len(b.config.SecondaryDvdImages) > 16 { if b.config.GuestAdditionsMode == "attach" { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for scsi (limited to 16), so we can't support guest additions and these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for "+ + "scsi (limited to 16), so we can't support guest additions and these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } else { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for scsi (limited to 16), so we can't support these secondary dvds: %s", strings.Join(b.config.SecondaryDvdImages, ", "))) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("There are not enough drive letters available for "+ + "scsi (limited to 16), so we can't support these secondary dvds: %s", + strings.Join(b.config.SecondaryDvdImages, ", "))) } } if b.config.EnableVirtualizationExtensions { hasVirtualMachineVirtualizationExtensions, err := powershell.HasVirtualMachineVirtualizationExtensions() if err != nil { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine virtualization extensions support: %s", err)) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("Failed detecting virtual machine virtualization "+ + "extensions support: %s", err)) } else { if !hasVirtualMachineVirtualizationExtensions { - errs = packer.MultiErrorAppend(errs, fmt.Errorf("This version of Hyper-V does not support virtual machine virtualization extension. Please use Windows 10 or Windows Server 2016 or newer.")) + errs = packer.MultiErrorAppend(errs, fmt.Errorf("This version of Hyper-V does not support "+ + "virtual machine virtualization extension. Please use Windows 10 or Windows Server 2016 "+ + "or newer.")) } } } @@ -315,24 +336,29 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) { if b.config.EnableVirtualizationExtensions { if b.config.EnableDynamicMemory { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, dynamic memory should not be allowed.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "dynamic memory should not be allowed.") warnings = appendWarnings(warnings, warning) } if !b.config.EnableMacSpoofing { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, mac spoofing should be allowed.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "mac spoofing should be allowed.") warnings = appendWarnings(warnings, warning) } if b.config.RamSize < MinNestedVirtualizationRamSize { - warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, there should be 4GB or more memory set for the vm, otherwise Hyper-V may fail to start any nested VMs.") + warning = fmt.Sprintf("For nested virtualization, when virtualization extension is enabled, " + + "there should be 4GB or more memory set for the vm, otherwise Hyper-V may fail to start " + + "any nested VMs.") warnings = appendWarnings(warnings, warning) } } if b.config.SwitchVlanId != "" { if b.config.SwitchVlanId != b.config.VlanId { - warning = fmt.Sprintf("Switch network adaptor vlan should match virtual machine network adaptor vlan. The switch will not be able to see traffic from the VM.") + warning = fmt.Sprintf("Switch network adaptor vlan should match virtual machine network adaptor " + + "vlan. The switch will not be able to see traffic from the VM.") warnings = appendWarnings(warnings, warning) } } @@ -544,9 +570,11 @@ func (b *Builder) checkRamSize() error { log.Println(fmt.Sprintf("%s: %v", "RamSize", b.config.RamSize)) if b.config.RamSize < MinRamSize { - return fmt.Errorf("ram_size: Virtual machine requires memory size >= %v MB, but defined: %v", MinRamSize, b.config.RamSize) + return fmt.Errorf("ram_size: Virtual machine requires memory size >= %v MB, but defined: %v", + MinRamSize, b.config.RamSize) } else if b.config.RamSize > MaxRamSize { - return fmt.Errorf("ram_size: Virtual machine requires memory size <= %v MB, but defined: %v", MaxRamSize, b.config.RamSize) + return fmt.Errorf("ram_size: Virtual machine requires memory size <= %v MB, but defined: %v", + MaxRamSize, b.config.RamSize) } return nil diff --git a/builder/hyperv/vmcx/builder_test.go b/builder/hyperv/vmcx/builder_test.go index 9a4a54c33..ce7729c51 100644 --- a/builder/hyperv/vmcx/builder_test.go +++ b/builder/hyperv/vmcx/builder_test.go @@ -162,7 +162,8 @@ func disabled_TestBuilderPrepare_CloneFromVmSettingUsedSoNoCloneFromVmxcPathRequ t.Fatal("should have error") } else { errorMessage := err.Error() - if errorMessage != "1 error(s) occurred:\n\n* Virtual machine 'test_machine_name_that_does_not_exist' to clone from does not exist." { + if errorMessage != "1 error(s) occurred:\n\n* Virtual machine 'test_machine_name_that_does_not_exist' "+ + "to clone from does not exist." { t.Fatalf("should not have error: %s", err) } } diff --git a/common/powershell/hyperv/hyperv.go b/common/powershell/hyperv/hyperv.go index 8b267c8c5..32f1cb57a 100644 --- a/common/powershell/hyperv/hyperv.go +++ b/common/powershell/hyperv/hyperv.go @@ -111,7 +111,8 @@ Hyper-V\Set-VMDvdDrive -VMName $vmName -ControllerNumber $controllerNumber -Cont ` var ps powershell.PowerShellCmd - err := ps.Run(script, vmName, path, strconv.FormatInt(int64(controllerNumber), 10), strconv.FormatInt(int64(controllerLocation), 10)) + err := ps.Run(script, vmName, path, strconv.FormatInt(int64(controllerNumber), 10), + strconv.FormatInt(int64(controllerLocation), 10)) return err } @@ -124,7 +125,8 @@ Hyper-V\Set-VMDvdDrive -VMName $vmName -ControllerNumber $controllerNumber -Cont ` var ps powershell.PowerShellCmd - err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), strconv.FormatInt(int64(controllerLocation), 10)) + err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), + strconv.FormatInt(int64(controllerLocation), 10)) return err } @@ -146,7 +148,8 @@ if (!$vmDvdDrive) {throw 'unable to find dvd drive'} Hyper-V\Set-VMFirmware -VMName $vmName -FirstBootDevice $vmDvdDrive -ErrorAction SilentlyContinue ` var ps powershell.PowerShellCmd - err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), strconv.FormatInt(int64(controllerLocation), 10)) + err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), + strconv.FormatInt(int64(controllerLocation), 10)) return err } } @@ -160,7 +163,8 @@ Hyper-V\Remove-VMDvdDrive -VMName $vmName -ControllerNumber $controllerNumber -C ` var ps powershell.PowerShellCmd - err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), strconv.FormatInt(int64(controllerLocation), 10)) + err := ps.Run(script, vmName, strconv.FormatInt(int64(controllerNumber), 10), + strconv.FormatInt(int64(controllerLocation), 10)) return err } @@ -198,7 +202,9 @@ Hyper-V\Set-VMFloppyDiskDrive -VMName $vmName -Path $null return err } -func CreateVirtualMachine(vmName string, path string, harddrivePath string, ram int64, diskSize int64, diskBlockSize int64, switchName string, generation uint, diffDisks bool, fixedVHD bool) error { +func CreateVirtualMachine(vmName string, path string, harddrivePath string, ram int64, + diskSize int64, diskBlockSize int64, switchName string, generation uint, + diffDisks bool, fixedVHD bool) error { if generation == 2 { var script = ` @@ -218,7 +224,10 @@ if ($harddrivePath){ } ` var ps powershell.PowerShellCmd - if err := ps.Run(script, vmName, path, harddrivePath, strconv.FormatInt(ram, 10), strconv.FormatInt(diskSize, 10), strconv.FormatInt(diskBlockSize, 10), switchName, strconv.FormatInt(int64(generation), 10), strconv.FormatBool(diffDisks)); err != nil { + if err := ps.Run(script, vmName, path, harddrivePath, strconv.FormatInt(ram, 10), + strconv.FormatInt(diskSize, 10), strconv.FormatInt(diskBlockSize, 10), + switchName, strconv.FormatInt(int64(generation), 10), + strconv.FormatBool(diffDisks)); err != nil { return err } @@ -252,7 +261,9 @@ if ($harddrivePath){ } ` var ps powershell.PowerShellCmd - if err := ps.Run(script, vmName, path, harddrivePath, strconv.FormatInt(ram, 10), strconv.FormatInt(diskSize, 10), strconv.FormatInt(diskBlockSize, 10), switchName, strconv.FormatBool(diffDisks), strconv.FormatBool(fixedVHD)); err != nil { + if err := ps.Run(script, vmName, path, harddrivePath, strconv.FormatInt(ram, 10), + strconv.FormatInt(diskSize, 10), strconv.FormatInt(diskBlockSize, 10), + switchName, strconv.FormatBool(diffDisks), strconv.FormatBool(fixedVHD)); err != nil { return err } @@ -354,7 +365,9 @@ Hyper-V\Set-VMNetworkAdapter $vmName -staticmacaddress $mac return err } -func ImportVmxcVirtualMachine(importPath string, vmName string, harddrivePath string, ram int64, switchName string) error { +func ImportVmxcVirtualMachine(importPath string, vmName string, harddrivePath string, + ram int64, switchName string) error { + var script = ` param([string]$importPath, [string]$vmName, [string]$harddrivePath, [long]$memoryStartupBytes, [string]$switchName) @@ -409,9 +422,13 @@ if ($vm) { return err } -func CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, path string, harddrivePath string, ram int64, switchName string) error { +func CloneVirtualMachine(cloneFromVmxcPath string, cloneFromVmName string, + cloneFromSnapshotName string, cloneAllSnapshots bool, vmName string, + path string, harddrivePath string, ram int64, switchName string) error { + if cloneFromVmName != "" { - if err := ExportVmxcVirtualMachine(path, cloneFromVmName, cloneFromSnapshotName, cloneAllSnapshots); err != nil { + if err := ExportVmxcVirtualMachine(path, cloneFromVmName, + cloneFromSnapshotName, cloneAllSnapshots); err != nil { return err } } @@ -1018,7 +1035,8 @@ Hyper-V\Get-VMNetworkAdapter -VMName $vmName | Hyper-V\Connect-VMNetworkAdapter return err } -func AddVirtualMachineHardDiskDrive(vmName string, vhdRoot string, vhdName string, vhdSizeBytes int64, vhdBlockSize int64, controllerType string) error { +func AddVirtualMachineHardDiskDrive(vmName string, vhdRoot string, vhdName string, vhdSizeBytes int64, + vhdBlockSize int64, controllerType string) error { var script = ` param([string]$vmName,[string]$vhdRoot, [string]$vhdName, [string]$vhdSizeInBytes, [string]$vhdBlockSizeInByte, [string]$controllerType)