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(a)parallels.com>
---
src/parallels/parallels_driver.c | 18 +++---------------
1 file changed, 3 insertions(+), 15 deletions(-)
diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index 1c58b45..4ab3e1c 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -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;
}
--
1.9.0