Skip to content

Repository files navigation

C# Libvirt API bindings

Description

The C# libvirt bindings are a class library. They use a Microsoft Visual Studio project architecture, and have been tested with Windows .NET, and Mono, on both Linux and Windows.

Compiling them produces LibvirtBindings.dll, which can be added as a .NET reference to any .NET project needing access to libvirt.

Requirements

These bindings depend upon the libvirt libraries being installed.

In the .NET case, this is libvirt-0.dll, produced from compiling libvirt for windows.

Usage

The libvirt C# bindings class library exposes the Libvirt namespace. This namespace exposes all of the needed types (enum, struct), plus many classes exposing the libvirt API methods.

These classes are grouped into functional areas, with each class exposing libvirt methods related to that area.

For example, the libvirt methods related to connections, such as virConnectOpenAuth and virConnectNumOfDomains, are in the Connect class.
They are accessed as Connect.OpenAuth, and Connect.NumOfDomains respectively.

In the same manner, the other class name mappings are:

Name of libvirt functionC# class name
virDomain...Domain
virEvent...Event
virInterface...Interface
virNetwork...Network
virNode...Node
virSecret...Secret
virStoragePool...StoragePool
virStorageVolume...StorageVolume
virStream...Stream

There are some additions as well:

  • There is a class named Library, exposing the virGetVersion and virInitialize methods
  • There is a class named Errors, exposing the error related methods. For example, virSetErrorFunc and virConnResetLastError.

Authors

The C# bindings are the work of Arnaud Champion <arnaud.champion AT devatom.fr>, based upon the previous work of Jaromír Červenka.

Test Configuration

Testing is performed using the following configurations:

  • Windows 7 (64 bits) / .Net 4
  • Windows 7 (64 bits) / Mono 2.6.7 (compiled in 32 bits)
  • Ubuntu 10.10 amd64 / Mono 2.6.7 (compiled in 64 bits)

Type Coverage

Coverage of the libvirt types is:

Tested
TypeNameBindingTestedExample projectWorks.Net/WinMono (32-bit)/WinMono (64-bit)/Linux
enumvirCPUCompareResultNo
structvirConnectIntPtrYesYes
structvirConnectAuthYesYesvirConnectOpenAuthYesYesYesYes
structvirConnectCredentialYesYesvirConnectOpenAuthYesYesYesYes
enumvirConnectCredentialTypeYesYesvirConnectOpenAuthYesYesYesYes
enumvirConnectFlagsNo
structvirDomainIntPtr
structvirDomainBlockInfoNo
structvirDomainBlockStatsInfoYesYesvirDomainStatsYesYesYesYes
enumvirDomainCoreDumpFlagsNo
enumvirDomainCreateFlagsNo
enumvirDomainDeviceModifyFlagsNo
enumvirDomainEventDefinedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
structvirDomainEventGraphicsAddressNo
enumvirDomainEventGraphicsAddressTypeNo
enumvirDomainEventGraphicsPhaseNo
structvirDomainEventGraphicsSubjectNo
structvirDomainEventGraphicsSubjectIdentityNo
enumvirDomainEventIDNo
enumvirDomainEventIOErrorActionNo
enumvirDomainEventResumedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventStartedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventStoppedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventSuspendedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventUndefinedDetailTypeYesYesvirEventRegisterImplYesYesYesYes
enumvirDomainEventWatchdogActionNo
structvirDomainInfoYesYesvirConnectSetErrorFunc, virDomainStatsYesYesYesYes
structvirDomainInterfaceStatsStructYesYesvirDomainStatsYesYesYesYes
structvirDomainJobInfoNo
enumvirDomainJobTypeNo
enumvirDomainMemoryFlagsNo
structvirDomainMemoryStatStructNo
enumvirDomainMemoryStatTagsYesNoMaybe
enumvirDomainMigrateFlagsNo
structvirDomainSnapshotNo
enumvirDomainSnapshotDeleteFlags
enumvirDomainStateYesYesYes
enumvirDomainXMLFlagsYesYesYes
enumvirEventHandleTypeYesYesvirEventRegisterImplYesYesYesYes
structvirInterfaceIntPtr
enumvirInterfaceXMLFlagsNo
structvirNWFilterNo
structvirNetworkIntPtr
structvirNodeDeviceIntPtr
structvirNodeInfoYesNoMaybe
structvirSchedParameterNo
enumvirSchedParameterTypeNo
structvirSecretNo
enumvirSecretUsageTypeNo
structvirSecurityLabelNo
structvirSecurityModelNo
enumvirStoragePoolBuildFlagsYesNoMaybe
enumvirStoragePoolDeleteFlagsYesNoMaybe
structvirStoragePoolInfoYesYesYes
structvirStoragePoolIntPtr
enumvirStoragePoolStateYesYesYes
structvirStorageVolIntPtr
enumvirStorageVolDeleteFlagsNo
structvirStorageVolInfoYesYesYes
enumvirStorageVolTypeYesYesYes
structvirStreamNo
enumvirStreamEventTypeNo
enumvirStreamFlagsNo
structvirVcpuInfoNo
enumvirVcpuStateNo
structvirErrorYesYesvirConnectSetErrorFunc, virDomainStatsYesYesYesYes

Note:IntPtr in the above table means that the struct is not public so it's exposed as an IntPtr type.

Function Coverage

Coverage of the libvirt functions is:

Tested
NameBindingTypeTestedExample projectWorking.Net/WinMono32/WinMono64/Linux
virConnectAuthCallbackYesdelegateYesvirConnectOpenAuthYesYesYesYes
virConnectBaselineCPUNofunction
virConnectCloseYesfunctionYesvirConnectOpenAuthYesYesYesYes
virConnectCompareCPUNofunction
virConnectDomainEventCallbackYesdelegateYesYes
virConnectDomainEventDeregisterNofunction
virConnectDomainEventDeregisterAnyNofunction
virConnectDomainEventGenericCallbackNodelegate
virConnectDomainEventGraphicsCallbackNodelegate
virConnectDomainEventIOErrorCallbackNodelegate
virConnectDomainEventIOErrorReasonCallbackNodelegate
virConnectDomainEventRTCChangeCallbackNodelegate
virConnectDomainEventRegisterYesfunctionYesvirEventRegisterImplYesYesYesYes
virConnectDomainEventRegisterAnyNofunction
virConnectDomainEventWatchdogCallbackNodelegate
virConnectDomainXMLFromNativeNofunction
virConnectDomainXMLToNativeNofunction
virConnectFindStoragePoolSourcesNofunction
virConnectGetCapabilitiesYesfunctionYesYes
virConnectGetHostnameYesfunctionYes
virConnectGetLibVersionYesfunctionNoMaybe
virConnectGetMaxVcpusYesfunctionNoMaybe
virConnectGetTypeYesfunctionNoMaybe
virConnectGetURIYesfunctionYesYes
virConnectGetVersionYesfunctionNoMaybe
virConnectIsEncryptedYesfunctionNoMaybe
virConnectIsSecureYesfunctionNoMaybe
virConnectListDefinedDomainsYesfunctionYesvirConnectOpenAuthYesYesYesYes
virConnectListDefinedInterfacesYesfunctionYesYes
virConnectListDefinedNetworksYesfunctionYesYes
virConnectListDefinedStoragePoolsYesfunctionYesYes
virConnectListDomainsYesfunctionYesvirConnectOpenAuth, virDomainInfosYesYesYesYes
virConnectListInterfacesYesfunctionYesYes
virConnectListNWFiltersNofunction
virConnectListNetworksYesfunctionYesYes
virConnectListSecretsYesfunctionNoMaybe
virConnectListStoragePoolsYesfunctionYesvirConnectOpenYesYesYesYes
virConnectNumOfDefinedDomainsYesfunctionYesvirConnectOpenAuthYesYesYesYes
virConnectNumOfDefinedInterfacesYesfunctionNoMaybe
virConnectNumOfDefinedNetworksYesfunctionYesYes
virConnectNumOfDefinedStoragePoolsYesfunctionYesYes
virConnectNumOfDomainsYesfunctionYesvirConnectOpenAuth, virDomainInfosYesYesYesYes
virConnectNumOfInterfacesYesfunctionNoMaybe
virConnectNumOfNWFiltersNofunction
virConnectNumOfNetworksYesfunctionYesYes
virConnectNumOfSecretsYesfunctionNoMaybe
virConnectNumOfStoragePoolsYesfunctionYesvirConnectOpenYesYesYesYes
virConnectOpenYesfunctionYesvirEventRegisterImpl, virDomainInfosYesYesYesYes
virConnectOpenAuthYesfunctionYesvirConnectOpenAuthYesYesYesYes
virConnectOpenReadOnlyYesfunctionNoMaybe
virConnectRefYesfunctionNoMaybe
virDomainAbortJobNofunction
virDomainAttachDeviceYesfunctionNoMaybe
virDomainAttachDeviceFlagsYesfunctionNoMaybe
virDomainBlockPeekNofunction
virDomainBlockStatsYesfunctionYesvirDomainInfosYesYesYesYes
virDomainCoreDumpYesfunctionNoMaybe
virDomainCreateYesfunctionYesYes
virDomainCreateLinuxNofunction
virDomainCreateWithFlagsNofunction
virDomainCreateXMLYesfunctionNoMaybe
virDomainDefineXMLYesfunctionYesYes
virDomainDestroyYesfunctionYesYes
virDomainDetachDeviceYesfunctionNoMaybe
virDomainDetachDeviceFlagsYesfunctionNoMaybe
virDomainFreeYesfunctionYesYes
virDomainGetAutostartYesfunctionNoMaybe
virDomainGetBlockInfoNofunction
virDomainGetConnectYesfunctionNoMaybe
virDomainGetIDYesfunctionNoMaybe
virDomainGetInfoYesfunctionYesvirDomainInfosYesYesYesYes
virDomainGetJobInfoNofunction
virDomainGetMaxMemoryYesfunctionNoMaybe
virDomainGetMaxVcpusYesfunctionNoMaybe
virDomainGetNameYesfunctionYesvirConnectOpenAuth, virDomainInfosYesYesYesYes
virDomainGetOSTypeYesfunctionNoMaybe
virDomainGetSchedulerParametersNofunction
virDomainGetSchedulerTypeNofunction
virDomainGetSecurityLabelNofunction
virDomainGetUUIDYesfunctionNoMaybe
virDomainGetUUIDStringYesfunctionNoMaybe
virDomainGetVcpusNofunction
virDomainGetXMLDescYesfunctionYesvirDomainInfosYesYesYesYes
virDomainHasCurrentSnapshotNofunction
virDomainHasManagedSaveImageNofunction
virDomainInterfaceStatsNofunctionYesvirDomainInfosYesYesYesYes
virDomainIsActiveYesfunctionYesYes
virDomainIsPersistentYesfunctionNoMaybe
virDomainLookupByIDYesfunctionYesvirConnectOpenAuth, virDomainInfosYesYesYesYes
virDomainLookupByNameYesfunctionYesvirDomainInfosYesYesYesYes
virDomainLookupByUUIDYesfunctionNoMaybe
virDomainLookupByUUIDStringYesfunctionNoMaybe
virDomainManagedSaveNofunction
virDomainManagedSaveRemoveNofunction
virDomainMemoryPeekNofunction
virDomainMemoryStatsNofunction
virDomainMigrateNofunction
virDomainMigrateSetMaxDowntimeNofunction
virDomainMigrateToURINofunction
virDomainPinVcpuNofunction
virDomainRebootYesfunctionYesYes
virDomainRefYesfunctionNoMaybe
virDomainRestoreYesfunctionNoMaybe
virDomainResumeYesfunctionYesYes
virDomainRevertToSnapshotNofunction
virDomainSaveYesfunctionNoMaybe
virDomainSetAutostartYesfunctionNoMaybe
virDomainSetMaxMemoryYesfunctionNoMaybe
virDomainSetMemoryYesfunctionNoMaybe
virDomainSetSchedulerParametersNofunction
virDomainSetVcpusYesfunctionNoMaybe
virDomainShutdownYesfunctionYesYes
virDomainSnapshotCreateXMLNofunction
virDomainSnapshotCurrentNofunction
virDomainSnapshotDeleteNofunction
virDomainSnapshotFreeNofunction
virDomainSnapshotGetXMLDescNofunction
virDomainSnapshotListNamesNofunction
virDomainSnapshotLookupByNameNofunction
virDomainSnapshotNumNofunction
virDomainSuspendYesfunctionYesYes
virDomainUndefineYesfunctionYesYes
virDomainUpdateDeviceFlagsNofunction
virEventAddHandleFuncYesdelegateYesYes
virEventAddTimeoutFuncYesdelegateYesYes
virEventHandleCallbackYesdelegateYesvirEventRegisterImplYesYesYesYes
virEventRegisterImplYesfunctionYesvirEventRegisterImplYesYesYesYes
virEventRemoveHandleFuncYesdelegateYesYes
virEventRemoveTimeoutFuncYesdelegateYesYes
virEventTimeoutCallbackYesdelegateYesvirEventRegisterImplYesYesYesYes
virEventUpdateHandleFuncYesdelegateYesYes
virEventUpdateTimeoutFuncYesdelegateYesYes
virFreeCallbackYesfunctionYesvirEventRegisterImplYesYesYesYes
virGetVersionYesfunctionYesYes
virInitializeYesfunctionYesYes
virInterfaceCreateNofunction
virInterfaceDefineXMLNofunction
virInterfaceDestroyNofunction
virInterfaceFreeNofunction
virInterfaceGetConnectNofunction
virInterfaceGetMACStringNofunction
virInterfaceGetNameNofunction
virInterfaceGetXMLDescNofunction
virInterfaceIsActiveNofunction
virInterfaceLookupByMACStringNofunction
virInterfaceLookupByNameNofunction
virInterfaceRefNofunction
virInterfaceUndefineNofunction
virNWFilterDefineXMLNofunction
virNWFilterFreeNofunction
virNWFilterGetNameNofunction
virNWFilterGetUUIDNofunction
virNWFilterGetUUIDStringNofunction
virNWFilterGetXMLDescNofunction
virNWFilterLookupByNameNofunction
virNWFilterLookupByUUIDNofunction
virNWFilterLookupByUUIDStringNofunction
virNWFilterRefNofunction
virNWFilterUndefineNofunction
virNetworkCreateYesfunctionYesYes
virNetworkCreateXMLYesfunctionNoMaybe
virNetworkDefineXMLYesfunctionYesYes
virNetworkDestroyYesfunctionYesYes
virNetworkFreeYesfunctionYesYes
virNetworkGetAutostartYesfunctionNoMaybe
virNetworkGetBridgeNameYesfunctionNoMaybe
virNetworkGetConnectYesfunctionNoMaybe
virNetworkGetNameYesfunctionNoMaybe
virNetworkGetUUIDNofunction
virNetworkGetUUIDStringYesfunctionYesYes
virNetworkGetXMLDescYesfunctionYesYes
virNetworkIsActiveYesfunctionYesYes
virNetworkIsPersistentYesfunctionYesYes
virNetworkLookupByNameYesfunctionYesYes
virNetworkLookupByUUIDYesfunctionNoMaybe
virNetworkLookupByUUIDStringYesfunctionNoMaybe
virNetworkRefYesfunctionNoMaybe
virNetworkSetAutostartYesfunctionYesYes
virNetworkUndefineYesfunctionYesYes
virNodeDeviceCreateXMLNofunction
virNodeDeviceDestroyNofunction
virNodeDeviceDettachNofunction
virNodeDeviceFreeNofunction
virNodeDeviceGetNameNofunction
virNodeDeviceGetParentNofunction
virNodeDeviceGetXMLDescYesfunctionYesYes
virNodeDeviceListCapsNofunction
virNodeDeviceLookupByNameYesfunctionYesYes
virNodeDeviceNumOfCapsNofunction
virNodeDeviceReAttachNofunction
virNodeDeviceRefNofunction
virNodeDeviceResetNofunction
virNodeGetCellsFreeMemoryNofunction
virNodeGetFreeMemoryYesfunctionNoMaybe
virNodeGetInfoYesfunctionNoMaybe
virNodeGetSecurityModelNofunction
virNodeListDevicesYesfunctionYesYes
virNodeNumOfDevicesYesfunctionYesYes
virSecretDefineXMLNofunction
virSecretFreeNofunction
virSecretGetConnectNofunction
virSecretGetUUIDNofunction
virSecretGetUUIDStringNofunction
virSecretGetUsageIDNofunction
virSecretGetUsageTypeNofunction
virSecretGetValueNofunction
virSecretGetXMLDescNofunction
virSecretLookupByUUIDNofunction
virSecretLookupByUUIDStringNofunction
virSecretLookupByUsageNofunction
virSecretRefNofunction
virSecretSetValueNofunction
virSecretUndefineNofunction
virStoragePoolBuildYesfunctionNoMaybe
virStoragePoolCreateYesfunctionYesYes
virStoragePoolCreateXMLYesfunctionNoMaybe
virStoragePoolDefineXMLYesfunctionYesYes
virStoragePoolDeleteYesfunctionNoMaybe
virStoragePoolDestroyYesfunctionYesYes
virStoragePoolFreeYesfunctionYesYes
virStoragePoolGetAutostartYesfunctionNoMaybe
virStoragePoolGetConnectYesfunctionNoMaybe
virStoragePoolGetInfoYesfunctionYesYes
virStoragePoolGetNameYesfunctionYesYes
virStoragePoolGetUUIDYesfunctionNoMaybe
virStoragePoolGetUUIDStringYesfunctionYesYes
virStoragePoolGetXMLDescYesfunctionYesYes
virStoragePoolIsActiveYesfunctionYesYes
virStoragePoolIsPersistentYesfunctionYesYes
virStoragePoolListVolumesYesfunctionYesYes
virStoragePoolLookupByNameYesfunctionYesYes
virStoragePoolLookupByUUIDYesfunctionNoMaybe
virStoragePoolLookupByUUIDStringYesfunctionNoMaybe
virStoragePoolLookupByVolumeYesfunctionNoMaybe
virStoragePoolNumOfVolumesYesfunctionYesYes
virStoragePoolRefYesfunctionNoMaybe
virStoragePoolRefreshYesfunctionNoMaybe
virStoragePoolSetAutostartYesfunctionYesYes
virStoragePoolUndefineYesfunctionYesYes
virStorageVolCreateXMLYesfunctionYesYes
virStorageVolCreateXMLFromYesfunctionNoMaybe
virStorageVolDeleteYesfunctionYesYes
virStorageVolFreeYesfunctionNoMaybe
virStorageVolGetConnectYesfunctionNoMaybe
virStorageVolGetInfoYesfunctionYesYes
virStorageVolGetKeyYesfunctionYesYes
virStorageVolGetNameYesfunctionYesYes
virStorageVolGetPathYesfunctionYesYes
virStorageVolGetXMLDescYesfunctionYesYes
virStorageVolLookupByKeyYesfunctionYesYes
virStorageVolLookupByNameYesfunctionYesYes
virStorageVolLookupByPathYesfunctionYesYes
virStorageVolRefYesfunctionNoNo
virStorageVolWipeNofunction
virStreamAbortNofunction
virStreamEventAddCallbackNofunction
virStreamEventCallbackNodelegate
virStreamEventRemoveCallbackNofunction
virStreamEventUpdateCallbackNofunction
virStreamFinishNofunction
virStreamFreeNofunction
virStreamNewNofunction
virStreamRecvNofunction
virStreamRecvAllNofunction
virStreamRefNofunction
virStreamSendNofunction
virStreamSendAllNofunction
virStreamSinkFuncNodelegate
virStreamSourceFuncNodelegate
virGetLastErrorYesfunctionYesvirConnectSetErrorFuncYesYesYesYes
virConnSetErrorFuncYesfunctionYesvirConnectSetErrorFuncYesYesYesYes
virErrorFuncYesdelegateYesvirConnectSetErrorFunc, virDomainInfosYesYesYesYes

About

Read-only mirror. Please submit merge requests / issues to https://gitlab.com/libvirt/libvirt-csharp

Resources

Contributing

Stars

20 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages