]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/libvirt.git/commitdiff
parallels: add support of containers to the driver
authorDmitry Guryanov <dguryanov@parallels.com>
Mon, 10 Sep 2012 15:22:42 +0000 (19:22 +0400)
committerDaniel Veillard <veillard@redhat.com>
Thu, 13 Sep 2012 13:19:57 +0000 (21:19 +0800)
This patch makes parallelsLoadDomains to be able to load information
about containers. So functions, which return different information
and change state will work.

parallelsDomainDefineXML will be fixed in separate patch.

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

index 2d6883f78b4c37599622b7eed2f2eb89b58f0e66..0538a1efb9d46b8993ce0fcd7ae887f0426b5235 100644 (file)
@@ -130,6 +130,15 @@ parallelsBuildCapabilities(void)
                                       "parallels", NULL, NULL, 0, NULL) == NULL)
         goto no_memory;
 
+    if ((guest = virCapabilitiesAddGuest(caps, "exe", PARALLELS_DEFAULT_ARCH,
+                                         64, "parallels",
+                                         NULL, 0, NULL)) == NULL)
+        goto no_memory;
+
+    if (virCapabilitiesAddGuestDomain(guest,
+                                      "parallels", NULL, NULL, 0, NULL) == NULL)
+        goto no_memory;
+
     caps->defaultConsoleTargetType = parallelsDefaultConsoleType;
     return caps;
 
@@ -490,8 +499,20 @@ parallelsLoadDomain(parallelsConnPtr privconn, virJSONValuePtr jobj)
     def->mem.max_balloon <<= 10;
     def->mem.cur_balloon = def->mem.max_balloon;
 
-    if (!(def->os.type = strdup("hvm")))
-        goto no_memory;
+    if (!(tmp = virJSONValueObjectGetString(jobj, "Type"))) {
+        parallelsParseError();
+        goto cleanup;
+    }
+
+    if (STREQ(tmp, "CT")) {
+        if (!(def->os.type = strdup("exe")))
+            goto no_memory;
+        if (!(def->os.init = strdup("/sbin/init")))
+            goto no_memory;
+    } else if (STREQ(tmp, "VM")) {
+        if (!(def->os.type = strdup("hvm")))
+            goto no_memory;
+    }
 
     if (!(def->os.arch = strdup(PARALLELS_DEFAULT_ARCH)))
         goto no_memory;
@@ -577,7 +598,7 @@ parallelsLoadDomains(parallelsConnPtr privconn, const char *domain_name)
     int ret = -1;
 
     jobj = parallelsParseOutput(PRLCTL, "list", "-j", "-a", "-i", "-H",
-                                "--vmtype", "vm", domain_name, NULL);
+                                "--vmtype", "all", domain_name, NULL);
     if (!jobj) {
         parallelsParseError();
         goto cleanup;