This is my test case:
------------------------------------------
#!/usr/bin/python
import libvirt
def get_dom():
conn = libvirt.open ("xen");
dom = conn.lookupByName ("debian32fv");
return dom
dom = get_dom()
print "name = %s\n" % dom.name()
------------------------------------------
I modified src/hash.c to add a little bit of debug of the state of
conn->uses in virGetConnect, virFreeConnect, virGetDomain,
virFreeDomain. When running the program I see:
------------------------------------------
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virInitialize ()
libvirt: virConnectOpen (name=xen)
conn(0x6748c0) uses = 1
libvirt: do_open: proceeding with name=xen:///
libvirt: do_open: trying driver 0 (Test) ...
libvirt: do_open: driver 0 returned DECLINED
libvirt: do_open: trying driver 1 (QEMU) ...
libvirt: do_open: driver 1 returned DECLINED
libvirt: do_open: trying driver 2 (Xen) ...
libvirt: do_open: driver 2 returned SUCCESS
libvir: Remote error : Connection refused
libvir: warning : Failed to find the network: Is the daemon running ?
libvirt: virDomainLookupByName (conn=0x6748c0, name=debian32fv)
new domain: conn(0x6748c0) uses = 2
libvirt: virConnectClose (conn=0x6748c0)
conn(0x6748c0) uses = 1
libvirt: virDomainGetName (domain=0x679e20)
name = debian32fv
libvirt: virDomainFree (domain=0x679e20)
free domain: conn(0x6748c0) uses = 0
------------------------------------------
I would say that it's working as intended.
Rich.