Skip to content

Commit 32f2b1a

Browse files
authored
Merge pull request #582 from hashicorp/fix/reattach-cdrom
fix: keep lowest-numbered cd-roms
2 parents 68cecba + 9253246 commit 32f2b1a

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

builder/vsphere/driver/vm_cdrom.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,11 @@ func (vm *VirtualMachineDriver) RemoveNCdroms(n int) error {
100100
return fmt.Errorf("invalid number: n must be between 0 and %d", len(cdroms))
101101
}
102102

103-
cdroms = cdroms[:n]
103+
// Remove up to n CD-ROMs from the end of the list.
104+
// For example, removing from the end preserves lower-numbered device slots, which
105+
// prevents IDE controller errors where a slave device exists without a primary
106+
// (master) device.
107+
cdroms = cdroms[len(cdroms)-n:]
104108
if err = vm.RemoveDevice(true, cdroms...); err != nil {
105109
return err
106110
}

builder/vsphere/driver/vm_mock.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ func (vm *VirtualMachineMock) RemoveNCdroms(nCdroms int) error {
289289
if nCdroms == 0 {
290290
return nil
291291
}
292-
vm.CdromDevicesList = vm.CdromDevicesList[:nCdroms]
292+
vm.CdromDevicesList = vm.CdromDevicesList[len(vm.CdromDevicesList)-nCdroms:]
293293
return vm.RemoveNCdromsErr
294294
}
295295

0 commit comments

Comments
 (0)