parallels: don't add domain to the list twice

There is a problem with function parallelsDomainDefineXML. If we
are defining a new domain, then we need to do 2 things: aclually
create a VM in PCS and add new domain to the cached list of domains
_parallelsConn.domains.

This is done in the function parallelsLoadDomains. So call to
virDomainObjListAdd will return a error, because a domain
with the same name and id will already be in the list.

Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com>
This commit is contained in:
Dmitry Guryanov 2014-04-23 18:35:02 +04:00 committed by Daniel P. Berrange
parent 6d02d2774d
commit 68a81f77d0

View File

@ -2303,7 +2303,7 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
parallelsConnPtr privconn = conn->privateData; parallelsConnPtr privconn = conn->privateData;
virDomainPtr ret = NULL; virDomainPtr ret = NULL;
virDomainDefPtr def; virDomainDefPtr def;
virDomainObjPtr dom = NULL, olddom = NULL; virDomainObjPtr olddom = NULL;
parallelsDriverLock(privconn); parallelsDriverLock(privconn);
if ((def = virDomainDefParseString(xml, privconn->caps, privconn->xmlopt, if ((def = virDomainDefParseString(xml, privconn->caps, privconn->xmlopt,
@ -2345,24 +2345,12 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
} }
virObjectUnlock(olddom); virObjectUnlock(olddom);
if (!(dom = virDomainObjListAdd(privconn->domains, def, ret = virGetDomain(conn, def->name, def->uuid);
privconn->xmlopt,
0, NULL))) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Can't allocate domobj"));
goto cleanup;
}
def = NULL;
ret = virGetDomain(conn, dom->def->name, dom->def->uuid);
if (ret) if (ret)
ret->id = dom->def->id; ret->id = def->id;
cleanup: cleanup:
virDomainDefFree(def); virDomainDefFree(def);
if (dom)
virObjectUnlock(dom);
parallelsDriverUnlock(privconn); parallelsDriverUnlock(privconn);
return ret; return ret;
} }