mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 15:15:25 +00:00
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:
parent
6d02d2774d
commit
68a81f77d0
@ -2303,7 +2303,7 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
|
||||
parallelsConnPtr privconn = conn->privateData;
|
||||
virDomainPtr ret = NULL;
|
||||
virDomainDefPtr def;
|
||||
virDomainObjPtr dom = NULL, olddom = NULL;
|
||||
virDomainObjPtr olddom = NULL;
|
||||
|
||||
parallelsDriverLock(privconn);
|
||||
if ((def = virDomainDefParseString(xml, privconn->caps, privconn->xmlopt,
|
||||
@ -2345,24 +2345,12 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
|
||||
}
|
||||
virObjectUnlock(olddom);
|
||||
|
||||
if (!(dom = virDomainObjListAdd(privconn->domains, def,
|
||||
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);
|
||||
ret = virGetDomain(conn, def->name, def->uuid);
|
||||
if (ret)
|
||||
ret->id = dom->def->id;
|
||||
ret->id = def->id;
|
||||
|
||||
cleanup:
|
||||
virDomainDefFree(def);
|
||||
if (dom)
|
||||
virObjectUnlock(dom);
|
||||
parallelsDriverUnlock(privconn);
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user