[PATCH 2/4] parallels: handle unlimited cpus on containers

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

 



User may set "unlimited" cpus for containers, which means to
take all available cpus on the node.

Signed-off-by: Dmitry Guryanov <dguryanov@xxxxxxxxxxxxx>
---
 src/parallels/parallels_driver.c |   23 ++++++++++++++++++++---
 1 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/parallels/parallels_driver.c b/src/parallels/parallels_driver.c
index 45a3d82..ace75a6 100644
--- a/src/parallels/parallels_driver.c
+++ b/src/parallels/parallels_driver.c
@@ -468,12 +468,29 @@ parallelsLoadDomain(parallelsConnPtr privconn, virJSONValuePtr jobj)
         goto cleanup;
     }
 
-    if (virJSONValueObjectGetNumberUint(jobj3, "cpus", &x) < 0) {
+    if (virJSONValueObjectGetNumberUint(jobj3, "cpus", &x) == 0) {
+        def->vcpus = x;
+        def->maxvcpus = x;
+    } else if ((tmp = virJSONValueObjectGetString(jobj3, "cpus"))) {
+        if (STREQ(tmp, "unlimited")) {
+            virNodeInfo nodeinfo;
+
+            if (nodeGetInfo(NULL, &nodeinfo) < 0) {
+                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                               _("Can't get node info"));
+                goto cleanup;
+            }
+
+            def->vcpus = nodeinfo.cpus;
+            def->maxvcpus = def->vcpus;
+        } else {
+            parallelsParseError();
+            goto cleanup;
+        }
+    } else {
         parallelsParseError();
         goto cleanup;
     }
-    def->vcpus = x;
-    def->maxvcpus = x;
 
     if (!(jobj3 = virJSONValueObjectGet(jobj2, "memory"))) {
         parallelsParseError();
-- 
1.7.1

--
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]