[PATCH v4 12/13] parallels: apply config after VM creation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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;
-- 
1.7.7.6

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]