From bec026361d115ddbb6c44880aa9e7bd741b93191 Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Tue, 21 Jan 2020 20:48:00 +0100 Subject: [PATCH] Wait for VM creation while waiting for VM configuration lock to be released --- proxmox/virtual_environment_vm.go | 10 +++++----- proxmoxtf/resource_virtual_environment_vm.go | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/proxmox/virtual_environment_vm.go b/proxmox/virtual_environment_vm.go index cd1daaa4..e7606059 100644 --- a/proxmox/virtual_environment_vm.go +++ b/proxmox/virtual_environment_vm.go @@ -191,7 +191,7 @@ func (c *VirtualEnvironmentClient) WaitForNoNetworkInterfacesFromVMAgent(nodeNam } // WaitForVMConfigUnlock waits for a virtual machine configuration to become unlocked. -func (c *VirtualEnvironmentClient) WaitForVMConfigUnlock(nodeName string, vmID int, timeout int, delay int) error { +func (c *VirtualEnvironmentClient) WaitForVMConfigUnlock(nodeName string, vmID int, timeout int, delay int, ignoreErrorResponse bool) error { timeDelay := int64(delay) timeMax := float64(timeout) timeStart := time.Now() @@ -202,10 +202,10 @@ func (c *VirtualEnvironmentClient) WaitForVMConfigUnlock(nodeName string, vmID i data, err := c.GetVMStatus(nodeName, vmID) if err != nil { - return err - } - - if data.Lock == nil || *data.Lock == "" { + if !ignoreErrorResponse { + return err + } + } else if data.Lock == nil || *data.Lock == "" { return nil } diff --git a/proxmoxtf/resource_virtual_environment_vm.go b/proxmoxtf/resource_virtual_environment_vm.go index f3dc0d85..3fae0e3e 100644 --- a/proxmoxtf/resource_virtual_environment_vm.go +++ b/proxmoxtf/resource_virtual_environment_vm.go @@ -1007,7 +1007,8 @@ func resourceVirtualEnvironmentVMCreateClone(d *schema.ResourceData, m interface d.SetId(strconv.Itoa(vmID)) - err = veClient.WaitForVMConfigUnlock(nodeName, vmID, 300, 5) + // Wait for the virtual machine to be created and its configuration lock to be released. + err = veClient.WaitForVMConfigUnlock(nodeName, vmID, 600, 5, true) if err != nil { return err