]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hyperv: make Msvm_ComputerSystem WQL queries locale agnostic
authorMatt Coleman <mcoleman@datto.com>
Mon, 5 Oct 2020 16:20:06 +0000 (12:20 -0400)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Oct 2020 07:19:19 +0000 (09:19 +0200)
There are two specific WQL queries we're using to get either a list of
virtual machines or the hypervisor host itself from Msvm_ComputerSystem.
Those queries rely on filtering results based on the "Description"
field. Since the "Description" field is locale sensitive, the queries
will fail if the Windows host is using a language pack. While the WSMAN
spec allows the client to set the requested locale (and it is supported
since openwsman 2.6.x), the Windows WinRM service does not respect this
setting: it returns non-English strings despite the WSMAN request
properly setting the locale to 'en-US'. Therefore, this patch changes
the WQL query to make use of the "__SERVER" field to stop relying on
English strings in queries and side step the issue.

Co-authored-by: Dawid Zamirski <dzamirski@datto.com>
Signed-off-by: Matt Coleman <matt@datto.com>
Reviewed-by: Neal Gompa <ngompa13@gmail.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/hyperv/hyperv_wmi_classes.h

index a19b6a656df869f4ab85cf967a851388e8f3e2fe..7465684d6e22298d89bf1507ff9b7cf576327005 100644 (file)
  */
 
 #define MSVM_COMPUTERSYSTEM_WQL_VIRTUAL \
-    "Description = \"Microsoft Virtual Machine\" "
+    "Name != __SERVER "
 
 #define MSVM_COMPUTERSYSTEM_WQL_PHYSICAL \
-    "Description = \"Microsoft Hosting Computer System\" "
+    "Name = __SERVER "
 
 #define MSVM_COMPUTERSYSTEM_WQL_ACTIVE \
     "(EnabledState != 0 and EnabledState != 3 and EnabledState != 32769) "