[libvirt] Proposition for the implementation of new features for Hyper-V driver

Adrien Kantcheff Adrien.Kantcheff at bull.net
Thu Aug 28 12:38:17 UTC 2014


Dear libvirt developers,

During my final student training in the French company Bull, with a previous student (Simon RASTELLO), we developed new features for Hyper-V driver.  For a project called OpenCloudware, our work was to bring new functionalities using libvirt API in order to do basic actions on virtual machines hosted on Hyper-V.

You may be interested in pushing our developments in the official release.

The libvirt driver already provides functions to enumerate and get WMI classes by sending WQL requests to WMI provider and also to call WMI class methods. For that last kind of communication, a method requires input parameters. There are two kinds of argument: basic (integer, string...) and complex (objects, end point references, embedded instances). Actually, just the first argument passing mode is available with libvirt driver. But the second one is very useful because there is many WMI methods with complex types parameters, and for the moment it constraints developers to call WMI methods only with basic types parameters. So in order to expand WMI methods calls, we have implemented the second argument passing mode.

Thanks to this new argument passing mode, we are available  to set new functionalities.

Our contributions include:


*         hyperv_driver.c

o   hypervDomainDefineXML

o   hypervDomainCreateXML

o   hypervDomainUndefine

o   hypervDomainUndefineFlags

o   hypervDomainShutdown

o   hypervDomainShutdownFlags

o   hypervDomainGetVcpus

o   hypervDomainGetVcpusFlags

o   hypervConnectGetMaxVcpus

o   hypervDomainGetMaxVcpus

o   hypervDomainSetVcpus

o   hypervDomainSetVcpusFlags

o   hypervDomainSetMemory

o   hypervDomainSetMemoryFlags

o   hypervDomainSetMaxMemory

o   hypervNodeGetFreeMemory

o   hypervDomainAttachDevice

o   hypervDomainAttachDeviceFlags

o   hypervDomainGetSchedulerParameters

o   hypervDomainGetSchedulerParametersFlags

o   hypervDomainGetSchedulerType

o   hypervConnectGetCapabilities

o   hypervConnectGetVersion

o   hypervDomainSetAutostart

o   hypervDomainGetAutostart


*         hyperv_network.c

o   hypervConnectNumOfNetworks

o   hypervConnectListNetworks

o   hypervConnectNumOfDefinedNetworks

o   hypervConnectListDefinedNetworks

o   hypervNetworkLookupByName

o   hypervNetworkGetXMLDesc


*         hyperv_storage_driver.c

o   hypervConnectNumOfStoragePools (stub)

o   hypervConnectListStoragePools (stub)

o   hypervConnectNumOfDefinedStoragePools (stub)

o   hypervStoragePoolLookupByName (stub)

o   hypervStorageVolLookupByPath (stub)


*         hyperv_private.h

o   Add mutex to protect against concurrent calls

o   Add virDomainXMLOptionPtr to parse Domain XML


*         hyperv_wmi.h

o   Structures for complex arguments: objects, EPR (end point references) and embedded instances


*         hyperv_wmi.c

o   Methods to invoke WMI methods with complex arguments


*         hyperv_wmi_generator.input

o   CIM_DataFile

o   Win32_ComputerSystemProduct

o   Msvm_VirtualSystemManagementService

o   Msvm_VirtualSystemGlobalSettingData

o   Msvm_ResourceAllocationSettingData

o   Msvm_AllocationCapabilities

o   Msvm_VirtualSwitch

o   Msvm_SwitchPort

o   Msvm_SyntheticEthernetPortSettingData

o   Msvm_VirtualSwitchManagementService

o   Win32_OperatingSystem

o   Win32_PerfFormattedData_HvStats_HyperVHypervisorVirtualProcessor

o   Win32_PerfRawData_HvStats_HyperVHypervisorVirtualProcessor


*         hyperv_wmi_generator.py

o   Add CIM_DataFile class header to be generated

o   Add tab classes and types to be generated

o   Add a function to print header types


*         openwsman.h

o   Add ws_xml_create_doc signature

o   Add xml_parser_get_root signature

Attach files contain sources and an pdf of our contributions.

I'm ending my training this week but I'm available to answer any questions you may have. You can use my personal email: adrien.kantcheff at gmail.com<mailto:adrien.kantcheff at gmail.com>

I also put in copy of this email my tutors Yves VINTER and Christian BOURGEOIS. Feel free to contact them as well.


Best regards,

Adrien KANTCHEFF
Bull


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140828/b15f1697/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libvirt API  - New features for Hyper-V driver.pdf
Type: application/pdf
Size: 1393232 bytes
Desc: libvirt API  - New features for Hyper-V driver.pdf
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140828/b15f1697/attachment-0001.pdf>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Hyper-V driver 1.2.6 sources - Bull.zip
Type: application/x-zip-compressed
Size: 38502 bytes
Desc: Hyper-V driver 1.2.6 sources - Bull.zip
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140828/b15f1697/attachment-0001.bin>


More information about the libvir-list mailing list