]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hyperv: implement connectGetMaxVcpus
authorMatt Coleman <mcoleman@datto.com>
Mon, 5 Oct 2020 16:20:11 +0000 (12:20 -0400)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Oct 2020 07:26:49 +0000 (09:26 +0200)
Co-authored-by: Sri Ramanujam <sramanujam@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_driver.c

index 93e08c54c012bcdd2c5d261fd5f8078b671887f8..bbe892fd627784f24b5e42660a5be173a52ad2fc 100644 (file)
@@ -553,6 +553,39 @@ hypervConnectGetCapabilities(virConnectPtr conn)
 
 
 
+static int
+hypervConnectGetMaxVcpus(virConnectPtr conn, const char *type G_GNUC_UNUSED)
+{
+    int result = -1;
+    hypervPrivate *priv = conn->privateData;
+    g_auto(virBuffer) query = VIR_BUFFER_INITIALIZER;
+    Msvm_ProcessorSettingData *processorSettingData = NULL;
+
+    /* Get max processors definition */
+    virBufferAddLit(&query,
+                    MSVM_PROCESSORSETTINGDATA_WQL_SELECT
+                    "WHERE InstanceID LIKE 'Microsoft:Definition%Maximum'");
+
+    if (hypervGetWmiClass(Msvm_ProcessorSettingData, &processorSettingData) < 0)
+        goto cleanup;
+
+    if (!processorSettingData) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       _("Could not get maximum definition of Msvm_ProcessorSettingData for host %s"),
+                       conn->uri->server);
+        goto cleanup;
+    }
+
+    result = processorSettingData->data.common->VirtualQuantity;
+
+ cleanup:
+    hypervFreeObject(priv, (hypervObject *) processorSettingData);
+
+    return result;
+}
+
+
+
 static int
 hypervNodeGetInfo(virConnectPtr conn, virNodeInfoPtr info)
 {
@@ -1689,6 +1722,7 @@ static virHypervisorDriver hypervHypervisorDriver = {
     .connectClose = hypervConnectClose, /* 0.9.5 */
     .connectGetType = hypervConnectGetType, /* 0.9.5 */
     .connectGetHostname = hypervConnectGetHostname, /* 0.9.5 */
+    .connectGetMaxVcpus = hypervConnectGetMaxVcpus, /* 6.9.0 */
     .nodeGetInfo = hypervNodeGetInfo, /* 0.9.5 */
     .connectGetCapabilities = hypervConnectGetCapabilities, /* 6.9.0 */
     .connectListDomains = hypervConnectListDomains, /* 0.9.5 */