diff --git a/libvirt/config.go b/libvirt/config.go index 442aa4ace..a382479e1 100644 --- a/libvirt/config.go +++ b/libvirt/config.go @@ -24,21 +24,15 @@ type Client struct { networkMutex sync.Mutex } -// Client libvirt, generate libvirt client given URI. +// Client libvirt, returns a libvirt client for a config. func (c *Config) Client() (*Client, error) { - u, err := uri.Parse(c.URI) if err != nil { return nil, err } - conn, err := u.DialTransport() - if err != nil { - return nil, fmt.Errorf("failed to dial libvirt: %w", err) - } - log.Printf("[INFO] Set up libvirt transport: %v\n", conn) + l := libvirt.NewWithDialer(u) - l := libvirt.New(conn) if err := l.ConnectToURI(libvirt.ConnectURI(u.RemoteName())); err != nil { return nil, fmt.Errorf("failed to connect: %w", err) } diff --git a/libvirt/uri/connection_uri.go b/libvirt/uri/connection_uri.go index 4eedd1d5a..ffa029618 100644 --- a/libvirt/uri/connection_uri.go +++ b/libvirt/uri/connection_uri.go @@ -61,15 +61,13 @@ func (u *ConnectionURI) driver() string { return strings.Split(u.Scheme, "+")[0] } -// go-libvirt needs a connection to talk RPC to libvirtd. -// -// Returns the connection for the URI transport, and a new -// URI to be used in ConnectToURI (passed to libvirtd). +// Dial implements go-libvirt Dialer interface, which is used +// to retrieve connections to talk via RPC to libvirtd. // // For example, a qemu+ssh:/// uri would return a SSH connection // to localhost, and a new URI to qemu+unix:///system // dials the transport for this connection URI. -func (u *ConnectionURI) DialTransport() (net.Conn, error) { +func (u *ConnectionURI) Dial() (net.Conn, error) { t := u.transport() switch t { case "tcp":