[libvirt] [PATCH 4/4] GVirDomain: Add _get_has_current_snapshot

Timm Bäder mail at baedert.org
Fri Aug 8 15:07:32 UTC 2014


... which uses virDomainHasCurrentSnapshot to determine if the given
domain has a current snapshot or not.
---
 libvirt-gobject/libvirt-gobject-domain.c | 34 ++++++++++++++++++++++++++++++++
 libvirt-gobject/libvirt-gobject-domain.h |  4 ++++
 libvirt-gobject/libvirt-gobject.sym      |  1 +
 3 files changed, 39 insertions(+)

diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c
index 5399892..feac6f0 100644
--- a/libvirt-gobject/libvirt-gobject-domain.c
+++ b/libvirt-gobject/libvirt-gobject-domain.c
@@ -1686,3 +1686,37 @@ gboolean gvir_domain_fetch_snapshots_finish(GVirDomain *dom,
 
     return g_task_propagate_boolean(G_TASK(res), error);
 }
+
+
+/**
+ * gvir_domain_get_has_current_snapshot:
+ * @dom: a #GVirDomain
+ * @flags: Unused, pass 0
+ * @has_current_snapshot: (out): Will be set to %TRUE if the given domain
+ * has a current snapshot and to %FALSE otherwise.
+ * @error: (allow-none): Place-holder for error or %NULL
+ *
+ * Returns: %TRUE on success, %FALSE otherwise.
+ */
+gboolean gvir_domain_get_has_current_snapshot(GVirDomain *dom,
+                                              guint flags,
+                                              gboolean *has_current_snapshot,
+                                              GError **error) {
+    int status;
+    g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
+
+    status = virDomainHasCurrentSnapshot(dom->priv->handle,
+                                         flags);
+
+    if (status == -1) {
+        gvir_set_error(error, GVIR_DOMAIN_ERROR, 0,
+                       "Unable to check if domain `%s' has a current snapshot",
+                       gvir_domain_get_name(dom));
+        return FALSE;
+    }
+
+    *has_current_snapshot = status;
+
+    return TRUE;
+}
diff --git a/libvirt-gobject/libvirt-gobject-domain.h b/libvirt-gobject/libvirt-gobject-domain.h
index 9846375..56c80b8 100644
--- a/libvirt-gobject/libvirt-gobject-domain.h
+++ b/libvirt-gobject/libvirt-gobject-domain.h
@@ -380,6 +380,10 @@ gboolean gvir_domain_fetch_snapshots_finish(GVirDomain *dom,
                                             GAsyncResult *res,
                                             GError **error);
 
+gboolean gvir_domain_get_has_current_snapshot(GVirDomain *dom,
+                                              guint flags,
+                                              gboolean *has_current_snapshot,
+                                              GError **error);
 
 G_END_DECLS
 
diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym
index bd12239..68e9b58 100644
--- a/libvirt-gobject/libvirt-gobject.sym
+++ b/libvirt-gobject/libvirt-gobject.sym
@@ -240,6 +240,7 @@ LIBVIRT_GOBJECT_0.1.9 {
 	gvir_domain_fetch_snapshots_async;
 	gvir_domain_fetch_snapshots_finish;
 	gvir_domain_get_snapshots;
+	gvir_domain_get_has_current_snapshot;
 	gvir_domain_snapshot_delete;
 	gvir_domain_snapshot_delete_flags_get_type;
 	gvir_domain_snapshot_get_is_current;
-- 
2.0.4




More information about the libvir-list mailing list