[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt-users] undefining and redefining a Domain

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



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 {





     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?





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]