diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 090ea243ba..0ca59717b1 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -894,8 +894,31 @@ hypervDomainGetXMLDesc(virDomainPtr domain, unsigned int flags) if (VIR_STRDUP(def->name, computerSystem->data.common->ElementName) < 0) goto cleanup; - if (VIR_STRDUP(def->description, virtualSystemSettingData->data.common->Notes) < 0) - goto cleanup; + if (priv->wmiVersion == HYPERV_WMI_VERSION_V1) { + if (VIR_STRDUP(def->description, + virtualSystemSettingData->data.v1->Notes) < 0) + goto cleanup; + } else if (priv->wmiVersion == HYPERV_WMI_VERSION_V2 && + virtualSystemSettingData->data.v2->Notes.data != NULL) { + char **notes = (char **)virtualSystemSettingData->data.v2->Notes.data; + virBuffer buf = VIR_BUFFER_INITIALIZER; + size_t i = 0; + + /* in practice Notes has 1 element */ + for (i = 0; i < virtualSystemSettingData->data.v2->Notes.count; i++) { + /* but if there's more than 1, separate by double new line */ + if (virBufferUse(&buf) > 0) + virBufferAddLit(&buf, "\n\n"); + + virBufferAdd(&buf, *notes, -1); + notes++; + } + + if (virBufferCheckError(&buf)) + goto cleanup; + + def->description = virBufferContentAndReset(&buf); + } virDomainDefSetMemoryTotal(def, memorySettingData->data.common->Limit * 1024); /* megabyte to kilobyte */ def->mem.cur_balloon = memorySettingData->data.common->VirtualQuantity * 1024; /* megabyte to kilobyte */ diff --git a/src/hyperv/hyperv_wmi_generator.py b/src/hyperv/hyperv_wmi_generator.py index c15d97adc5..9aee0b9bf3 100755 --- a/src/hyperv/hyperv_wmi_generator.py +++ b/src/hyperv/hyperv_wmi_generator.py @@ -251,7 +251,7 @@ class WmiClass: for cls in self.versions: for prop in cls.properties: # consdered same if matches by name AND type - key = "%s_%s" % (prop.name, prop.type) + key = "%s_%s_%s" % (prop.name, prop.type, prop.is_array) if key in property_info: property_info[key][1] += 1