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 -=|