]> xenbits.xensource.com Git - libvirt.git/commitdiff
parallels: refactor parallelsDomainDefineXML
authorDmitry Guryanov <dguryanov@parallels.com>
Mon, 1 Dec 2014 15:38:54 +0000 (18:38 +0300)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 9 Dec 2014 18:42:04 +0000 (19:42 +0100)
First, we don't need to call prlsdkApplyConfig after
creating new VM or containers, because it's done in
functions prlsdkCreateVm and prlsdkCreateCt.

No need to check, if domain exists in the list after
prlsdkAddDomain.

Also organize code, so that we can call virObjectUnlock
in one place.

Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com>
src/parallels/parallels_driver.c
src/parallels/parallels_sdk.c
src/parallels/parallels_sdk.h

index 582ffdbe57ca7a200d3f1302c10026becd730288..955516ac7f517cb9533fa9046768c60059798c99 100644 (file)
@@ -661,10 +661,9 @@ static virDomainPtr
 parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
 {
     parallelsConnPtr privconn = conn->privateData;
-    virDomainPtr ret = NULL;
+    virDomainPtr retdom = NULL;
     virDomainDefPtr def;
     virDomainObjPtr olddom = NULL;
-    virDomainObjPtr dom = NULL;
 
     parallelsDriverLock(privconn);
     if ((def = virDomainDefParseString(xml, privconn->caps, privconn->xmlopt,
@@ -689,34 +688,28 @@ parallelsDomainDefineXML(virConnectPtr conn, const char *xml)
                            _("Unsupported OS type: %s"), def->os.type);
             goto cleanup;
         }
-        dom = prlsdkAddDomain(privconn, def->uuid);
-        if (dom)
-            virObjectUnlock(dom);
-        else
+
+        olddom = prlsdkAddDomain(privconn, def->uuid);
+        if (!olddom)
             goto cleanup;
-        olddom = virDomainObjListFindByName(privconn->domains, def->name);
-        if (!olddom) {
-            virReportError(VIR_ERR_INTERNAL_ERROR,
-                           _("Domain for '%s' is not defined after creation"),
-                           def->name ? def->name : _("(unnamed)"));
+    } else {
+        if (prlsdkApplyConfig(conn, olddom, def))
             goto cleanup;
-        }
-    }
 
-    if (prlsdkApplyConfig(conn, olddom, def) < 0) {
-        virObjectUnlock(olddom);
-        goto cleanup;
+        if (prlsdkUpdateDomain(privconn, olddom))
+            goto cleanup;
     }
-    virObjectUnlock(olddom);
 
-    ret = virGetDomain(conn, def->name, def->uuid);
-    if (ret)
-        ret->id = def->id;
+    retdom = virGetDomain(conn, def->name, def->uuid);
+    if (retdom)
+        retdom->id = def->id;
 
  cleanup:
+    if (olddom)
+        virObjectUnlock(olddom);
     virDomainDefFree(def);
     parallelsDriverUnlock(privconn);
-    return ret;
+    return retdom;
 }
 
 static int
index dc79fcab6de3a329d73c13e29195d08398299152..fbecd63fc77e35503fb055e594c9da22ebdc62fd 100644 (file)
@@ -1258,7 +1258,7 @@ prlsdkAddDomain(parallelsConnPtr privconn, const unsigned char *uuid)
     return dom;
 }
 
-static int
+int
 prlsdkUpdateDomain(parallelsConnPtr privconn, virDomainObjPtr dom)
 {
     PRL_HANDLE job;
index b654c2a57e4eb0b20330a49290c3a7baf0f3d59a..1fdef1ad05f3f3fc6c27cf03912f52274509ea5c 100644 (file)
@@ -32,6 +32,7 @@ int
 prlsdkLoadDomains(parallelsConnPtr privconn);
 virDomainObjPtr
 prlsdkAddDomain(parallelsConnPtr privconn, const unsigned char *uuid);
+int prlsdkUpdateDomain(parallelsConnPtr privconn, virDomainObjPtr dom);
 int prlsdkSubscribeToPCSEvents(parallelsConnPtr privconn);
 void prlsdkUnsubscribeFromPCSEvents(parallelsConnPtr privconn);
 int prlsdkStart(parallelsConnPtr privconn, PRL_HANDLE sdkdom);