[libvirt] [libvirt-glib 1/2] Wrap storage pool info API

Daniel P. Berrange berrange at redhat.com
Thu Dec 1 12:51:02 UTC 2011


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 at 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 :|




More information about the libvir-list mailing list