From cd64b66ad79ac6f4cb2a54e6214212de9b1558cb Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Sun, 19 Jan 2020 19:26:49 +0100 Subject: [PATCH] Minor fixes to VM cloning --- proxmoxtf/resource_virtual_environment_vm.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 {