mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 19:12:59 +00:00
Additional logic while waiting for QEMU agent to publish the network interfaces
This commit is contained in:
parent
4aa1de656a
commit
cfe0831b1c
@ -139,7 +139,7 @@ func (c *VirtualEnvironmentClient) UpdateVMAsync(nodeName string, vmID int, d *V
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WaitForNetworkInterfacesFromVMAgent waits for a virtual machine's QEMU agent to publish the network interfaces.
|
// WaitForNetworkInterfacesFromVMAgent waits for a virtual machine's QEMU agent to publish the network interfaces.
|
||||||
func (c *VirtualEnvironmentClient) WaitForNetworkInterfacesFromVMAgent(nodeName string, vmID int, timeout int, delay int) (*VirtualEnvironmentVMGetQEMUNetworkInterfacesResponseData, error) {
|
func (c *VirtualEnvironmentClient) WaitForNetworkInterfacesFromVMAgent(nodeName string, vmID int, timeout int, delay int, waitForIP bool) (*VirtualEnvironmentVMGetQEMUNetworkInterfacesResponseData, error) {
|
||||||
timeDelay := int64(delay)
|
timeDelay := int64(delay)
|
||||||
timeMax := float64(timeout)
|
timeMax := float64(timeout)
|
||||||
timeStart := time.Now()
|
timeStart := time.Now()
|
||||||
@ -149,8 +149,21 @@ func (c *VirtualEnvironmentClient) WaitForNetworkInterfacesFromVMAgent(nodeName
|
|||||||
if int64(timeElapsed.Seconds())%timeDelay == 0 {
|
if int64(timeElapsed.Seconds())%timeDelay == 0 {
|
||||||
data, err := c.GetVMNetworkInterfacesFromAgent(nodeName, vmID)
|
data, err := c.GetVMNetworkInterfacesFromAgent(nodeName, vmID)
|
||||||
|
|
||||||
if err == nil && data != nil {
|
if err == nil && data != nil && data.Result != nil {
|
||||||
return data, err
|
missingIP := false
|
||||||
|
|
||||||
|
if waitForIP {
|
||||||
|
for _, nic := range *data.Result {
|
||||||
|
if nic.IPAddresses == nil {
|
||||||
|
missingIP = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !missingIP {
|
||||||
|
return data, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
|
@ -2722,7 +2722,7 @@ func resourceVirtualEnvironmentVMReadNetworkValues(d *schema.ResourceData, m int
|
|||||||
if vmConfig.Agent != nil && vmConfig.Agent.Enabled != nil && *vmConfig.Agent.Enabled {
|
if vmConfig.Agent != nil && vmConfig.Agent.Enabled != nil && *vmConfig.Agent.Enabled {
|
||||||
macAddresses := []interface{}{}
|
macAddresses := []interface{}{}
|
||||||
|
|
||||||
networkInterfaces, err := veClient.WaitForNetworkInterfacesFromVMAgent(nodeName, vmID, 1800, 5)
|
networkInterfaces, err := veClient.WaitForNetworkInterfacesFromVMAgent(nodeName, vmID, 900, 5, true)
|
||||||
|
|
||||||
if err == nil && networkInterfaces.Result != nil {
|
if err == nil && networkInterfaces.Result != nil {
|
||||||
ipv4Addresses = make([]interface{}, len(*networkInterfaces.Result))
|
ipv4Addresses = make([]interface{}, len(*networkInterfaces.Result))
|
||||||
|
Loading…
Reference in New Issue
Block a user