On Thu, Dec 01, 2011 at 12:02:48PM +0100, Christophe Fergeau wrote:
On Wed, Nov 30, 2011 at 08:11:30PM +0200, Zeeshan Ali (Khattak)
wrote:
> From: "Zeeshan Ali (Khattak)" <zeeshanak(a)gnome.org>
>
> ---
> libvirt-gobject/libvirt-gobject-storage-pool.c | 44 ++++++++++++++++++++++++
> libvirt-gobject/libvirt-gobject-storage-pool.h | 21 +++++++++++
> libvirt-gobject/libvirt-gobject.sym | 2 +
> 3 files changed, 67 insertions(+), 0 deletions(-)
>
> diff --git a/libvirt-gobject/libvirt-gobject-storage-pool.c
b/libvirt-gobject/libvirt-gobject-storage-pool.c
> index da8ada5..3c30a3d 100644
> --- a/libvirt-gobject/libvirt-gobject-storage-pool.c
> +++ b/libvirt-gobject/libvirt-gobject-storage-pool.c
> @@ -189,6 +189,21 @@ gvir_storage_pool_handle_free(GVirStoragePoolHandle *src)
> G_DEFINE_BOXED_TYPE(GVirStoragePoolHandle, gvir_storage_pool_handle,
> gvir_storage_pool_handle_copy, gvir_storage_pool_handle_free)
>
> +static GVirStoragePoolInfo *
> +gvir_storage_pool_info_copy(GVirStoragePoolInfo *info)
> +{
> + return g_slice_dup(GVirStoragePoolInfo, info);
> +}
> +
> +static void
> +gvir_storage_pool_info_free(GVirStoragePoolInfo *info)
> +{
> + g_slice_free(GVirStoragePoolInfo, info);
> +}
> +
> +G_DEFINE_BOXED_TYPE(GVirStoragePoolInfo, gvir_storage_pool_info,
> + gvir_storage_pool_info_copy, gvir_storage_pool_info_free)
> +
> const gchar *gvir_storage_pool_get_name(GVirStoragePool *pool)
> {
> GVirStoragePoolPrivate *priv = pool->priv;
> @@ -237,6 +252,35 @@ GVirConfigStoragePool
*gvir_storage_pool_get_config(GVirStoragePool *pool,
> return conf;
> }
>
> +/**
> + * gvir_storage_pool_get_info:
> + * @pool: the storage_pool
> + * Returns: (transfer full): the info
> + */
> +GVirStoragePoolInfo *gvir_storage_pool_get_info(GVirStoragePool *pool,
> + GError **err)
> +{
> + GVirStoragePoolPrivate *priv = pool->priv;
> + virStoragePoolInfo info;
> + GVirStoragePoolInfo *ret;
> +
> + if (virStoragePoolGetInfo(priv->handle, &info) < 0) {
> + if (err)
> + *err = gvir_error_new_literal(GVIR_STORAGE_POOL_ERROR,
> + 0,
> + "Unable to get storage pool
info");
> + return NULL;
> + }
> +
> + ret = g_slice_new(GVirStoragePoolInfo);
> + ret->state = info.state;
> + ret->capacity = info.capacity;
> + ret->allocation = info.allocation;
> + ret->available = info.available;
> +
> + return ret;
> +}
> +
Any idea if this is always non blocking, or if it can take time if the
storage is remote ?
This is always fast - it isn't updated unless you do a virStoragePoolRefresh
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|