New VM will have default values for all parameters, like
cpu number, we have to change its configuration as provided
by xml definition, given to parallelsDomainDefineXML.
Signed-off-by: Dmitry Guryanov <dguryanov(a)parallels.com>
---
src/parallels/parallels_driver.c | 33 +++++++++++++++++----------------
1 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index 45c2c92..797adc4 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -2008,20 +2008,6 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
if (dupVM == 1) {
olddom = virDomainFindByUUID(&privconn->domains, def->uuid);
- if (parallelsApplyChanges(conn, olddom, def) < 0) {
- virDomainObjUnlock(olddom);
- goto cleanup;
- }
- virDomainObjUnlock(olddom);
-
- if (!(dom = virDomainAssignDef(privconn->caps,
- &privconn->domains, def, false))) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("Can't allocate domobj"));
- goto cleanup;
- }
-
- def = NULL;
} else {
if (STREQ(def->os.type, "hvm")) {
if (parallelsCreateVm(conn, def))
@@ -2036,8 +2022,8 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
}
if (parallelsLoadDomains(privconn, def->name))
goto cleanup;
- dom = virDomainFindByName(&privconn->domains, def->name);
- if (!dom) {
+ olddom = virDomainFindByName(&privconn->domains, def->name);
+ if (!olddom) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Domain for '%s' is not defined after
creation"),
def->name ? def->name : _("(unnamed)"));
@@ -2045,6 +2031,21 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
}
}
+ if (parallelsApplyChanges(conn, olddom, def) < 0) {
+ virDomainObjUnlock(olddom);
+ goto cleanup;
+ }
+ virDomainObjUnlock(olddom);
+
+ if (!(dom = virDomainAssignDef(privconn->caps,
+ &privconn->domains, def, false))) {
+ 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)
ret->id = dom->def->id;
--
1.7.1