[libvirt-users] undefining and redefining a Domain

Roberto Attias (rattias) rattias at cisco.com
Fri Oct 1 15:39:57 UTC 2010


<resending as I don't think I was in the mailing list yet when I sent
first time... apologies if you receive this twice>

 

Hello,

I'm facing some strange behavior, and I hope you can provide a
clarification. 

Consider the following code:

 

     virDomainPtr dom = virDomainLookupByName(virt, domain_name);

     if (dom) {

           printf("domain already defined...\n");

           if (virDomainUndefine(dom))

                printf("...unable to undefine!!!\n");

           else {

                printf("...undefined.");

                free(dom);

           }

     }

     dom = virDomainDefineXML(virt, SOME_XML);

     if (dom != NULL) {

           const char *name = virDomainGetName(dom);

           printf("NAME IS NOW: %s\n", name);

     } else

           printf("dom is NULL!\n");

 

When executed the first time, the code correctly defines the domain, and
prints:

 

defining domain test2-vm

libvir: QEMU error : Domain not found: no domain with matching name
'test2-vm'

NAME IS NOW: test2-vm

 

If executed a second time with  the same SOME_XML when the domain is
already defined, it prints:

 

defining domain test2-vm

domain already defined...

libvir: Domain error : invalid domain pointer in virDomainGetName

undefining......undefined.NAME IS NOW: (null)

 

Not only the name is null, but the domain can't be started. What is the
correct way to undefined programmatically a domain that is already
defined? Why is the second virDomainDefineXML() returining a pointer (as
opposed to null), but the pointed object seem to be invalid?

 

Thanks, 

                 Roberto

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20101001/970ecbe0/attachment.htm>


More information about the libvirt-users mailing list