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;
|
2014-04-02 16:25:07 +00:00
|
|
|
virDomainGetTime;
|
|
|
|
virDomainSetTime;
|
2014-05-02 00:05:48 +00:00
|
|
|
} LIBVIRT_1.2.3;
|
|
|
|
|
2014-06-09 15:14:47 +00:00
|
|
|
LIBVIRT_1.2.6 {
|
|
|
|
global:
|
|
|
|
virNodeGetFreePages;
|
net-dhcp-leases: Implement the public APIs
Introduce 3 new APIs, virNetworkGetDHCPLeases, virNetworkGetDHCPLeasesForMAC
and virNetworkDHCPLeaseFree.
* virNetworkGetDHCPLeases: returns the dhcp leases information for a given
virtual network.
For DHCPv4, the information returned:
- Network Interface Name
- Expiry Time
- MAC address
- IAID (NULL)
- IPv4 address (with type and prefix)
- Hostname (can be NULL)
- Client ID (can be NULL)
For DHCPv6, the information returned:
- Network Interface Name
- Expiry Time
- MAC address
- IAID (can be NULL, only in rare cases)
- IPv6 address (with type and prefix)
- Hostname (can be NULL)
- Client DUID
Note: @mac, @iaid, @ipaddr, @clientid are in ASCII form, not raw bytes.
Note: @expirytime can 0, in case the lease is for infinite time.
* virNetworkGetDHCPLeasesForMAC: returns the dhcp leases information for a
given virtual network and specified MAC Address.
* virNetworkDHCPLeaseFree: allows the upper layer application to free the
network interface object conveniently.
There is no support for flags, so user is expected to pass 0 for
both the APIs.
include/libvirt/libvirt.h.in:
* Define virNetworkGetDHCPLeases
* Define virNetworkGetDHCPLeasesForMAC
* Define virNetworkDHCPLeaseFree
src/driver.h:
* Define networkGetDHCPLeases
* Define networkGetDHCPLeasesForMAC
src/libvirt.c:
* Implement virNetworkGetDHCPLeases
* Implement virNetworkGetDHCPLeasesForMAC
* Implement virNetworkDHCPLeaseFree
src/libvirt_public.syms:
* Export the new symbols
2014-06-23 21:01:49 +00:00
|
|
|
virNetworkDHCPLeaseFree;
|
|
|
|
virNetworkGetDHCPLeases;
|
2014-06-09 15:14:47 +00:00
|
|
|
} LIBVIRT_1.2.5;
|
2013-12-11 10:37:58 +00:00
|
|
|
|
2014-06-25 15:05:20 +00:00
|
|
|
LIBVIRT_1.2.7 {
|
|
|
|
global:
|
|
|
|
virConnectGetDomainCapabilities;
|
|
|
|
} LIBVIRT_1.2.6;
|
|
|
|
|
2014-08-25 15:28:14 +00:00
|
|
|
LIBVIRT_1.2.8 {
|
2014-08-26 19:11:42 +00:00
|
|
|
global:
|
|
|
|
virConnectGetAllDomainStats;
|
blockcopy: virDomainBlockCopy with XML destination, typed params
This commit (finally) adds the virDomainBlockCopy API, with the
intent that it will provide more power to the existing 'virsh
blockcopy' command.
'virsh blockcopy' was first added in Apr 2012 (v0.9.12), which
corresponds to the upstream qemu 1.2 timeframe. It was done as
a hack on top of the existing virDomainBlockRebase() API call,
for two reasons: 1) it was targetting a feature that landed first
in downstream RHEL qemu, but had not stabilized in upstream qemu
at the time (and indeed, 'drive-mirror' only landed upstream in
qemu 1.3 with slight differences to the first RHEL attempt,
and later gained further parameters like granularity and buf-size
that are also worth exposing), and 2) extending an existing API
allowed it to be backported without worrying about bumping .so
versions. A virDomainBlockCopy() API was proposed at that time
[1], but we decided not to accept it into libvirt until after
upstream qemu stabilized, and it ended up getting scrapped.
Whether or not RHEL should have attempted adding a new feature
without getting it upstream first is a debate that can be held
another day; but enough time has now elapsed that we are ready to
do the interface cleanly.
[1] https://www.redhat.com/archives/libvir-list/2012-April/msg00768.html
Delaying the creation of a clean API until now has also had a
benefit: we've only recently learned of a few shortcomings in the
original design: 1) it is unable to target a network destination
(such as a gluster volume) because it hard-coded the assumption
that the destination is a local file name. Because of all the
refactoring we've done to add virStorageSourcePtr, we are in a
better position to declare an API that parses XML describing a
host storage source as the copy destination, which was not
possible had we implemented virDomainBlockCopy as it had been
originally envisioned (although a network target will have to wait
until a later libvirt release compared to the API addition to
actually be implemented). 2) the design of using MiB/sec as the
bandwidth throttle is rather coarse; qemu is actually tuned to
bytes/second, and libvirt is preventing access to that level of
detail. A later patch will add flags to existing block job API
that can request bytes/second instead of back-compat MiB/s, but as
this is a new API, we can get it right to begin with.
At least I had the foresight to create 'virsh blockcopy' as a
separate command at the UI level (commit 1f06c00) rather than
leaking the underlying API overload of virDomainBlockRebase onto
shell users.
A further note on the bandwidth option: virTypedParameters
intentionally lacks unsigned long (since variable-width
interaction between mixed 32- vs. 64-bit client/server setups is
nasty), but we have to deal with the fact that we are interacting
with existing older code that mistakenly chose unsigned long
bandwidth at a point before we decided to prohibit it in all new
API. The typed parameter is therefore unsigned long long, but
the implementation (in a later patch) will have to do overflow
detection on 32-bit platforms, as well as capping the value to
match the LLONG_MAX>>20 cap of the existing MiB/s interfaces.
* include/libvirt/libvirt.h.in (virDomainBlockCopy): New API.
(virDomainBlockJobType, virConnectDomainEventBlockJobStatus):
Update related documentation.
* src/libvirt.c (virDomainBlockCopy): Implement it.
* src/libvirt_public.syms (LIBVIRT_1.2.8): Export it.
* src/driver.h (_virDriver): New driver callback.
Signed-off-by: Eric Blake <eblake@redhat.com>
2014-08-26 21:16:48 +00:00
|
|
|
virDomainBlockCopy;
|
2014-08-26 19:11:42 +00:00
|
|
|
virDomainListGetStats;
|
|
|
|
virDomainOpenGraphicsFD;
|
|
|
|
virDomainStatsRecordListFree;
|
2014-08-25 15:28:14 +00:00
|
|
|
} LIBVIRT_1.2.7;
|
|
|
|
|
2014-09-16 16:17:22 +00:00
|
|
|
LIBVIRT_1.2.9 {
|
|
|
|
global:
|
|
|
|
virNodeAllocPages;
|
|
|
|
} LIBVIRT_1.2.8;
|
|
|
|
|
2014-11-22 01:27:25 +00:00
|
|
|
LIBVIRT_1.2.11 {
|
|
|
|
global:
|
|
|
|
virDomainFSInfoFree;
|
|
|
|
virDomainGetFSInfo;
|
|
|
|
} LIBVIRT_1.2.9;
|
|
|
|
|
2009-09-15 12:24:51 +00:00
|
|
|
# .... define new API here using predicted next version number ....
|