
On Tue, Jan 12, 2010 at 04:06:32PM -0800, su disheng wrote:
Hi, In the following libvirt API calling sequence, I always get an error "no domain with matching uuid" Connect _conn = new Connect("qemu:///system", false); _conn.domainDefineXML(kvm_guest_xml); Domain dm = _conn.domainLookupByName(kvm_guest_name); dm.create();
/* stop, undefine, and re-start the vm*/ dm.shutdown(); dm.undefine(); dm.domainDefineXML(kvm_guest_xml); /****A****/ Domain dm = _conn.domainLookupByName(kvm_guest_name); dm.create() /********Error!!!!**/
if I close the connection, and re-connect qemu at the end of /****A****/, then everything is OK.
I think the first 'dm' object you create is not being freed / garbage collected. This means the underlying libvirt virDomainPtr object is not released. And so when you then _conn.domainLookupByName() after '****A****' you are still getting an handle to the old object and thus the stale UUID.
From the log, seems that uuid is not updated immediately, for this connection, the uuid is in the stale state? I am using libvirt 0.6.3, if it's a bug, does it fixed in the latest code? or Have I need to close the connection for each vm shutdown/re-define?
You should not need to close the connection, provided you ensure all the 'Domain' objects are freed/garbage collected Alternatively, if you wish to re-use the same name,then you could try auto-generating the UUID yourself, so you use the same UUID when defining the domain for the second time Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|