Skip to content

Commit b9e4fb7

Browse files
SJFCSdmacvicar
andauthored
fix(domain): restore error handling for network operations (#1144)
Fixes: #1091 Co-authored-by: Duncan Mac-Vicar P. <duncan@mac-vicar.eu>
1 parent e8ebf5e commit b9e4fb7

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

libvirt/domain.go

+10-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"strconv"
1212
"strings"
1313

14-
"github.com/davecgh/go-spew/spew"
1514
libvirt "github.com/digitalocean/go-libvirt"
1615
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry"
1716
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -194,10 +193,18 @@ func domainGetIfacesInfo(virConn *libvirt.Libvirt, domain libvirt.Domain, rd *sc
194193
var interfaces []libvirt.DomainInterface
195194
interfaces, err = virConn.DomainInterfaceAddresses(domain, addrsrc, 0)
196195
if err != nil {
196+
var virErr libvirt.Error
197+
if errors.As(err, &virErr) {
198+
// Agent can be unresponsive if being installed/setup
199+
if addrsrc == uint32(libvirt.DomainInterfaceAddressesSrcLease) && virErr.Code != uint32(libvirt.ErrOperationInvalid) ||
200+
addrsrc == uint32(libvirt.DomainInterfaceAddressesSrcAgent) && virErr.Code != uint32(libvirt.ErrAgentUnresponsive) {
201+
return interfaces, fmt.Errorf("error retrieving interface addresses: %w", err)
202+
}
203+
// If it is ErrAgentUnresponsive, continue trying
204+
return interfaces, nil
205+
}
197206
return interfaces, fmt.Errorf("error retrieving interface addresses: %w", err)
198207
}
199-
log.Printf("[DEBUG] Interfaces info obtained with libvirt API:\n%s\n", spew.Sdump(interfaces))
200-
201208
return interfaces, nil
202209
}
203210

0 commit comments

Comments
 (0)