mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 19:32:19 +00:00
VI objects support inheritance with subtype polymorphism. For example the FileInfo object type is extended by FloppyImageFileInfo, FolderFileInfo etc. Then SearchDatastore_Task returns an array of FileInfo objects and depending on the represented file the FileInfo is actually a FolderFileInfo or FloppyImageFileInfo etc. The actual type information is stored as XML attribute that allows clients such as libvirt to distinguish between the actual types. esxVI_GetActualObjectType is used to extract the actual type. I assumed that this mechanism would be used for all VI object types that have subtypes. But this is not the case. It seems only to be used for types that are actually used as generic base type such as FileInfo. But it is not used for types that got extended later such as ElementDescription that was extended by ExtendedElementDescription (added in vSphere API 4.0) or that are not meant to be used with subtype polymorphism. This breaks the deserialization of types that contain ElementDescription properties such as PerfCounterInfo or ChoiceOption, because the code expects an ElementDescription object to have an XML attribute named type that is not present, since ExtendedElementDescription was added to the esx_vi_generator.input in commit 60f0f55ee4686fecbffc5fb32f90863427d02a14. This in turn break virtual machine question handling and auto answering. Fix this by using the base type if no XML type attribute is present.
LibVirt : simple API for virtualization Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). It is free software available under the GNU Lesser General Public License. Virtualization of the Linux Operating System means the ability to run multiple instances of Operating Systems concurrently on a single hardware system where the basic resources are driven by a Linux instance. The library aim at providing long term stable C API initially for the Xen paravirtualization but should be able to integrate other virtualization mechanisms if needed. Daniel Veillard <veillard@redhat.com>
Description
Libvirt provides a portable, long term stable C API for managing the
virtualization technologies provided by many operating systems. It
includes support for QEMU, KVM, Xen, LXC, bhyve, Virtuozzo, VMware
vCenter and ESX, VMware Desktop, Hyper-V, VirtualBox and the POWER
Hypervisor.
Languages
C
94.8%
Python
2%
Meson
0.9%
Shell
0.8%
Dockerfile
0.6%
Other
0.8%