[libvirt] [PATCH 2/2] vz: fix config input device check

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Mon Mar 28 12:56:08 UTC 2016


We don't have input devices in SDK thus for define/dumpxml
operations to be consistent we need to:

1. on dumpxml: infer input devices from other parts of config.
It is already done in prlsdkLoadDomain.

2. on define: check that input devices are the same that
will be infer back on dumpxml operation.

The second part should be fixed.

Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy at virtuozzo.com>
---
 src/vz/vz_sdk.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 8691887..5996caf 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -1857,6 +1857,8 @@ prlsdkCheckUnsupportedParams(PRL_HANDLE sdkdom, virDomainDefPtr def)
     PRL_VM_TYPE vmType;
     PRL_RESULT pret;
     virDomainNumatuneMemMode memMode;
+    int bus = IS_CT(def) ? VIR_DOMAIN_INPUT_BUS_PARALLELS :
+                           VIR_DOMAIN_INPUT_BUS_PS2;
 
     if (def->title) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -2052,17 +2054,24 @@ prlsdkCheckUnsupportedParams(PRL_HANDLE sdkdom, virDomainDefPtr def)
         return -1;
     }
 
-    /* there may be one auto-input */
-    if (def->ninputs != 0 &&
-        (def->ninputs != 2 &&
-         def->inputs[0]->type != VIR_DOMAIN_INPUT_TYPE_MOUSE &&
-         def->inputs[0]->bus != VIR_DOMAIN_INPUT_BUS_PS2 &&
-         def->inputs[1]->type != VIR_DOMAIN_INPUT_TYPE_KBD &&
-         def->inputs[1]->bus != VIR_DOMAIN_INPUT_BUS_PS2)) {
+    /* check we have only default input devices */
+    if (def->ngraphics > 0) {
+        if (def->ninputs != 2 ||
+            def->inputs[0]->bus != bus ||
+            def->inputs[1]->bus != bus ||
+            !((def->inputs[0]->type == VIR_DOMAIN_INPUT_TYPE_MOUSE &&
+               def->inputs[1]->type == VIR_DOMAIN_INPUT_TYPE_KBD) ||
+              (def->inputs[0]->type == VIR_DOMAIN_INPUT_TYPE_KBD &&
+               def->inputs[1]->type == VIR_DOMAIN_INPUT_TYPE_MOUSE))
+           ) {
 
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                           _("unsupported input device configuration"));
+            return -1;
+        }
+    } else if (def->ninputs != 0) {
         virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                       _("changing input devices parameters is not supported "
-                         "by vz driver"));
+                       _("input devices without vnc are not supported"));
         return -1;
     }
 
-- 
1.8.3.1




More information about the libvir-list mailing list