On Tue, Dec 04, 2012 at 05:43:12PM +0400, Dmitry Guryanov wrote: > 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@xxxxxxxxxxxxx> > --- > 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 fe034f6..64bf409 100644 > --- a/src/parallels/parallels_driver.c > +++ b/src/parallels/parallels_driver.c > @@ -2011,20 +2011,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)) > @@ -2039,8 +2025,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)")); > @@ -2048,6 +2034,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; ACK, Daniel -- Daniel Veillard | Open Source and Standards, Red Hat veillard@xxxxxxxxxx | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list