[libvirt] [PATCH 4/5] Parallels: Add domainCreateWithFlags() function.

Alexander Burluka aburluka at parallels.com
Wed Aug 20 15:33:08 UTC 2014


domainCreateWithFlags function is used by OpenStack Nova to boot
instance.
---
 src/parallels/parallels_driver.c | 50 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)

diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index c19aa96..cd1baa0 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -2425,6 +2425,55 @@ parallelsNodeGetCPUMap(virConnectPtr conn ATTRIBUTE_UNUSED,
 }
 
 
+static int
+parallelsDomainCreateWithFlags(virDomainPtr domain, unsigned int flags)
+{
+    parallelsConnPtr privconn = domain->conn->privateData;
+    virDomainObjPtr privdom = NULL;
+    int ret = -1;
+
+    virCheckFlags(VIR_DOMAIN_START_PAUSED |
+                  VIR_DOMAIN_START_AUTODESTROY |
+                  VIR_DOMAIN_START_BYPASS_CACHE |
+                  VIR_DOMAIN_START_FORCE_BOOT, -1);
+
+    parallelsDriverLock(privconn);
+    privdom = virDomainObjListFindByUUID(privconn->domains, domain->uuid);
+    parallelsDriverUnlock(privconn);
+
+    if (!privdom) {
+        virReportError(VIR_ERR_NO_DOMAIN, "%s",
+                       _("no domain with matching uuid"));
+        ret = -1;
+        goto cleanup;
+    }
+
+    if (virDomainObjIsActive(privdom)) {
+        virReportError(VIR_ERR_OPERATION_INVALID,
+                       "%s", _("domain is already running"));
+        ret = -1;
+        goto cleanup;
+    }
+
+    ret = parallelsStart(privdom);
+    if (ret == 0) {
+        virDomainObjSetState(privdom, VIR_DOMAIN_RUNNING,
+                             VIR_DOMAIN_RUNNING_BOOTED);
+    } else {
+        virDomainObjSetState(privdom, VIR_DOMAIN_CRASHED,
+                             VIR_DOMAIN_CRASHED_UNKNOWN);
+    }
+
+    ret = 0;
+
+ cleanup:
+    if (privdom)
+        virObjectUnlock(privdom);
+
+    return ret;
+}
+
+
 static virDriver parallelsDriver = {
     .no = VIR_DRV_PARALLELS,
     .name = "Parallels",
@@ -2456,6 +2505,7 @@ static virDriver parallelsDriver = {
     .domainShutdown = parallelsDomainShutdown, /* 0.10.0 */
     .domainCreate = parallelsDomainCreate,    /* 0.10.0 */
     .domainDefineXML = parallelsDomainDefineXML,      /* 0.10.0 */
+    .domainCreateWithFlags = parallelsDomainCreateWithFlags, /* 1.2.7 */
     .nodeGetCPUMap = parallelsNodeGetCPUMap, /* 1.2.6 */
     .connectIsEncrypted = parallelsConnectIsEncrypted, /* 1.2.5 */
     .connectIsSecure = parallelsConnectIsSecure, /* 1.2.5 */
-- 
1.9.1




More information about the libvir-list mailing list