2009-01-05 14:05:29 +00:00
|
|
|
#
|
|
|
|
# Officially exported symbols, for which header
|
|
|
|
# file definitions are installed in /usr/include/libvirt
|
|
|
|
# either from libvirt.h and virterror.h
|
|
|
|
#
|
|
|
|
# Versions here are *fixed* to match the libvirt version
|
|
|
|
# at which the symbol was introduced. This ensures that
|
|
|
|
# a new client app requiring symbol foo() can't accidentally
|
|
|
|
# run with old libvirt.so not providing foo() - the global
|
|
|
|
# soname version info can't enforce this since we never
|
|
|
|
# change the soname
|
|
|
|
#
|
|
|
|
LIBVIRT_0.0.3 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectClose;
|
|
|
|
virConnectGetType;
|
|
|
|
virConnectGetVersion;
|
|
|
|
virConnectListDomains;
|
|
|
|
virConnectNumOfDomains;
|
|
|
|
virConnectOpen;
|
|
|
|
virConnectOpenReadOnly;
|
|
|
|
|
|
|
|
virDomainCreateLinux;
|
|
|
|
virDomainDestroy;
|
|
|
|
virDomainFree;
|
|
|
|
virDomainGetID;
|
|
|
|
virDomainGetInfo;
|
|
|
|
virDomainGetMaxMemory;
|
|
|
|
virDomainGetName;
|
|
|
|
virDomainGetOSType;
|
|
|
|
virDomainGetXMLDesc;
|
|
|
|
virDomainLookupByID;
|
|
|
|
virDomainLookupByName;
|
|
|
|
virDomainRestore;
|
|
|
|
virDomainResume;
|
|
|
|
virDomainSave;
|
|
|
|
virDomainSetMaxMemory;
|
|
|
|
virDomainShutdown;
|
|
|
|
virDomainSuspend;
|
|
|
|
|
|
|
|
virGetVersion;
|
2009-01-05 14:05:29 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
LIBVIRT_0.0.5 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainLookupByUUID;
|
|
|
|
virDomainGetUUID;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.0.3;
|
|
|
|
|
|
|
|
LIBVIRT_0.1.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virInitialize;
|
|
|
|
virNodeGetInfo;
|
|
|
|
virDomainReboot;
|
|
|
|
|
|
|
|
virCopyLastError;
|
|
|
|
virConnSetErrorFunc;
|
|
|
|
virResetLastError;
|
|
|
|
virResetError;
|
|
|
|
virConnGetLastError;
|
|
|
|
virGetLastError;
|
|
|
|
virSetErrorFunc;
|
|
|
|
virConnCopyLastError;
|
|
|
|
virConnResetLastError;
|
|
|
|
virDefaultErrorFunc;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.0.5;
|
|
|
|
|
|
|
|
LIBVIRT_0.1.1 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainLookupByUUIDString;
|
|
|
|
virDomainGetUUIDString;
|
|
|
|
virDomainSetMemory;
|
|
|
|
virDomainDefineXML;
|
|
|
|
virDomainCreate;
|
|
|
|
virDomainUndefine;
|
|
|
|
virConnectListDefinedDomains;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.1.0;
|
|
|
|
|
|
|
|
LIBVIRT_0.1.4 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainSetVcpus;
|
|
|
|
virDomainPinVcpu;
|
|
|
|
virDomainGetVcpus;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.1.1;
|
|
|
|
|
|
|
|
LIBVIRT_0.1.5 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectNumOfDefinedDomains;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.1.4;
|
|
|
|
|
|
|
|
LIBVIRT_0.1.9 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainCoreDump;
|
|
|
|
virDomainAttachDevice;
|
|
|
|
virDomainDetachDevice;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.1.5;
|
|
|
|
|
|
|
|
LIBVIRT_0.2.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectNumOfNetworks;
|
|
|
|
virConnectListNetworks;
|
|
|
|
virConnectNumOfDefinedNetworks;
|
|
|
|
virConnectListDefinedNetworks;
|
|
|
|
virNetworkLookupByName;
|
|
|
|
virNetworkLookupByUUID;
|
|
|
|
virNetworkLookupByUUIDString;
|
|
|
|
virNetworkCreateXML;
|
|
|
|
virNetworkDefineXML;
|
|
|
|
virNetworkUndefine;
|
|
|
|
virNetworkCreate;
|
|
|
|
virNetworkDestroy;
|
|
|
|
virNetworkFree;
|
|
|
|
virNetworkGetName;
|
|
|
|
virNetworkGetUUID;
|
|
|
|
virNetworkGetUUIDString;
|
|
|
|
virNetworkGetXMLDesc;
|
|
|
|
virNetworkGetBridgeName;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.1.9;
|
|
|
|
|
|
|
|
LIBVIRT_0.2.1 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectGetCapabilities;
|
|
|
|
virConnectGetMaxVcpus;
|
|
|
|
virDomainGetMaxVcpus;
|
|
|
|
virDomainGetAutostart;
|
|
|
|
virDomainSetAutostart;
|
|
|
|
virNetworkGetAutostart;
|
|
|
|
virNetworkSetAutostart;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.2.0;
|
|
|
|
|
|
|
|
LIBVIRT_0.2.3 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainGetSchedulerType;
|
|
|
|
virDomainGetSchedulerParameters;
|
|
|
|
virDomainSetSchedulerParameters;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.2.1;
|
|
|
|
|
|
|
|
LIBVIRT_0.3.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectGetHostname;
|
|
|
|
virConnectGetURI;
|
|
|
|
virDomainGetConnect;
|
|
|
|
virNetworkGetConnect;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.2.3;
|
|
|
|
|
|
|
|
LIBVIRT_0.3.2 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainMigrate;
|
|
|
|
virDomainBlockStats;
|
|
|
|
virDomainInterfaceStats;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.3.0;
|
|
|
|
|
|
|
|
LIBVIRT_0.3.3 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virNodeGetCellsFreeMemory;
|
|
|
|
virNodeGetFreeMemory;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.3.2;
|
|
|
|
|
|
|
|
LIBVIRT_0.4.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectOpenAuth;
|
|
|
|
virConnectAuthPtrDefault;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.3.3;
|
|
|
|
|
|
|
|
LIBVIRT_0.4.1 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virStoragePoolGetConnect;
|
|
|
|
virConnectNumOfStoragePools;
|
|
|
|
virConnectNumOfDefinedStoragePools;
|
|
|
|
virConnectListStoragePools;
|
|
|
|
virConnectListDefinedStoragePools;
|
|
|
|
virStoragePoolLookupByName;
|
|
|
|
virStoragePoolLookupByUUID;
|
|
|
|
virStoragePoolLookupByUUIDString;
|
|
|
|
virStoragePoolLookupByVolume;
|
|
|
|
virStoragePoolCreateXML;
|
|
|
|
virStoragePoolDefineXML;
|
|
|
|
virStoragePoolUndefine;
|
|
|
|
virStoragePoolCreate;
|
|
|
|
virStoragePoolBuild;
|
|
|
|
virStoragePoolDestroy;
|
|
|
|
virStoragePoolDelete;
|
|
|
|
virStoragePoolRefresh;
|
|
|
|
virStoragePoolFree;
|
|
|
|
virStoragePoolGetName;
|
|
|
|
virStoragePoolGetUUID;
|
|
|
|
virStoragePoolGetUUIDString;
|
|
|
|
virStoragePoolGetInfo;
|
|
|
|
virStoragePoolGetXMLDesc;
|
|
|
|
virStoragePoolSetAutostart;
|
|
|
|
virStoragePoolGetAutostart;
|
|
|
|
virStoragePoolNumOfVolumes;
|
|
|
|
virStoragePoolListVolumes;
|
|
|
|
|
|
|
|
virStorageVolGetConnect;
|
|
|
|
virStorageVolLookupByName;
|
|
|
|
virStorageVolLookupByKey;
|
|
|
|
virStorageVolLookupByPath;
|
|
|
|
virStorageVolCreateXML;
|
|
|
|
virStorageVolDelete;
|
|
|
|
virStorageVolFree;
|
|
|
|
virStorageVolGetName;
|
|
|
|
virStorageVolGetKey;
|
|
|
|
virStorageVolGetInfo;
|
|
|
|
virStorageVolGetXMLDesc;
|
|
|
|
virStorageVolGetPath;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.4.0;
|
|
|
|
|
|
|
|
LIBVIRT_0.4.2 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainBlockPeek;
|
|
|
|
virDomainMemoryPeek;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.4.1;
|
|
|
|
|
|
|
|
LIBVIRT_0.4.5 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectFindStoragePoolSources;
|
2009-01-05 14:05:29 +00:00
|
|
|
} LIBVIRT_0.4.2;
|
|
|
|
|
|
|
|
LIBVIRT_0.5.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainCreateXML;
|
|
|
|
virEventRegisterImpl;
|
|
|
|
virConnectDomainEventRegister;
|
|
|
|
virConnectDomainEventDeregister;
|
|
|
|
|
|
|
|
virNodeNumOfDevices;
|
|
|
|
virNodeListDevices;
|
|
|
|
virNodeDeviceLookupByName;
|
|
|
|
virNodeDeviceFree;
|
|
|
|
virNodeDeviceGetXMLDesc;
|
|
|
|
virNodeDeviceGetName;
|
|
|
|
virNodeDeviceGetParent;
|
|
|
|
virNodeDeviceNumOfCaps;
|
|
|
|
virNodeDeviceListCaps;
|
2009-01-05 14:05:29 +00:00
|
|
|
|
|
|
|
} LIBVIRT_0.4.5;
|
|
|
|
|
2009-01-20 12:14:03 +00:00
|
|
|
LIBVIRT_0.6.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectRef;
|
|
|
|
virDomainRef;
|
|
|
|
virNetworkRef;
|
|
|
|
virStoragePoolRef;
|
|
|
|
virStorageVolRef;
|
|
|
|
virNodeDeviceRef;
|
2009-01-20 12:14:03 +00:00
|
|
|
|
|
|
|
} LIBVIRT_0.5.0;
|
|
|
|
|
2009-02-09 14:16:23 +00:00
|
|
|
LIBVIRT_0.6.1 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virFreeError;
|
|
|
|
virSaveLastError;
|
|
|
|
virNodeDeviceDettach;
|
|
|
|
virNodeDeviceReAttach;
|
|
|
|
virNodeDeviceReset;
|
|
|
|
virDomainGetSecurityLabel;
|
|
|
|
virNodeGetSecurityModel;
|
2009-02-09 14:16:23 +00:00
|
|
|
} LIBVIRT_0.6.0;
|
|
|
|
|
2009-04-24 13:11:23 +00:00
|
|
|
LIBVIRT_0.6.3 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virNodeDeviceCreateXML;
|
|
|
|
virNodeDeviceDestroy;
|
2009-04-24 13:11:23 +00:00
|
|
|
} LIBVIRT_0.6.1;
|
|
|
|
|
2009-05-12 20:10:50 +00:00
|
|
|
LIBVIRT_0.6.4 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virInterfaceGetConnect;
|
|
|
|
virConnectNumOfInterfaces;
|
|
|
|
virConnectListInterfaces;
|
|
|
|
virInterfaceLookupByName;
|
|
|
|
virInterfaceLookupByMACString;
|
|
|
|
virInterfaceGetName;
|
|
|
|
virInterfaceGetMACString;
|
|
|
|
virInterfaceGetXMLDesc;
|
|
|
|
virInterfaceRef;
|
|
|
|
virInterfaceFree;
|
|
|
|
virInterfaceDefineXML;
|
|
|
|
virInterfaceUndefine;
|
|
|
|
virInterfaceCreate;
|
|
|
|
virInterfaceDestroy;
|
|
|
|
virStorageVolCreateXMLFrom;
|
|
|
|
virConnectDomainXMLFromNative;
|
|
|
|
virConnectDomainXMLToNative;
|
2009-05-12 20:10:50 +00:00
|
|
|
} LIBVIRT_0.6.3;
|
2009-05-21 13:46:35 +00:00
|
|
|
|
2009-07-16 15:49:50 +00:00
|
|
|
LIBVIRT_0.7.0 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectNumOfDefinedInterfaces;
|
|
|
|
virConnectListDefinedInterfaces;
|
2009-07-16 15:49:50 +00:00
|
|
|
} LIBVIRT_0.6.4;
|
|
|
|
|
2009-07-28 00:39:48 +00:00
|
|
|
LIBVIRT_0.7.1 {
|
|
|
|
global:
|
|
|
|
virSecretGetConnect;
|
|
|
|
virConnectNumOfSecrets;
|
|
|
|
virConnectListSecrets;
|
Fix UUID handling in secrets/storage encryption APIs
Convert all the secret/storage encryption APIs / wire format to
handle UUIDs in raw format instead of non-canonical printable
format. Guarentees data format correctness.
* docs/schemas/storageencryption.rng: Make UUID mandatory for a secret
and validate fully
* docs/schemas/secret.rng: Fully validate UUID
* include/libvirt/libvirt.h, include/libvirt/libvirt.h.in, Add
virSecretLookupByUUID and virSecretGetUUID. Make
virSecretGetUUIDString follow normal API design pattern
* python/generator.py: Skip generation of virSecretGetUUID,
virSecretGetUUIDString and virSecretLookupByUUID
* python/libvir.c, python/libvirt-python-api.xml: Manual impl
of virSecretGetUUID,virSecretGetUUIDString and virSecretLookupByUUID
* qemud/remote.c: s/virSecretLookupByUUIDString/virSecretLookupByUUID/
Fix get_nonnull_secret/make_nonnull_secret to use unsigned char
* qemud/remote_protocol.x: Fix remote_nonnull_secret to use a
remote_uuid instead of remote_nonnull_string for UUID field.
Rename REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING to
REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING and make it take an
remote_uuid value
* qemud/remote_dispatch_args.h, qemud/remote_dispatch_prototypes.h,
qemud/remote_dispatch_ret.h, qemud/remote_dispatch_table.h,
qemud/remote_protocol.c, qemud/remote_protocol.h: Re-generate
* src/datatypes.h, src/datatypes.c: Store UUID in raw format instead
of printable. Change virGetSecret to use raw format UUID
* src/driver.h: Rename virDrvSecretLookupByUUIDString to
virDrvSecretLookupByUUID and use raw format UUID
* src/libvirt.c: Add virSecretLookupByUUID and virSecretGetUUID
and re-implement virSecretLookupByUUIDString and
virSecretGetUUIDString in terms of those
* src/libvirt_public.syms: Add virSecretLookupByUUID and
virSecretGetUUID
* src/remote_internal.c: Rename remoteSecretLookupByUUIDString
to remoteSecretLookupByUUID. Fix typo in args for
remoteSecretDefineXML impl. Use raw UUID format for
get_nonnull_secret and make_nonnull_secret
* src/storage_encryption_conf.c, src/storage_encryption_conf.h:
Storage UUID in raw format, and require it to be present in
XML. Use UUID parser to validate.
* secret_conf.h, secret_conf.c: Generate a UUID if none is provided.
Storage UUID in raw format.
* src/secret_driver.c: Adjust to deal with raw UUIDs. Save secrets
in a filed with printable UUID, instead of base64 UUID.
* src/virsh.c: Adjust for changed public API contract of
virSecretGetUUIDString.
* src/storage_Backend.c: DOn't undefine secret we just generated
upon successful volume creation. Fix to handle raw UUIDs. Generate
a non-clashing UUID
* src/qemu_driver.c: Change to use lookupByUUID instead of
lookupByUUIDString
2009-09-10 16:44:12 +00:00
|
|
|
virSecretLookupByUUID;
|
2009-07-28 00:39:48 +00:00
|
|
|
virSecretLookupByUUIDString;
|
Add usage type/id as a public API property of virSecret
* include/libvirt/libvirt.h, include/libvirt/libvirt.h.in: Add
virSecretGetUsageType, virSecretGetUsageID and virLookupSecretByUsage
* python/generator.py: Mark virSecretGetUsageType, virSecretGetUsageID
as not throwing exceptions
* qemud/remote.c: Implement dispatch for virLookupSecretByUsage
* qemud/remote_protocol.x: Add usage type & ID as attributes of
remote_nonnull_secret. Add RPC calls for new public APIs
* qemud/remote_dispatch_args.h, qemud/remote_dispatch_prototypes.h,
qemud/remote_dispatch_ret.h, qemud/remote_dispatch_table.h,
qemud/remote_protocol.c, qemud/remote_protocol.h: Re-generate
* src/datatypes.c, src/datatypes.h: Add usageType and usageID as
properties of virSecretPtr
* src/driver.h: Add virLookupSecretByUsage driver entry point
* src/libvirt.c: Implement virSecretGetUsageType, virSecretGetUsageID
and virLookupSecretByUsage
* src/libvirt_public.syms: Export virSecretGetUsageType, virSecretGetUsageID
and virLookupSecretByUsage
* src/remote_internal.c: Implement virLookupSecretByUsage entry
* src/secret_conf.c, src/secret_conf.h: Remove the
virSecretUsageType enum, now in public API. Make volume
path mandatory when parsing XML
* src/secret_driver.c: Enforce usage uniqueness when defining secrets.
Implement virSecretLookupByUsage api method
* src/virsh.c: Include usage for secret-list command
2009-09-11 13:06:15 +00:00
|
|
|
virSecretLookupByUsage;
|
2009-07-28 00:39:48 +00:00
|
|
|
virSecretDefineXML;
|
Fix UUID handling in secrets/storage encryption APIs
Convert all the secret/storage encryption APIs / wire format to
handle UUIDs in raw format instead of non-canonical printable
format. Guarentees data format correctness.
* docs/schemas/storageencryption.rng: Make UUID mandatory for a secret
and validate fully
* docs/schemas/secret.rng: Fully validate UUID
* include/libvirt/libvirt.h, include/libvirt/libvirt.h.in, Add
virSecretLookupByUUID and virSecretGetUUID. Make
virSecretGetUUIDString follow normal API design pattern
* python/generator.py: Skip generation of virSecretGetUUID,
virSecretGetUUIDString and virSecretLookupByUUID
* python/libvir.c, python/libvirt-python-api.xml: Manual impl
of virSecretGetUUID,virSecretGetUUIDString and virSecretLookupByUUID
* qemud/remote.c: s/virSecretLookupByUUIDString/virSecretLookupByUUID/
Fix get_nonnull_secret/make_nonnull_secret to use unsigned char
* qemud/remote_protocol.x: Fix remote_nonnull_secret to use a
remote_uuid instead of remote_nonnull_string for UUID field.
Rename REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING to
REMOTE_PROC_SECRET_LOOKUP_BY_UUID_STRING and make it take an
remote_uuid value
* qemud/remote_dispatch_args.h, qemud/remote_dispatch_prototypes.h,
qemud/remote_dispatch_ret.h, qemud/remote_dispatch_table.h,
qemud/remote_protocol.c, qemud/remote_protocol.h: Re-generate
* src/datatypes.h, src/datatypes.c: Store UUID in raw format instead
of printable. Change virGetSecret to use raw format UUID
* src/driver.h: Rename virDrvSecretLookupByUUIDString to
virDrvSecretLookupByUUID and use raw format UUID
* src/libvirt.c: Add virSecretLookupByUUID and virSecretGetUUID
and re-implement virSecretLookupByUUIDString and
virSecretGetUUIDString in terms of those
* src/libvirt_public.syms: Add virSecretLookupByUUID and
virSecretGetUUID
* src/remote_internal.c: Rename remoteSecretLookupByUUIDString
to remoteSecretLookupByUUID. Fix typo in args for
remoteSecretDefineXML impl. Use raw UUID format for
get_nonnull_secret and make_nonnull_secret
* src/storage_encryption_conf.c, src/storage_encryption_conf.h:
Storage UUID in raw format, and require it to be present in
XML. Use UUID parser to validate.
* secret_conf.h, secret_conf.c: Generate a UUID if none is provided.
Storage UUID in raw format.
* src/secret_driver.c: Adjust to deal with raw UUIDs. Save secrets
in a filed with printable UUID, instead of base64 UUID.
* src/virsh.c: Adjust for changed public API contract of
virSecretGetUUIDString.
* src/storage_Backend.c: DOn't undefine secret we just generated
upon successful volume creation. Fix to handle raw UUIDs. Generate
a non-clashing UUID
* src/qemu_driver.c: Change to use lookupByUUID instead of
lookupByUUIDString
2009-09-10 16:44:12 +00:00
|
|
|
virSecretGetUUID;
|
2009-07-28 00:39:48 +00:00
|
|
|
virSecretGetUUIDString;
|
Add usage type/id as a public API property of virSecret
* include/libvirt/libvirt.h, include/libvirt/libvirt.h.in: Add
virSecretGetUsageType, virSecretGetUsageID and virLookupSecretByUsage
* python/generator.py: Mark virSecretGetUsageType, virSecretGetUsageID
as not throwing exceptions
* qemud/remote.c: Implement dispatch for virLookupSecretByUsage
* qemud/remote_protocol.x: Add usage type & ID as attributes of
remote_nonnull_secret. Add RPC calls for new public APIs
* qemud/remote_dispatch_args.h, qemud/remote_dispatch_prototypes.h,
qemud/remote_dispatch_ret.h, qemud/remote_dispatch_table.h,
qemud/remote_protocol.c, qemud/remote_protocol.h: Re-generate
* src/datatypes.c, src/datatypes.h: Add usageType and usageID as
properties of virSecretPtr
* src/driver.h: Add virLookupSecretByUsage driver entry point
* src/libvirt.c: Implement virSecretGetUsageType, virSecretGetUsageID
and virLookupSecretByUsage
* src/libvirt_public.syms: Export virSecretGetUsageType, virSecretGetUsageID
and virLookupSecretByUsage
* src/remote_internal.c: Implement virLookupSecretByUsage entry
* src/secret_conf.c, src/secret_conf.h: Remove the
virSecretUsageType enum, now in public API. Make volume
path mandatory when parsing XML
* src/secret_driver.c: Enforce usage uniqueness when defining secrets.
Implement virSecretLookupByUsage api method
* src/virsh.c: Include usage for secret-list command
2009-09-11 13:06:15 +00:00
|
|
|
virSecretGetUsageType;
|
|
|
|
virSecretGetUsageID;
|
2009-07-28 00:39:48 +00:00
|
|
|
virSecretGetXMLDesc;
|
|
|
|
virSecretSetValue;
|
|
|
|
virSecretGetValue;
|
|
|
|
virSecretUndefine;
|
|
|
|
virSecretRef;
|
|
|
|
virSecretFree;
|
|
|
|
} LIBVIRT_0.7.0;
|
2009-09-15 12:24:51 +00:00
|
|
|
|
2009-07-10 11:18:12 +00:00
|
|
|
LIBVIRT_0.7.2 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virStreamNew;
|
|
|
|
virStreamRef;
|
|
|
|
virStreamSend;
|
|
|
|
virStreamRecv;
|
|
|
|
virStreamSendAll;
|
|
|
|
virStreamRecvAll;
|
|
|
|
virStreamEventAddCallback;
|
|
|
|
virStreamEventUpdateCallback;
|
|
|
|
virStreamEventRemoveCallback;
|
|
|
|
virStreamFinish;
|
|
|
|
virStreamAbort;
|
|
|
|
virStreamFree;
|
|
|
|
virDomainMigrateToURI;
|
2009-07-10 11:18:12 +00:00
|
|
|
} LIBVIRT_0.7.1;
|
|
|
|
|
New APIs for checking some object properties
Introduce a number of new APIs to expose some boolean properties
of objects, which cannot otherwise reliably determined, nor are
aspects of the XML configuration.
* virDomainIsActive: Checking virDomainGetID is not reliable
since it is not possible to distinguish between error condition
and inactive domain for ID of -1.
* virDomainIsPersistent: Check whether a persistent config exists
for the domain
* virNetworkIsActive: Check whether the network is active
* virNetworkIsPersistent: Check whether a persistent config exists
for the network
* virStoragePoolIsActive: Check whether the storage pool is active
* virStoragePoolIsPersistent: Check whether a persistent config exists
for the storage pool
* virInterfaceIsActive: Check whether the host interface is active
* virConnectIsSecure: whether the communication channel to the
hypervisor is secure
* virConnectIsEncrypted: whether any network based commnunication
channels are encrypted
NB, a channel can be secure, even if not encrypted, eg if it does
not involve the network, like a UNIX socket, or pipe.
* include/libvirt/libvirt.h.in: Define public API
* src/driver.h: Define internal driver API
* src/libvirt.c: Implement public API entry point
* src/libvirt_public.syms: Export API symbols
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
src/interface/netcf_driver.c, src/network/bridge_driver.c,
src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c,
src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c: Stub out driver tables
2009-10-21 10:49:05 +00:00
|
|
|
LIBVIRT_0.7.3 {
|
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectGetLibVersion;
|
|
|
|
virConnectIsEncrypted;
|
|
|
|
virConnectIsSecure;
|
|
|
|
virDomainIsActive;
|
|
|
|
virDomainIsPersistent;
|
|
|
|
virNetworkIsActive;
|
|
|
|
virNetworkIsPersistent;
|
|
|
|
virStoragePoolIsActive;
|
|
|
|
virStoragePoolIsPersistent;
|
|
|
|
virInterfaceIsActive;
|
New APIs for checking some object properties
Introduce a number of new APIs to expose some boolean properties
of objects, which cannot otherwise reliably determined, nor are
aspects of the XML configuration.
* virDomainIsActive: Checking virDomainGetID is not reliable
since it is not possible to distinguish between error condition
and inactive domain for ID of -1.
* virDomainIsPersistent: Check whether a persistent config exists
for the domain
* virNetworkIsActive: Check whether the network is active
* virNetworkIsPersistent: Check whether a persistent config exists
for the network
* virStoragePoolIsActive: Check whether the storage pool is active
* virStoragePoolIsPersistent: Check whether a persistent config exists
for the storage pool
* virInterfaceIsActive: Check whether the host interface is active
* virConnectIsSecure: whether the communication channel to the
hypervisor is secure
* virConnectIsEncrypted: whether any network based commnunication
channels are encrypted
NB, a channel can be secure, even if not encrypted, eg if it does
not involve the network, like a UNIX socket, or pipe.
* include/libvirt/libvirt.h.in: Define public API
* src/driver.h: Define internal driver API
* src/libvirt.c: Implement public API entry point
* src/libvirt_public.syms: Export API symbols
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
src/interface/netcf_driver.c, src/network/bridge_driver.c,
src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c,
src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c: Stub out driver tables
2009-10-21 10:49:05 +00:00
|
|
|
} LIBVIRT_0.7.2;
|
|
|
|
|
2009-12-18 13:51:39 +00:00
|
|
|
LIBVIRT_0.7.5 {
|
|
|
|
global:
|
|
|
|
virConnectCompareCPU;
|
2009-12-20 12:34:21 +00:00
|
|
|
virDomainMemoryStats;
|
2009-12-18 13:51:39 +00:00
|
|
|
} LIBVIRT_0.7.3;
|
|
|
|
|
2010-01-14 01:29:16 +00:00
|
|
|
LIBVIRT_0.7.7 {
|
|
|
|
global:
|
|
|
|
virDomainAttachDeviceFlags;
|
|
|
|
virDomainDetachDeviceFlags;
|
2010-01-22 13:52:41 +00:00
|
|
|
virConnectBaselineCPU;
|
Stub out internal driver entry points for job processing
The internal glue layer for the new pubic API
* src/driver.h: Define internal driver API contract
* src/libvirt.c, src/libvirt_public.syms: Wire up public
API to internal driver API
* src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
src/qemu/qemu_driver.c, src/remote/remote_driver.c,
src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c: Stub new entry point
2010-02-03 11:32:24 +00:00
|
|
|
virDomainGetJobInfo;
|
2012-01-26 14:30:36 +00:00
|
|
|
virDomainAbortJob;
|
2010-01-14 01:29:16 +00:00
|
|
|
} LIBVIRT_0.7.5;
|
|
|
|
|
2010-04-12 17:39:20 +00:00
|
|
|
LIBVIRT_0.8.0 {
|
2010-03-01 19:56:46 +00:00
|
|
|
global:
|
2012-01-26 14:30:36 +00:00
|
|
|
virStorageVolWipe;
|
2010-03-12 13:55:27 +00:00
|
|
|
virDomainMigrateSetMaxDowntime;
|
Introduce a new public API for domain events
The current API for domain events has a number of problems
- Only allows for domain lifecycle change events
- Does not allow the same callback to be registered multiple times
- Does not allow filtering of events to a specific domain
This introduces a new more general purpose domain events API
typedef enum {
VIR_DOMAIN_EVENT_ID_LIFECYCLE = 0, /* virConnectDomainEventCallback */
...more events later..
}
int virConnectDomainEventRegisterAny(virConnectPtr conn,
virDomainPtr dom, /* Optional, to filter */
int eventID,
virConnectDomainEventGenericCallback cb,
void *opaque,
virFreeCallback freecb);
int virConnectDomainEventDeregisterAny(virConnectPtr conn,
int callbackID);
Since different event types can received different data in the callback,
the API is defined with a generic callback. Specific events will each
have a custom signature for their callback. Thus when registering an
event it is neccessary to cast the callback to the generic signature
eg
int myDomainEventCallback(virConnectPtr conn,
virDomainPtr dom,
int event,
int detail,
void *opaque)
{
...
}
virConnectDomainEventRegisterAny(conn, NULL,
VIR_DOMAIN_EVENT_ID_LIFECYCLE,
VIR_DOMAIN_EVENT_CALLBACK(myDomainEventCallback)
NULL, NULL);
The VIR_DOMAIN_EVENT_CALLBACK() macro simply does a "bad" cast
to the generic signature
* include/libvirt/libvirt.h.in: Define new APIs for registering
domain events
* src/driver.h: Internal driver entry points for new events APIs
* src/libvirt.c: Wire up public API to driver API for events APIs
* src/libvirt_public.syms: Export new APIs
* src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
src/qemu/qemu_driver.c, src/remote/remote_driver.c,
src/test/test_driver.c, src/uml/uml_driver.c,
src/vbox/vbox_tmpl.c, src/xen/xen_driver.c,
src/xenapi/xenapi_driver.c: Stub out new API entries
2010-03-18 13:01:48 +00:00
|
|
|
virConnectDomainEventRegisterAny;
|
|
|
|
virConnectDomainEventDeregisterAny;
|
Introduce a new virDomainUpdateDeviceFlags public API
The current virDomainAttachDevice API can be (ab)used to change
the media of an existing CDROM/Floppy device. Going forward there
will be more devices that can be configured on the fly and overloading
virDomainAttachDevice for this is not too pleasant. This patch adds
a new virDomainUpdateDeviceFlags() explicitly just for modifying
existing devices.
* include/libvirt/libvirt.h.in: Add virDomainUpdateDeviceFlags
* src/driver.h: Internal API for virDomainUpdateDeviceFlags
* src/libvirt.c, src/libvirt_public.syms: Glue public API to
driver API
* src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
src/openvz/openvz_driver.c, src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c, src/uml/uml_driver.c,
src/vbox/vbox_tmpl.c, src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Add
stubs for new driver entry point
2010-03-22 12:23:41 +00:00
|
|
|
virDomainUpdateDeviceFlags;
|
2012-01-26 14:30:36 +00:00
|
|
|
virConnectListNWFilters;
|
|
|
|
virConnectNumOfNWFilters;
|
|
|
|
virNWFilterLookupByName;
|
|
|
|
virNWFilterLookupByUUID;
|
|
|
|
virNWFilterLookupByUUIDString;
|
|
|
|
virNWFilterFree;
|
|
|
|
virNWFilterGetName;
|
|
|
|
virNWFilterGetUUID;
|
|
|
|
virNWFilterGetUUIDString;
|
|
|
|
virNWFilterGetXMLDesc;
|
|
|
|
virNWFilterRef;
|
|
|
|
virNWFilterDefineXML;
|
|
|
|
virNWFilterUndefine;
|
|
|
|
virDomainManagedSave;
|
|
|
|
virDomainHasManagedSaveImage;
|
|
|
|
virDomainManagedSaveRemove;
|
2010-03-31 20:33:13 +00:00
|
|
|
virDomainSnapshotCreateXML;
|
|
|
|
virDomainSnapshotGetXMLDesc;
|
|
|
|
virDomainSnapshotNum;
|
|
|
|
virDomainSnapshotListNames;
|
|
|
|
virDomainSnapshotLookupByName;
|
|
|
|
virDomainHasCurrentSnapshot;
|
|
|
|
virDomainSnapshotCurrent;
|
|
|
|
virDomainRevertToSnapshot;
|
|
|
|
virDomainSnapshotDelete;
|
|
|
|
virDomainSnapshotFree;
|
2010-03-01 19:56:46 +00:00
|
|
|
} LIBVIRT_0.7.7;
|
|
|
|
|
2010-03-25 17:46:09 +00:00
|
|
|
|
Internal driver API infrastructure for virDomainGetBlockInfo
This defines the internal driver API and stubs out each driver
* src/driver.h: Define virDrvDomainGetBlockInfo signature
* src/libvirt.c, src/libvirt_public.syms: Glue public API to drivers
* src/esx/esx_driver.c, src/lxc/lxc_driver.c, src/opennebula/one_driver.c,
src/openvz/openvz_driver.c, src/phyp/phyp_driver.c,
src/test/test_driver.c, src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub out driver
2010-04-27 19:27:34 +00:00
|
|
|
LIBVIRT_0.8.1 {
|
|
|
|
global:
|
|
|
|
virDomainGetBlockInfo;
|
|
|
|
} LIBVIRT_0.8.0;
|
|
|
|
|
2010-06-10 13:28:05 +00:00
|
|
|
|
|
|
|
LIBVIRT_0.8.2 {
|
|
|
|
global:
|
|
|
|
virDomainCreateWithFlags;
|
|
|
|
} LIBVIRT_0.8.1;
|
|
|
|
|
2010-10-12 14:03:24 +00:00
|
|
|
LIBVIRT_0.8.5 {
|
|
|
|
global:
|
|
|
|
virDomainSetMemoryParameters;
|
|
|
|
virDomainGetMemoryParameters;
|
2010-09-24 22:48:45 +00:00
|
|
|
virDomainGetVcpusFlags;
|
|
|
|
virDomainSetVcpusFlags;
|
2010-10-12 14:03:24 +00:00
|
|
|
} LIBVIRT_0.8.2;
|
|
|
|
|
Introduce a virDomainOpenConsole API
To enable virsh console (or equivalent) to be used remotely
it is necessary to provide remote access to the /dev/pts/XXX
pseudo-TTY associated with the console/serial/parallel device
in the guest. The virStream API provide a bi-directional I/O
stream capability that can be used for this purpose. This
patch thus introduces a virDomainOpenConsole API that uses
the stream APIs.
* src/libvirt.c, src/libvirt_public.syms,
include/libvirt/libvirt.h.in, src/driver.h: Define the
new virDomainOpenConsole API
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c,
src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub
API entry point
2010-07-23 12:34:31 +00:00
|
|
|
LIBVIRT_0.8.6 {
|
|
|
|
global:
|
|
|
|
virDomainOpenConsole;
|
2010-11-15 03:23:32 +00:00
|
|
|
virDomainIsUpdated;
|
Introduce a virDomainOpenConsole API
To enable virsh console (or equivalent) to be used remotely
it is necessary to provide remote access to the /dev/pts/XXX
pseudo-TTY associated with the console/serial/parallel device
in the guest. The virStream API provide a bi-directional I/O
stream capability that can be used for this purpose. This
patch thus introduces a virDomainOpenConsole API that uses
the stream APIs.
* src/libvirt.c, src/libvirt_public.syms,
include/libvirt/libvirt.h.in, src/driver.h: Define the
new virDomainOpenConsole API
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c,
src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/xen/xen_driver.c, src/xenapi/xenapi_driver.c: Stub
API entry point
2010-07-23 12:34:31 +00:00
|
|
|
} LIBVIRT_0.8.5;
|
|
|
|
|
2011-02-07 19:52:29 +00:00
|
|
|
LIBVIRT_0.8.8 {
|
|
|
|
global:
|
|
|
|
virConnectGetSysinfo;
|
|
|
|
} LIBVIRT_0.8.6;
|
|
|
|
|
2011-03-02 16:59:54 +00:00
|
|
|
LIBVIRT_0.9.0 {
|
|
|
|
global:
|
2011-02-22 05:31:57 +00:00
|
|
|
virDomainGetBlkioParameters;
|
Add public API for setting migration speed on the fly
It is possible to set a migration speed limit when starting
migration. This new API allows the speed limit to be changed
on the fly to adjust to changing conditions
* src/driver.h, src/libvirt.c, src/libvirt_public.syms,
include/libvirt/libvirt.h.in: Add virDomainMigrateSetMaxSpeed
* src/esx/esx_driver.c, src/lxc/lxc_driver.c,
src/opennebula/one_driver.c, src/openvz/openvz_driver.c,
src/phyp/phyp_driver.c, src/qemu/qemu_driver.c,
src/remote/remote_driver.c, src/test/test_driver.c,
src/uml/uml_driver.c, src/vbox/vbox_tmpl.c,
src/vmware/vmware_driver.c, src/xen/xen_driver.c,
src/libxl/libxl_driver.c: Stub new API
2011-02-17 13:57:53 +00:00
|
|
|
virDomainMigrateSetMaxSpeed;
|
2011-02-22 05:31:57 +00:00
|
|
|
virDomainSetBlkioParameters;
|
2011-03-02 08:07:48 +00:00
|
|
|
virDomainSetMemoryFlags;
|
2011-03-02 16:59:54 +00:00
|
|
|
virEventRegisterDefaultImpl;
|
|
|
|
virEventRunDefaultImpl;
|
2009-07-14 13:24:27 +00:00
|
|
|
virStorageVolDownload;
|
|
|
|
virStorageVolUpload;
|
2011-03-02 16:59:54 +00:00
|
|
|
} LIBVIRT_0.8.8;
|
|
|
|
|
2011-05-10 08:26:01 +00:00
|
|
|
LIBVIRT_0.9.2 {
|
|
|
|
global:
|
2011-05-17 21:17:14 +00:00
|
|
|
virDomainGetSchedulerParametersFlags;
|
2011-04-22 11:31:35 +00:00
|
|
|
virDomainGetState;
|
2011-05-10 08:26:01 +00:00
|
|
|
virDomainInjectNMI;
|
2011-05-17 21:17:14 +00:00
|
|
|
virDomainMigrate2;
|
|
|
|
virDomainMigrateToURI2;
|
2011-04-04 09:58:53 +00:00
|
|
|
virDomainScreenshot;
|
2011-05-17 06:20:00 +00:00
|
|
|
virDomainSetSchedulerParametersFlags;
|
2011-05-05 09:21:41 +00:00
|
|
|
virInterfaceChangeBegin;
|
|
|
|
virInterfaceChangeCommit;
|
|
|
|
virInterfaceChangeRollback;
|
2011-05-10 08:26:01 +00:00
|
|
|
} LIBVIRT_0.9.0;
|
|
|
|
|
2011-06-13 15:35:54 +00:00
|
|
|
LIBVIRT_0.9.3 {
|
|
|
|
global:
|
2011-05-24 08:28:50 +00:00
|
|
|
virDomainGetControlInfo;
|
2011-06-24 23:09:46 +00:00
|
|
|
virDomainGetVcpuPinInfo;
|
2011-06-07 09:11:12 +00:00
|
|
|
virDomainPinVcpuFlags;
|
|
|
|
virDomainSendKey;
|
2011-06-15 21:54:30 +00:00
|
|
|
virEventAddHandle;
|
|
|
|
virEventAddTimeout;
|
|
|
|
virEventRemoveHandle;
|
|
|
|
virEventRemoveTimeout;
|
|
|
|
virEventUpdateHandle;
|
|
|
|
virEventUpdateTimeout;
|
2011-06-07 00:58:47 +00:00
|
|
|
virNodeGetCPUStats;
|
2011-06-07 01:03:36 +00:00
|
|
|
virNodeGetMemoryStats;
|
2011-06-13 15:35:54 +00:00
|
|
|
} LIBVIRT_0.9.2;
|
|
|
|
|
2011-07-20 02:59:54 +00:00
|
|
|
LIBVIRT_0.9.4 {
|
|
|
|
global:
|
2011-07-06 18:10:11 +00:00
|
|
|
virDomainRestoreFlags;
|
|
|
|
virDomainSaveFlags;
|
2011-07-20 04:29:26 +00:00
|
|
|
virDomainSaveImageDefineXML;
|
|
|
|
virDomainSaveImageGetXMLDesc;
|
2011-07-20 02:59:54 +00:00
|
|
|
virDomainUndefineFlags;
|
2011-07-20 15:02:48 +00:00
|
|
|
virDomainDestroyFlags;
|
2011-07-22 05:18:06 +00:00
|
|
|
virDomainBlockJobAbort;
|
|
|
|
virDomainGetBlockJobInfo;
|
|
|
|
virDomainBlockJobSetSpeed;
|
|
|
|
virDomainBlockPull;
|
2011-07-20 02:59:54 +00:00
|
|
|
} LIBVIRT_0.9.3;
|
|
|
|
|
2011-08-26 18:10:21 +00:00
|
|
|
LIBVIRT_0.9.5 {
|
|
|
|
global:
|
2011-09-05 08:14:29 +00:00
|
|
|
virDomainBlockStatsFlags;
|
2011-09-08 11:19:25 +00:00
|
|
|
virDomainMigrateGetMaxSpeed;
|
|
|
|
virDomainSnapshotGetConnect;
|
|
|
|
virDomainSnapshotGetDomain;
|
|
|
|
virDomainSnapshotGetName;
|
2011-08-26 18:10:21 +00:00
|
|
|
} LIBVIRT_0.9.4;
|
|
|
|
|
2011-09-23 18:38:04 +00:00
|
|
|
LIBVIRT_0.9.7 {
|
|
|
|
global:
|
2011-10-21 08:00:37 +00:00
|
|
|
virDomainOpenGraphics;
|
2011-09-29 08:53:29 +00:00
|
|
|
virDomainReset;
|
2011-09-23 18:38:04 +00:00
|
|
|
virDomainSnapshotGetParent;
|
2011-09-25 01:56:26 +00:00
|
|
|
virDomainSnapshotListChildrenNames;
|
|
|
|
virDomainSnapshotNumChildren;
|
2011-09-23 18:38:04 +00:00
|
|
|
} LIBVIRT_0.9.5;
|
|
|
|
|
2011-09-22 11:47:07 +00:00
|
|
|
LIBVIRT_0.9.8 {
|
|
|
|
global:
|
2011-09-23 06:47:59 +00:00
|
|
|
virConnectIsAlive;
|
2011-09-22 11:47:07 +00:00
|
|
|
virConnectSetKeepAlive;
|
2011-11-29 09:59:15 +00:00
|
|
|
virDomainBlockResize;
|
2011-11-15 09:02:43 +00:00
|
|
|
virDomainGetBlockIoTune;
|
|
|
|
virDomainSetBlockIoTune;
|
|
|
|
virNodeSuspendForDuration;
|
2011-09-22 11:47:07 +00:00
|
|
|
} LIBVIRT_0.9.7;
|
|
|
|
|
2011-12-20 08:35:00 +00:00
|
|
|
LIBVIRT_0.9.9 {
|
|
|
|
global:
|
2011-12-29 07:33:16 +00:00
|
|
|
virDomainGetInterfaceParameters;
|
2012-01-02 21:35:12 +00:00
|
|
|
virDomainGetNumaParameters;
|
2011-12-29 07:33:16 +00:00
|
|
|
virDomainSetInterfaceParameters;
|
2012-01-02 21:35:12 +00:00
|
|
|
virDomainSetNumaParameters;
|
2011-12-20 08:35:00 +00:00
|
|
|
} LIBVIRT_0.9.8;
|
|
|
|
|
2011-10-05 17:31:55 +00:00
|
|
|
LIBVIRT_0.9.10 {
|
|
|
|
global:
|
block rebase: add new API virDomainBlockRebase
Qemu is adding the ability to do a partial rebase. That is, given:
base <- intermediate <- current
virDomainBlockPull will produce:
current
but qemu now has the ability to leave base in the chain, to produce:
base <- current
Note that current qemu can only do a forward merge, and only with
the current image as the destination, which is fully described by
this API without flags. But in the future, it may be possible to
enhance this API for additional scenarios by using flags:
Merging the current image back into a previous image (that is,
undoing a live snapshot), could be done by passing base as the
destination and flags with a bit requesting a backward merge.
Merging any other part of the image chain, whether forwards (the
backing image contents are pulled into the newer file) or backwards
(the deltas recorded in the newer file are merged back into the
backing file), could also be done by passing a new flag that says
that base should be treated as an XML snippet rather than an
absolute path name, where the XML could then supply the additional
instructions of which part of the image chain is being merged into
any other part.
* include/libvirt/libvirt.h.in (virDomainBlockRebase): New
declaration.
* src/libvirt.c (virDomainBlockRebase): Implement it.
* src/libvirt_public.syms (LIBVIRT_0.9.10): Export it.
* src/driver.h (virDrvDomainBlockRebase): New driver callback.
* src/rpc/gendispatch.pl (long_legacy): Add exemption.
* docs/apibuild.py (long_legacy_functions): Likewise.
2012-02-01 04:19:51 +00:00
|
|
|
virDomainBlockRebase;
|
2012-01-28 06:20:28 +00:00
|
|
|
virDomainGetCPUStats;
|
2012-01-31 06:41:53 +00:00
|
|
|
virDomainGetDiskErrors;
|
2012-02-01 13:03:50 +00:00
|
|
|
virDomainGetMetadata;
|
2012-01-28 06:20:28 +00:00
|
|
|
virDomainPMSuspendForDuration;
|
2012-02-01 13:03:50 +00:00
|
|
|
virDomainSetMetadata;
|
2011-10-05 17:31:55 +00:00
|
|
|
virDomainShutdownFlags;
|
2012-01-27 05:29:56 +00:00
|
|
|
virStorageVolResize;
|
2012-01-09 16:05:03 +00:00
|
|
|
virStorageVolWipePattern;
|
2011-10-05 17:31:55 +00:00
|
|
|
} LIBVIRT_0.9.9;
|
2012-01-09 16:05:03 +00:00
|
|
|
|
2012-02-10 11:40:52 +00:00
|
|
|
LIBVIRT_0.9.11 {
|
|
|
|
global:
|
|
|
|
virDomainPMWakeup;
|
|
|
|
} LIBVIRT_0.9.10;
|
|
|
|
|
2012-06-08 16:28:55 +00:00
|
|
|
LIBVIRT_0.9.13 {
|
|
|
|
global:
|
2012-05-18 15:22:02 +00:00
|
|
|
virConnectListAllDomains;
|
2012-05-23 16:40:50 +00:00
|
|
|
virDomainListAllSnapshots;
|
snapshot: new query APIs
Right now, starting from just a virDomainSnapshotPtr, and wanting to
know if it is the current snapshot for its respective domain, you have
to use virDomainSnapshotGetDomain(), then virDomainSnapshotCurrent(),
then compare the two names returned by virDomainSnapshotGetName().
It is a bit easier if we can directly query this information from the
snapshot itself.
Right now, it is possible to filter a snapshot listing based on
whether snapshots have metadata that would prevent domain deletion,
but the only way to learn if an individual snapshot has metadata is
to see if that snapshot appears in the list returned by a listing.
Additionally, I hope to expand the qemu driver in a future patch to
use qemu-img to reconstruct snapshot XML corresponding to internal
qcow2 snapshot names not otherwise tracked by libvirt (in part, so
that libvirt can guarantee that new snapshots are not created with
a name that would silently corrupt the existing portion of the qcow2
file); if I ever get that in, then it would no longer be an all-or-none
decision on whether snapshots have metadata, and becomes all the more
important to be able to directly determine that information from a
particular snapshot.
Other query functions (such as virDomainIsActive) do not have a flags
argument, but since virDomainHasCurrentSnapshot takes a flags argument,
I figured it was safer to provide a flags argument here as well.
* include/libvirt/libvirt.h.in (virDomainSnapshotIsCurrent)
(virDomainSnapshotHasMetadata): New declarations.
* src/libvirt.c (virDomainSnapshotIsCurrent)
(virDomainSnapshotHasMetadata): New functions.
* src/libvirt_public.syms (LIBVIRT_0.9.13): Export them.
* src/driver.h (virDrvDomainSnapshotIsCurrent)
(virDrvDomainSnapshotHasMetadata): New driver callbacks.
2012-05-23 23:10:39 +00:00
|
|
|
virDomainSnapshotHasMetadata;
|
|
|
|
virDomainSnapshotIsCurrent;
|
2012-05-23 16:40:50 +00:00
|
|
|
virDomainSnapshotListAllChildren;
|
2012-06-08 16:28:55 +00:00
|
|
|
virDomainSnapshotRef;
|
|
|
|
} LIBVIRT_0.9.11;
|
|
|
|
|
2012-08-01 17:00:35 +00:00
|
|
|
LIBVIRT_0.10.0 {
|
2012-07-10 07:34:23 +00:00
|
|
|
global:
|
|
|
|
virDomainGetHostname;
|
2012-07-19 10:01:07 +00:00
|
|
|
virConnectRegisterCloseCallback;
|
|
|
|
virConnectUnregisterCloseCallback;
|
2012-08-15 22:10:39 +00:00
|
|
|
virDomainGetSecurityLabelList;
|
2012-08-21 09:18:35 +00:00
|
|
|
virDomainPinEmulator;
|
|
|
|
virDomainGetEmulatorPinInfo;
|
2012-07-10 07:34:23 +00:00
|
|
|
} LIBVIRT_0.9.13;
|
|
|
|
|
2012-09-04 15:16:24 +00:00
|
|
|
LIBVIRT_0.10.2 {
|
|
|
|
global:
|
2012-09-04 16:10:15 +00:00
|
|
|
virConnectListAllInterfaces;
|
2012-09-04 15:55:15 +00:00
|
|
|
virConnectListAllNetworks;
|
2012-09-13 06:54:09 +00:00
|
|
|
virConnectListAllNodeDevices;
|
2012-09-05 06:02:03 +00:00
|
|
|
virConnectListAllNWFilters;
|
2012-09-14 08:38:48 +00:00
|
|
|
virConnectListAllSecrets;
|
2012-09-04 15:16:24 +00:00
|
|
|
virConnectListAllStoragePools;
|
blockjob: add virDomainBlockCommit
A block commit moves data in the opposite direction of block pull.
Block pull reduces the chain length by dropping backing files after
data has been pulled into the top overlay, and is always safe; block
commit reduces the chain length by dropping overlays after data has
been committed into the backing file, and any files that depended
on base but not on top are invalidated at any point where they have
unallocated data that is now pointing to changed contents in base.
Both directions are useful, however: a qcow2 layer that is more than
50% allocated will typically be faster with a pull operation, while
a qcow2 layer with less than 50% allocation will be faster as a
commit operation. Committing across multiple layers can be more
efficient than repeatedly committing one layer at a time, but
requires extra support from the hypervisor.
This API matches Jeff Cody's proposed qemu command 'block-commit':
https://lists.gnu.org/archive/html/qemu-devel/2012-09/msg02226.html
Jeff's command is still in the works for qemu 1.3, and may gain
further enhancements, such as the ability to control on-error
handling (it will be comparable to the error handling Paolo is
adding to 'drive-mirror', so a similar solution will be needed
when I finally propose virDomainBlockCopy with more functionality
than the basics supported by virDomainBlockRebase). However, even
without qemu support, this API will be useful for _offline_ block
commits, by wrapping qemu-img calls and turning them into a block
job, so this API is worth committing now.
For some examples of how this will be implemented, all starting
with the chain: base <- snap1 <- snap2 <- active
+ These are equivalent:
virDomainBlockCommit(dom, disk, NULL, NULL, 0, 0)
virDomainBlockCommit(dom, disk, NULL, "active", 0, 0)
virDomainBlockCommit(dom, disk, "base", NULL, 0, 0)
virDomainBlockCommit(dom, disk, "base", "active", 0, 0)
but cannot be implemented for online qemu with round 1 of
Jeff's patches; and for offline images, it would require
three back-to-back qemu-img invocations unless qemu-img
is patched to allow more efficient multi-layer commits;
the end result would be 'base' as the active disk with
contents from all three other files, where 'snap1' and
'snap2' are invalid right away, and 'active' is invalid
once any further changes to 'base' are made.
+ These are equivalent:
virDomainBlockCommit(dom, disk, "snap2", NULL, 0, 0)
virDomainBlockCommit(dom, disk, NULL, NULL, 0, _SHALLOW)
they cannot be implemented for online qemu, but for offline,
it is a matter of 'qemu-img commit active', so that 'snap2'
is now the active disk with contents formerly in 'active'.
+ Similarly:
virDomainBlockCommit(dom, disk, "snap2", NULL, 0, _DELETE)
for an offline domain will merge 'active' into 'snap2', then
delete 'active' to avoid leaving a potentially invalid file
around.
+ This version:
virDomainBlockCommit(dom, disk, NULL, "snap2", 0, _SHALLOW)
can be implemented online with 'block-commit' passing a base of
snap1 and a top of snap2; and can be implemented offline by
'qemu-img commit snap2' followed by 'qemu-img rebase -u
-b snap1 active'
* include/libvirt/libvirt.h.in (virDomainBlockCommit): New API.
* src/libvirt.c (virDomainBlockCommit): Implement it.
* src/libvirt_public.syms (LIBVIRT_0.10.2): Export it.
* src/driver.h (virDrvDomainBlockCommit): New driver callback.
* docs/apibuild.py (CParser.parseSignature): Add exception.
2012-09-17 17:56:27 +00:00
|
|
|
virDomainBlockCommit;
|
2012-08-20 03:35:47 +00:00
|
|
|
virNetworkUpdate;
|
2012-09-14 14:42:14 +00:00
|
|
|
virNodeGetMemoryParameters;
|
|
|
|
virNodeSetMemoryParameters;
|
2012-09-04 15:32:53 +00:00
|
|
|
virStoragePoolListAllVolumes;
|
2012-09-04 15:16:24 +00:00
|
|
|
} LIBVIRT_0.10.0;
|
|
|
|
|
2012-10-23 20:34:53 +00:00
|
|
|
LIBVIRT_1.0.0 {
|
|
|
|
global:
|
|
|
|
virNodeGetCPUMap;
|
|
|
|
} LIBVIRT_0.10.2;
|
|
|
|
|
2012-11-20 15:43:56 +00:00
|
|
|
LIBVIRT_1.0.1 {
|
|
|
|
global:
|
|
|
|
virDomainFSTrim;
|
2011-11-15 15:13:05 +00:00
|
|
|
virDomainSendProcessSignal;
|
2012-11-20 15:43:56 +00:00
|
|
|
} LIBVIRT_1.0.0;
|
|
|
|
|
2012-12-13 16:24:16 +00:00
|
|
|
LIBVIRT_1.0.2 {
|
|
|
|
global:
|
|
|
|
virDomainOpenChannel;
|
2013-01-15 13:51:45 +00:00
|
|
|
virTypedParamsAddBoolean;
|
|
|
|
virTypedParamsAddDouble;
|
|
|
|
virTypedParamsAddFromString;
|
|
|
|
virTypedParamsAddInt;
|
|
|
|
virTypedParamsAddLLong;
|
|
|
|
virTypedParamsAddString;
|
|
|
|
virTypedParamsAddUInt;
|
|
|
|
virTypedParamsAddULLong;
|
2013-01-15 23:42:35 +00:00
|
|
|
virTypedParamsClear;
|
2013-01-15 13:51:45 +00:00
|
|
|
virTypedParamsFree;
|
|
|
|
virTypedParamsGet;
|
|
|
|
virTypedParamsGetBoolean;
|
|
|
|
virTypedParamsGetDouble;
|
|
|
|
virTypedParamsGetInt;
|
|
|
|
virTypedParamsGetLLong;
|
|
|
|
virTypedParamsGetString;
|
|
|
|
virTypedParamsGetUInt;
|
|
|
|
virTypedParamsGetULLong;
|
2012-12-13 16:24:16 +00:00
|
|
|
} LIBVIRT_1.0.1;
|
|
|
|
|
2013-02-04 13:03:09 +00:00
|
|
|
LIBVIRT_1.0.3 {
|
|
|
|
global:
|
2013-01-25 23:30:49 +00:00
|
|
|
virDomainGetJobStats;
|
2013-02-18 16:31:08 +00:00
|
|
|
virDomainMigrateGetCompressionCache;
|
|
|
|
virDomainMigrateSetCompressionCache;
|
2013-02-04 13:03:09 +00:00
|
|
|
virNodeDeviceLookupSCSIHostByWWN;
|
|
|
|
} LIBVIRT_1.0.2;
|
|
|
|
|
2013-04-24 16:56:10 +00:00
|
|
|
LIBVIRT_1.0.5 {
|
|
|
|
global:
|
|
|
|
virNodeDeviceDetachFlags;
|
|
|
|
} LIBVIRT_1.0.3;
|
|
|
|
|
2013-05-10 17:09:44 +00:00
|
|
|
LIBVIRT_1.0.6 {
|
|
|
|
global:
|
|
|
|
virGetLastErrorMessage;
|
|
|
|
} LIBVIRT_1.0.5;
|
|
|
|
|
2013-05-07 12:29:19 +00:00
|
|
|
LIBVIRT_1.1.0 {
|
|
|
|
global:
|
|
|
|
virDomainMigrate3;
|
|
|
|
virDomainMigrateToURI3;
|
|
|
|
} LIBVIRT_1.0.6;
|
|
|
|
|
2013-07-08 14:22:38 +00:00
|
|
|
LIBVIRT_1.1.1 {
|
|
|
|
global:
|
Introduce new domain create APIs to pass pre-opened FDs to LXC
With container based virt, it is useful to be able to pass
pre-opened file descriptors to the container init process.
This allows for containers to be auto-activated from incoming
socket connections, passing the active socket into the container.
To do this, introduce a pair of new APIs, virDomainCreateXMLWithFiles
and virDomainCreateWithFiles, which accept an array of file
descriptors. For the LXC driver, UNIX file descriptor passing
will be used to send them to libvirtd, which will them pass
them down to libvirt_lxc, which will then pass them to the container
init process.
This will only be implemented for LXC right now, but the design
is generic enough it could work with other hypervisors, hence
I suggest adding this to libvirt.so, rather than libvirt-lxc.so
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2013-07-09 16:12:38 +00:00
|
|
|
virDomainCreateWithFiles;
|
|
|
|
virDomainCreateXMLWithFiles;
|
2013-07-08 14:22:38 +00:00
|
|
|
virDomainSetMemoryStatsPeriod;
|
|
|
|
} LIBVIRT_1.1.0;
|
|
|
|
|
2013-09-23 09:45:58 +00:00
|
|
|
LIBVIRT_1.1.3 {
|
|
|
|
global:
|
|
|
|
virConnectGetCPUModelNames;
|
|
|
|
} LIBVIRT_1.1.1;
|
|
|
|
|
2013-12-11 10:37:58 +00:00
|
|
|
LIBVIRT_1.2.1 {
|
|
|
|
global:
|
|
|
|
virConnectNetworkEventRegisterAny;
|
|
|
|
virConnectNetworkEventDeregisterAny;
|
|
|
|
} LIBVIRT_1.1.3;
|
|
|
|
|
2014-03-23 03:51:12 +00:00
|
|
|
LIBVIRT_1.2.3 {
|
|
|
|
global:
|
|
|
|
virDomainCoreDumpWithFormat;
|
|
|
|
} LIBVIRT_1.2.1;
|
|
|
|
|
2014-05-02 00:05:48 +00:00
|
|
|
LIBVIRT_1.2.5 {
|
|
|
|
global:
|
|
|
|
virDomainFSFreeze;
|
|
|
|
virDomainFSThaw;
|
|
|
|
} LIBVIRT_1.2.3;
|
|
|
|
|
2013-12-11 10:37:58 +00:00
|
|
|
|
2009-09-15 12:24:51 +00:00
|
|
|
# .... define new API here using predicted next version number ....
|