From: "Zeeshan Ali (Khattak)" <zeeshanak(a)gnome.org>
Add wrapper for virStorageVolResize().
---
libvirt-gobject/libvirt-gobject-storage-vol.c | 27 +++++++++++++++++++++++++
libvirt-gobject/libvirt-gobject-storage-vol.h | 20 ++++++++++++++++++
libvirt-gobject/libvirt-gobject.sym | 1 +
3 files changed, 48 insertions(+), 0 deletions(-)
diff --git a/libvirt-gobject/libvirt-gobject-storage-vol.c
b/libvirt-gobject/libvirt-gobject-storage-vol.c
index 491e2e6..78ce76e 100644
--- a/libvirt-gobject/libvirt-gobject-storage-vol.c
+++ b/libvirt-gobject/libvirt-gobject-storage-vol.c
@@ -299,3 +299,30 @@ gboolean gvir_storage_vol_delete(GVirStorageVol *vol,
return TRUE;
}
+
+/**
+ * gvir_storage_vol_resize:
+ * @vol: the storage volume to resize
+ * @capacity: the new capacity of the volume
+ * @flags: (type GVirStorageVolResizeFlags): the flags
+ * @err: Return location for errors, or NULL
+ *
+ * Changes the capacity of the storage volume @vol to @capacity.
+ *
+ * Returns: #TRUE success, #FALSE otherwise
+ */
+gboolean gvir_storage_vol_resize(GVirStorageVol *vol,
+ guint64 capacity,
+ guint flags,
+ GError **err)
+{
+ if (virStorageVolResize(vol->priv->handle, capacity, flags) < 0) {
+ gvir_set_error_literal(err,
+ GVIR_STORAGE_VOL_ERROR,
+ 0,
+ "Unable to resize volume storage");
+ return FALSE;
+ }
+
+ return TRUE;
+}
diff --git a/libvirt-gobject/libvirt-gobject-storage-vol.h
b/libvirt-gobject/libvirt-gobject-storage-vol.h
index 25f683a..b425f0a 100644
--- a/libvirt-gobject/libvirt-gobject-storage-vol.h
+++ b/libvirt-gobject/libvirt-gobject-storage-vol.h
@@ -23,6 +23,7 @@
#if !defined(__LIBVIRT_GOBJECT_H__) && !defined(LIBVIRT_GOBJECT_BUILD)
#error "Only <libvirt-gobject/libvirt-gobject.h> can be included
directly."
#endif
+#include <libvirt/libvirt.h>
#ifndef __LIBVIRT_GOBJECT_STORAGE_VOL_H__
#define __LIBVIRT_GOBJECT_STORAGE_VOL_H__
@@ -65,6 +66,21 @@ typedef enum {
GVIR_STORAGE_VOL_STATE_DIR = 2, /* Directory-passthrough based volume */
} GVirStorageVolType;
+/**
+ * GVirStorageVolResizeFlags:
+ * @GVIR_STORAGE_VOL_RESIZE_NONE: No flags
+ * @GVIR_STORAGE_VOL_RESIZE_ALLOCATE: force allocation of new size
+ * @GVIR_STORAGE_VOL_RESIZE_DELTA: size is relative to current
+ * @GVIR_STORAGE_VOL_RESIZE_SHRINK: allow decrease in capacity. This combined
+ * with #GVIR_STORAGE_VOL_RESIZE_DELTA, implies a negative delta.
+ */
+typedef enum {
+ GVIR_STORAGE_VOL_RESIZE_NONE = 0,
+ GVIR_STORAGE_VOL_RESIZE_ALLOCATE = VIR_STORAGE_VOL_RESIZE_ALLOCATE,
+ GVIR_STORAGE_VOL_RESIZE_DELTA = VIR_STORAGE_VOL_RESIZE_DELTA,
+ GVIR_STORAGE_VOL_RESIZE_SHRINK = VIR_STORAGE_VOL_RESIZE_SHRINK,
+} GVirStorageVolResizeFlags;
+
typedef struct _GVirStorageVolInfo GVirStorageVolInfo;
struct _GVirStorageVolInfo
{
@@ -89,6 +105,10 @@ GVirConfigStorageVol *gvir_storage_vol_get_config(GVirStorageVol
*vol,
GError **err);
GVirStorageVolInfo *gvir_storage_vol_get_info(GVirStorageVol *vol,
GError **err);
+gboolean gvir_storage_vol_resize(GVirStorageVol *vol,
+ guint64 capacity,
+ guint flags,
+ GError **err);
G_END_DECLS
diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym
index a4f03f7..468bf65 100644
--- a/libvirt-gobject/libvirt-gobject.sym
+++ b/libvirt-gobject/libvirt-gobject.sym
@@ -126,6 +126,7 @@ LIBVIRT_GOBJECT_0.0.4 {
gvir_storage_vol_get_config;
gvir_storage_vol_get_info;
gvir_storage_vol_delete;
+ gvir_storage_vol_resize;
gvir_connection_handle_get_type;
--
1.7.7.6