[Libvir] PATCH: 1/16: public API
Daniel P. Berrange
berrange at redhat.com
Wed Feb 20 04:00:39 UTC 2008
On Tue, Feb 12, 2008 at 04:30:07AM +0000, Daniel P. Berrange wrote:
> This defines the public API for the storage pool and volume support.
> The naming of the APIs follows the example set by the network and
> domain APIs whereever the logical functions match. The main change
> since previous iterations is the addition of an explicit API for
> virStoragePoolBuild and virStoragePoolDelete, to allow formatting
> of the underlying storage, and permanent deletion. Many of the APIs
> also now have an 'unsigned int flags' param. It is also possible to
> lookup a volume directly based on its path or key without having the
> associated pool object ahead of time.
include/libvirt/libvirt.h | 195 +++++++++++++++++++++++++++++++++++++++++++
include/libvirt/libvirt.h.in | 195 +++++++++++++++++++++++++++++++++++++++++++
src/libvirt_sym.version | 45 +++++++++
3 files changed, 435 insertions(+)
diff -r 9106fd5b87fb include/libvirt/libvirt.h
--- a/include/libvirt/libvirt.h Thu Feb 14 15:40:52 2008 -0500
+++ b/include/libvirt/libvirt.h Thu Feb 14 15:58:47 2008 -0500
@@ -760,6 +760,201 @@ int virNetworkSetAutostart (virNetwork
int virNetworkSetAutostart (virNetworkPtr network,
int autostart);
+
+/**
+ * virStoragePool:
+ *
+ * a virStoragePool is a private structure representing a storage pool
+ */
+typedef struct _virStoragePool virStoragePool;
+
+/**
+ * virStoragePoolPtr:
+ *
+ * a virStoragePoolPtr is pointer to a virStoragePool private structure, this is the
+ * type used to reference a storage pool in the API.
+ */
+typedef virStoragePool *virStoragePoolPtr;
+
+
+typedef enum {
+ VIR_STORAGE_POOL_INACTIVE = 0, /* Not running */
+ VIR_STORAGE_POOL_BUILDING = 1, /* Initializing pool, not available */
+ VIR_STORAGE_POOL_RUNNING = 2, /* Running normally */
+ VIR_STORAGE_POOL_DEGRADED = 3, /* Running degraded */
+} virStoragePoolState;
+
+
+typedef enum {
+ VIR_STORAGE_POOL_BUILD_NEW = 0, /* Regular build from scratch */
+ VIR_STORAGE_POOL_BUILD_REPAIR = 1, /* Repair / reinitialize */
+ VIR_STORAGE_POOL_BUILD_RESIZE = 2 /* Extend existing pool */
+} virStoragePoolBuildFlags;
+
+typedef enum {
+ VIR_STORAGE_POOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
+ VIR_STORAGE_POOL_DELETE_ZEROED = 1, /* Clear all data to zeros (slow) */
+} virStoragePoolDeleteFlags;
+
+typedef struct _virStoragePoolInfo virStoragePoolInfo;
+
+struct _virStoragePoolInfo {
+ int state; /* virStoragePoolState flags */
+ unsigned long long capacity; /* Logical size bytes */
+ unsigned long long allocation; /* Current allocation bytes */
+ unsigned long long available; /* Remaining free space bytes */
+};
+
+typedef virStoragePoolInfo *virStoragePoolInfoPtr;
+
+
+/**
+ * virStorageVol:
+ *
+ * a virStorageVol is a private structure representing a storage volume
+ */
+typedef struct _virStorageVol virStorageVol;
+
+/**
+ * virStorageVolPtr:
+ *
+ * a virStorageVolPtr is pointer to a virStorageVol private structure, this is the
+ * type used to reference a storage volume in the API.
+ */
+typedef virStorageVol *virStorageVolPtr;
+
+
+typedef enum {
+ VIR_STORAGE_VOL_FILE = 0, /* Regular file based volumes */
+ VIR_STORAGE_VOL_BLOCK = 1, /* Block based volumes */
+} virStorageVolType;
+
+typedef enum {
+ VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
+ VIR_STORAGE_VOL_DELETE_ZEROED = 1, /* Clear all data to zeros (slow) */
+} virStorageVolDeleteFlags;
+
+typedef struct _virStorageVolInfo virStorageVolInfo;
+
+struct _virStorageVolInfo {
+ int type; /* virStorageVolType flags */
+ unsigned long long capacity; /* Logical size bytes */
+ unsigned long long allocation; /* Current allocation bytes */
+};
+
+typedef virStorageVolInfo *virStorageVolInfoPtr;
+
+/*
+ * Get connection from pool.
+ */
+virConnectPtr virStoragePoolGetConnect (virStoragePoolPtr pool);
+
+/*
+ * List active storage pools
+ */
+int virConnectNumOfStoragePools (virConnectPtr conn);
+int virConnectListStoragePools (virConnectPtr conn,
+ char **const names,
+ int maxnames);
+
+/*
+ * List inactive storage pools
+ */
+int virConnectNumOfDefinedStoragePools(virConnectPtr conn);
+int virConnectListDefinedStoragePools(virConnectPtr conn,
+ char **const names,
+ int maxnames);
+
+/*
+ * Lookup pool by name or uuid
+ */
+virStoragePoolPtr virStoragePoolLookupByName (virConnectPtr conn,
+ const char *name);
+virStoragePoolPtr virStoragePoolLookupByUUID (virConnectPtr conn,
+ const unsigned char *uuid);
+virStoragePoolPtr virStoragePoolLookupByUUIDString(virConnectPtr conn,
+ const char *uuid);
+virStoragePoolPtr virStoragePoolLookupByVolume (virStorageVolPtr vol);
+
+/*
+ * Creating/destroying pools
+ */
+virStoragePoolPtr virStoragePoolCreateXML (virConnectPtr conn,
+ const char *xmlDesc,
+ unsigned int flags);
+virStoragePoolPtr virStoragePoolDefineXML (virConnectPtr conn,
+ const char *xmlDesc,
+ unsigned int flags);
+int virStoragePoolBuild (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolUndefine (virStoragePoolPtr pool);
+int virStoragePoolCreate (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolDestroy (virStoragePoolPtr pool);
+int virStoragePoolDelete (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolFree (virStoragePoolPtr pool);
+int virStoragePoolRefresh (virStoragePoolPtr pool,
+ unsigned int flags);
+
+/*
+ * StoragePool information
+ */
+const char* virStoragePoolGetName (virStoragePoolPtr pool);
+int virStoragePoolGetUUID (virStoragePoolPtr pool,
+ unsigned char *uuid);
+int virStoragePoolGetUUIDString (virStoragePoolPtr pool,
+ char *buf);
+
+int virStoragePoolGetInfo (virStoragePoolPtr vol,
+ virStoragePoolInfoPtr info);
+
+char * virStoragePoolGetXMLDesc (virStoragePoolPtr pool,
+ unsigned int flags);
+
+int virStoragePoolGetAutostart (virStoragePoolPtr pool,
+ int *autostart);
+int virStoragePoolSetAutostart (virStoragePoolPtr pool,
+ int autostart);
+
+/*
+ * List/lookup storage volumes within a pool
+ */
+int virStoragePoolNumOfVolumes (virStoragePoolPtr pool);
+int virStoragePoolListVolumes (virStoragePoolPtr pool,
+ char **const names,
+ int maxnames);
+
+virConnectPtr virStorageVolGetConnect (virStorageVolPtr vol);
+
+/*
+ * Lookup volumes based on various attributes
+ */
+virStorageVolPtr virStorageVolLookupByName (virStoragePoolPtr pool,
+ const char *name);
+virStorageVolPtr virStorageVolLookupByKey (virConnectPtr conn,
+ const char *key);
+virStorageVolPtr virStorageVolLookupByPath (virConnectPtr conn,
+ const char *path);
+
+
+const char* virStorageVolGetName (virStorageVolPtr vol);
+const char* virStorageVolGetKey (virStorageVolPtr vol);
+
+virStorageVolPtr virStorageVolCreateXML (virStoragePoolPtr pool,
+ const char *xmldesc,
+ unsigned int flags);
+int virStorageVolDelete (virStorageVolPtr vol,
+ unsigned int flags);
+int virStorageVolFree (virStorageVolPtr vol);
+
+int virStorageVolGetInfo (virStorageVolPtr vol,
+ virStorageVolInfoPtr info);
+char * virStorageVolGetXMLDesc (virStorageVolPtr pool,
+ unsigned int flags);
+
+char * virStorageVolGetPath (virStorageVolPtr vol);
+
#ifdef __cplusplus
}
#endif
diff -r 9106fd5b87fb include/libvirt/libvirt.h.in
--- a/include/libvirt/libvirt.h.in Thu Feb 14 15:40:52 2008 -0500
+++ b/include/libvirt/libvirt.h.in Thu Feb 14 15:58:47 2008 -0500
@@ -760,6 +760,201 @@ int virNetworkSetAutostart (virNetwork
int virNetworkSetAutostart (virNetworkPtr network,
int autostart);
+
+/**
+ * virStoragePool:
+ *
+ * a virStoragePool is a private structure representing a storage pool
+ */
+typedef struct _virStoragePool virStoragePool;
+
+/**
+ * virStoragePoolPtr:
+ *
+ * a virStoragePoolPtr is pointer to a virStoragePool private structure, this is the
+ * type used to reference a storage pool in the API.
+ */
+typedef virStoragePool *virStoragePoolPtr;
+
+
+typedef enum {
+ VIR_STORAGE_POOL_INACTIVE = 0, /* Not running */
+ VIR_STORAGE_POOL_BUILDING = 1, /* Initializing pool, not available */
+ VIR_STORAGE_POOL_RUNNING = 2, /* Running normally */
+ VIR_STORAGE_POOL_DEGRADED = 3, /* Running degraded */
+} virStoragePoolState;
+
+
+typedef enum {
+ VIR_STORAGE_POOL_BUILD_NEW = 0, /* Regular build from scratch */
+ VIR_STORAGE_POOL_BUILD_REPAIR = 1, /* Repair / reinitialize */
+ VIR_STORAGE_POOL_BUILD_RESIZE = 2 /* Extend existing pool */
+} virStoragePoolBuildFlags;
+
+typedef enum {
+ VIR_STORAGE_POOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
+ VIR_STORAGE_POOL_DELETE_ZEROED = 1, /* Clear all data to zeros (slow) */
+} virStoragePoolDeleteFlags;
+
+typedef struct _virStoragePoolInfo virStoragePoolInfo;
+
+struct _virStoragePoolInfo {
+ int state; /* virStoragePoolState flags */
+ unsigned long long capacity; /* Logical size bytes */
+ unsigned long long allocation; /* Current allocation bytes */
+ unsigned long long available; /* Remaining free space bytes */
+};
+
+typedef virStoragePoolInfo *virStoragePoolInfoPtr;
+
+
+/**
+ * virStorageVol:
+ *
+ * a virStorageVol is a private structure representing a storage volume
+ */
+typedef struct _virStorageVol virStorageVol;
+
+/**
+ * virStorageVolPtr:
+ *
+ * a virStorageVolPtr is pointer to a virStorageVol private structure, this is the
+ * type used to reference a storage volume in the API.
+ */
+typedef virStorageVol *virStorageVolPtr;
+
+
+typedef enum {
+ VIR_STORAGE_VOL_FILE = 0, /* Regular file based volumes */
+ VIR_STORAGE_VOL_BLOCK = 1, /* Block based volumes */
+} virStorageVolType;
+
+typedef enum {
+ VIR_STORAGE_VOL_DELETE_NORMAL = 0, /* Delete metadata only (fast) */
+ VIR_STORAGE_VOL_DELETE_ZEROED = 1, /* Clear all data to zeros (slow) */
+} virStorageVolDeleteFlags;
+
+typedef struct _virStorageVolInfo virStorageVolInfo;
+
+struct _virStorageVolInfo {
+ int type; /* virStorageVolType flags */
+ unsigned long long capacity; /* Logical size bytes */
+ unsigned long long allocation; /* Current allocation bytes */
+};
+
+typedef virStorageVolInfo *virStorageVolInfoPtr;
+
+/*
+ * Get connection from pool.
+ */
+virConnectPtr virStoragePoolGetConnect (virStoragePoolPtr pool);
+
+/*
+ * List active storage pools
+ */
+int virConnectNumOfStoragePools (virConnectPtr conn);
+int virConnectListStoragePools (virConnectPtr conn,
+ char **const names,
+ int maxnames);
+
+/*
+ * List inactive storage pools
+ */
+int virConnectNumOfDefinedStoragePools(virConnectPtr conn);
+int virConnectListDefinedStoragePools(virConnectPtr conn,
+ char **const names,
+ int maxnames);
+
+/*
+ * Lookup pool by name or uuid
+ */
+virStoragePoolPtr virStoragePoolLookupByName (virConnectPtr conn,
+ const char *name);
+virStoragePoolPtr virStoragePoolLookupByUUID (virConnectPtr conn,
+ const unsigned char *uuid);
+virStoragePoolPtr virStoragePoolLookupByUUIDString(virConnectPtr conn,
+ const char *uuid);
+virStoragePoolPtr virStoragePoolLookupByVolume (virStorageVolPtr vol);
+
+/*
+ * Creating/destroying pools
+ */
+virStoragePoolPtr virStoragePoolCreateXML (virConnectPtr conn,
+ const char *xmlDesc,
+ unsigned int flags);
+virStoragePoolPtr virStoragePoolDefineXML (virConnectPtr conn,
+ const char *xmlDesc,
+ unsigned int flags);
+int virStoragePoolBuild (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolUndefine (virStoragePoolPtr pool);
+int virStoragePoolCreate (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolDestroy (virStoragePoolPtr pool);
+int virStoragePoolDelete (virStoragePoolPtr pool,
+ unsigned int flags);
+int virStoragePoolFree (virStoragePoolPtr pool);
+int virStoragePoolRefresh (virStoragePoolPtr pool,
+ unsigned int flags);
+
+/*
+ * StoragePool information
+ */
+const char* virStoragePoolGetName (virStoragePoolPtr pool);
+int virStoragePoolGetUUID (virStoragePoolPtr pool,
+ unsigned char *uuid);
+int virStoragePoolGetUUIDString (virStoragePoolPtr pool,
+ char *buf);
+
+int virStoragePoolGetInfo (virStoragePoolPtr vol,
+ virStoragePoolInfoPtr info);
+
+char * virStoragePoolGetXMLDesc (virStoragePoolPtr pool,
+ unsigned int flags);
+
+int virStoragePoolGetAutostart (virStoragePoolPtr pool,
+ int *autostart);
+int virStoragePoolSetAutostart (virStoragePoolPtr pool,
+ int autostart);
+
+/*
+ * List/lookup storage volumes within a pool
+ */
+int virStoragePoolNumOfVolumes (virStoragePoolPtr pool);
+int virStoragePoolListVolumes (virStoragePoolPtr pool,
+ char **const names,
+ int maxnames);
+
+virConnectPtr virStorageVolGetConnect (virStorageVolPtr vol);
+
+/*
+ * Lookup volumes based on various attributes
+ */
+virStorageVolPtr virStorageVolLookupByName (virStoragePoolPtr pool,
+ const char *name);
+virStorageVolPtr virStorageVolLookupByKey (virConnectPtr conn,
+ const char *key);
+virStorageVolPtr virStorageVolLookupByPath (virConnectPtr conn,
+ const char *path);
+
+
+const char* virStorageVolGetName (virStorageVolPtr vol);
+const char* virStorageVolGetKey (virStorageVolPtr vol);
+
+virStorageVolPtr virStorageVolCreateXML (virStoragePoolPtr pool,
+ const char *xmldesc,
+ unsigned int flags);
+int virStorageVolDelete (virStorageVolPtr vol,
+ unsigned int flags);
+int virStorageVolFree (virStorageVolPtr vol);
+
+int virStorageVolGetInfo (virStorageVolPtr vol,
+ virStorageVolInfoPtr info);
+char * virStorageVolGetXMLDesc (virStorageVolPtr pool,
+ unsigned int flags);
+
+char * virStorageVolGetPath (virStorageVolPtr vol);
+
#ifdef __cplusplus
}
#endif
diff -r 9106fd5b87fb src/libvirt_sym.version
--- a/src/libvirt_sym.version Thu Feb 14 15:40:52 2008 -0500
+++ b/src/libvirt_sym.version Thu Feb 14 15:58:47 2008 -0500
@@ -100,6 +100,49 @@
virNetworkGetAutostart;
virNetworkSetAutostart;
+ virStoragePoolGetConnect;
+ virConnectNumOfStoragePools;
+ virConnectNumOfDefinedStoragePools;
+ virConnectListStoragePools;
+ virConnectListDefinedStoragePools;
+ virConnectDiscoverStoragePools;
+ virStoragePoolLookupByName;
+ virStoragePoolLookupByUUID;
+ virStoragePoolLookupByUUIDString;
+ virStoragePoolLookupByVolume;
+ virStoragePoolCreateXML;
+ virStoragePoolDefineXML;
+ virStoragePoolUndefine;
+ virStoragePoolCreate;
+ virStoragePoolBuild;
+ virStoragePoolDestroy;
+ virStoragePoolDelete;
+ virStoragePoolRefresh;
+ virStoragePoolFree;
+ virStoragePoolGetName;
+ virStoragePoolGetUUID;
+ virStoragePoolGetUUIDString;
+ virStoragePoolGetInfo;
+ virStoragePoolGetXMLDesc;
+ virStoragePoolSetAutostart;
+ virStoragePoolGetAutostart;
+ virStoragePoolNumOfVolumes;
+ virStoragePoolListVolumes;
+
+ virConnectNumOfStorageVolumes;
+ virConnectListStorageVolumes;
+ virStorageVolLookupByName;
+ virStorageVolLookupByKey;
+ virStorageVolLookupByPath;
+ virStorageVolCreateXML;
+ virStorageVolDelete;
+ virStorageVolFree;
+ virStorageVolGetName;
+ virStorageVolGetKey;
+ virStorageVolGetInfo;
+ virStorageVolGetXMLDesc;
+ virStorageVolGetPath;
+
/* Symbols with __ are private only
for use by the libvirtd daemon.
They are not part of stable ABI
@@ -117,6 +160,8 @@
__virGetDomain;
__virGetNetwork;
+ __virGetStoragePool;
+ __virGetStorageVol;
__virEventRegisterImpl;
--
|=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=|
|=- Perl modules: http://search.cpan.org/~danberr/ -=|
|=- Projects: http://freshmeat.net/~danielpb/ -=|
|=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
More information about the libvir-list
mailing list