diff --git a/proxmoxtf/resource_virtual_environment_vm.go b/proxmoxtf/resource_virtual_environment_vm.go index 96c0cdf8..f3dc0d85 100644 --- a/proxmoxtf/resource_virtual_environment_vm.go +++ b/proxmoxtf/resource_virtual_environment_vm.go @@ -1038,9 +1038,10 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface updateBody := &proxmox.VirtualEnvironmentVMUpdateRequestBody{ AudioDevices: audioDevices, - Description: &description, } + delete := []string{} + if acpi != dvResourceVirtualEnvironmentVMACPI { updateBody.ACPI = &acpi } @@ -1172,6 +1173,16 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface return err } + for i := 0; i < len(updateBody.NetworkDevices); i++ { + if !updateBody.NetworkDevices[i].Enabled { + delete = append(delete, fmt.Sprintf("net%d", i)) + } + } + + for i := len(updateBody.NetworkDevices); i < maxNetworkDevices; i++ { + delete = append(delete, fmt.Sprintf("net%d", i)) + } + updateBody.NetworkDevices = networkDeviceObjects } @@ -1189,6 +1200,10 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface return err } + for i := len(updateBody.SerialDevices); i < maxSerialDevices; i++ { + delete = append(delete, fmt.Sprintf("serial%d", i)) + } + updateBody.SerialDevices = serialDevices } @@ -1214,6 +1229,8 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface updateBody.VGADevice = vgaDevice } + updateBody.Delete = delete + err = veClient.UpdateVM(nodeName, vmID, updateBody) if err != nil {