0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-12 08:45:01 +00:00

fix: disk resizing issue

This commit is contained in:
Dan Petersen 2021-02-13 08:21:37 +01:00
parent fc655f236e
commit 5871fff200
2 changed files with 21 additions and 4 deletions

View File

@ -3,6 +3,7 @@
BUG FIXES:
* resource/virtual_environment_vm: Fix `disk.file_id` diff issue
* resource/virtual_environment_vm: Fix disk resizing issue
OTHER:

View File

@ -1413,6 +1413,7 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
if currentDiskInfo == nil {
diskUpdateBody := &proxmox.VirtualEnvironmentVMUpdateRequestBody{}
prefix := diskDigitPrefix(diskInterface)
switch prefix {
case "virtio":
if diskUpdateBody.VirtualIODevices == nil {
@ -1432,6 +1433,7 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
}
err = veClient.UpdateVM(nodeName, vmID, diskUpdateBody)
if err != nil {
return err
}
@ -1450,6 +1452,7 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
}
deleteOriginalDisk := proxmox.CustomBool(true)
diskMoveBody := &proxmox.VirtualEnvironmentVMMoveDiskRequestBody{
DeleteOriginalDisk: &deleteOriginalDisk,
Disk: diskInterface,
@ -1461,7 +1464,18 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
Size: fmt.Sprintf("%dG", diskSize),
}
moveDisk := false
if dataStoreID != "" {
moveDisk = true
if allDiskInfo[diskInterface] != nil {
fileIDParts := strings.Split(allDiskInfo[diskInterface].FileVolume, ":")
moveDisk = dataStoreID != fileIDParts[0]
}
}
if moveDisk {
moveDiskTimeout := d.Get(mkResourceVirtualEnvironmentVMTimeoutMoveDisk).(int)
err = veClient.MoveVMDisk(nodeName, vmID, diskMoveBody, moveDiskTimeout)
@ -1470,10 +1484,12 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface
}
}
err = veClient.ResizeVMDisk(nodeName, vmID, diskResizeBody)
if diskSize > compareNumber {
err = veClient.ResizeVMDisk(nodeName, vmID, diskResizeBody)
if err != nil {
return err
if err != nil {
return err
}
}
}
@ -3649,7 +3665,7 @@ func resourceVirtualEnvironmentVMUpdateDiskLocationAndSize(d *schema.ResourceDat
return fmt.Errorf("Deletion of disks not supported. Please delete disk by hand. Old Interface was %s", *oldDisk.Interface)
}
if oldDisk.ID != diskNewEntries[prefix][oldKey].ID {
if *oldDisk.ID != *diskNewEntries[prefix][oldKey].ID {
deleteOriginalDisk := proxmox.CustomBool(true)
diskMoveBodies = append(diskMoveBodies, &proxmox.VirtualEnvironmentVMMoveDiskRequestBody{