From 1f8c0e8eb2b764ac5c471f4ca425e5e37fa4338d Mon Sep 17 00:00:00 2001 From: Rui Lopes Date: Sat, 14 Oct 2023 14:05:46 +0100 Subject: [PATCH] retry the polling when domain qemu guest agent is not yet ready --- libvirt/domain.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libvirt/domain.go b/libvirt/domain.go index 5e38d0258..1bdb817de 100644 --- a/libvirt/domain.go +++ b/libvirt/domain.go @@ -73,8 +73,12 @@ func domainWaitForLeases(ctx context.Context, virConn *libvirt.Libvirt, domain l } _, err := stateConf.WaitForStateContext(ctx) + if err != nil { + return err + } + log.Print("[DEBUG] wait-for-leases was successful") - return err + return nil } func domainIfaceHasAddress(virConn *libvirt.Libvirt, domain libvirt.Domain, @@ -91,6 +95,10 @@ func domainIfaceHasAddress(virConn *libvirt.Libvirt, domain libvirt.Domain, log.Printf("[DEBUG] waiting for network address for iface=%s\n", mac) ifacesWithAddr, err := domainGetIfacesInfo(virConn, domain, rd) if err != nil { + if strings.Contains(err.Error(), "Guest agent is not responding: QEMU guest agent is not connected") { + log.Print("[DEBUG] could not retrieve interface addresses: domain qemu guest agent is not yet ready") + return false, false, nil + } return false, false, fmt.Errorf("error retrieving interface addresses: %w", err) } log.Printf("[DEBUG] ifaces with addresses: %+v\n", ifacesWithAddr)