[libvirt] [libvirt-glib] [PATCH v3] GVirDomainSnapshot: Add gvir_domain_snapshot_delete

--- libvirt-gobject/libvirt-gobject-domain-snapshot.c | 29 +++++++++++++++++++++++ libvirt-gobject/libvirt-gobject-domain-snapshot.h | 16 +++++++++++++ libvirt-gobject/libvirt-gobject.sym | 6 +++++ 3 files changed, 51 insertions(+) diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c b/libvirt-gobject/libvirt-gobject-domain-snapshot.c index fcf70ed..f835b58 100644 --- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c +++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c @@ -205,3 +205,32 @@ GVirConfigDomainSnapshot *gvir_domain_snapshot_get_config free(xml); return conf; } + +/** + * gvir_domain_snapshot_delete: + * @snapshot: The domain snapshot + * @flags: Bitwise or of #GVirDomainSnapshotDeleteFlags + * @error: (allow-none): Place-holder for error or NULL + * + * Returns: TRUE on success, FALSE otherwise + */ +gboolean gvir_domain_snapshot_delete (GVirDomainSnapshot *snapshot, + guint flags, + GError **error) +{ + GVirDomainSnapshotPrivate *priv; + int status; + + g_return_if_fail(GVIR_IS_DOMAIN_SNAPSHOT (snapshot)); + g_return_if_fail(error == NULL || *error == NULL); + + priv = snapshot->priv; + status = virDomainSnapshotDelete(priv->handle, flags); + if (status < 0) { + gvir_set_error(error, GVIR_DOMAIN_SNAPSHOT_ERROR, 0, + "Unable to delete snapshot `%s'", + gvir_domain_snapshot_get_name(snapshot)); + return FALSE; + } + return TRUE; +} diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.h b/libvirt-gobject/libvirt-gobject-domain-snapshot.h index 5bd827c..b3ebe7f 100644 --- a/libvirt-gobject/libvirt-gobject-domain-snapshot.h +++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.h @@ -58,6 +58,18 @@ struct _GVirDomainSnapshotClass gpointer padding[20]; }; +/** + * GVirDomainSnapshotDeleteFlags: + * @GVIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN: Also delete children + * @GVIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY: Delete just metadata + * @GVIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY: Delete just children + */ +typedef enum { + GVIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN = 1, + GVIR_DOMAIN_SNAPSHOT_DELETE_METADATA_ONLY = 2, + GVIR_DOMAIN_SNAPSHOT_DELETE_CHILDREN_ONLY = 4 +} GVirDomainSnapshotDeleteFlags; + GType gvir_domain_snapshot_get_type(void); GType gvir_domain_snapshot_handle_get_type(void); @@ -69,6 +81,10 @@ GVirConfigDomainSnapshot *gvir_domain_snapshot_get_config guint flags, GError **err); +gboolean gvir_domain_snapshot_delete (GVirDomainSnapshot *snapshot, + guint flags, + GError **error); + G_END_DECLS #endif /* __LIBVIRT_GOBJECT_DOMAIN_SNAPSHOT_H__ */ diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym index f2419ac..232e63b 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -234,4 +234,10 @@ LIBVIRT_GOBJECT_0.1.5 { gvir_connection_open_read_only_finish; } LIBVIRT_GOBJECT_0.1.4; +LIBVIRT_GOBJECT_0.1.9 { + global: + gvir_domain_snapshot_delete_flags_get_type; + gvir_domain_snapshot_delete; +} LIBVIRT_GOBJECT_0.1.5; + # .... define new API here using predicted next version number .... -- 2.0.0

On Mon, Jun 02, 2014 at 04:08:51PM +0200, Timm Bäder wrote:
--- libvirt-gobject/libvirt-gobject-domain-snapshot.c | 29 +++++++++++++++++++++++ libvirt-gobject/libvirt-gobject-domain-snapshot.h | 16 +++++++++++++ libvirt-gobject/libvirt-gobject.sym | 6 +++++ 3 files changed, 51 insertions(+)
diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c b/libvirt-gobject/libvirt-gobject-domain-snapshot.c index fcf70ed..f835b58 100644 --- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c +++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c @@ -205,3 +205,32 @@ GVirConfigDomainSnapshot *gvir_domain_snapshot_get_config free(xml); return conf; } + +/** + * gvir_domain_snapshot_delete: + * @snapshot: The domain snapshot + * @flags: Bitwise or of #GVirDomainSnapshotDeleteFlags + * @error: (allow-none): Place-holder for error or NULL + * + * Returns: TRUE on success, FALSE otherwise + */ +gboolean gvir_domain_snapshot_delete (GVirDomainSnapshot *snapshot, + guint flags, + GError **error) +{ + GVirDomainSnapshotPrivate *priv; + int status; + + g_return_if_fail(GVIR_IS_DOMAIN_SNAPSHOT (snapshot)); + g_return_if_fail(error == NULL || *error == NULL);
This needs to be changed to g_return_val_if_fail
index f2419ac..232e63b 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -234,4 +234,10 @@ LIBVIRT_GOBJECT_0.1.5 { gvir_connection_open_read_only_finish; } LIBVIRT_GOBJECT_0.1.4;
+LIBVIRT_GOBJECT_0.1.9 { + global: + gvir_domain_snapshot_delete_flags_get_type; + gvir_domain_snapshot_delete; +} LIBVIRT_GOBJECT_0.1.5;
And this does not match the indentation of the rest of the file, I'll amend the commit with the diff below and push libvirt-gobject/libvirt-gobject-domain-snapshot.c | 4 ++-- libvirt-gobject/libvirt-gobject.sym | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c b/libvirt-gobject/libvirt-gobject-domain-snapshot.c index 7dd157c..7bb89f1 100644 --- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c +++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c @@ -222,8 +222,8 @@ gboolean gvir_domain_snapshot_delete (GVirDomainSnapshot *snapshot, GVirDomainSnapshotPrivate *priv; int status; - g_return_if_fail(GVIR_IS_DOMAIN_SNAPSHOT (snapshot)); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(GVIR_IS_DOMAIN_SNAPSHOT (snapshot), FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); priv = snapshot->priv; status = virDomainSnapshotDelete(priv->handle, flags); diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym index 232e63b..0fa8bfb 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -236,8 +236,8 @@ LIBVIRT_GOBJECT_0.1.5 { LIBVIRT_GOBJECT_0.1.9 { global: - gvir_domain_snapshot_delete_flags_get_type; - gvir_domain_snapshot_delete; + gvir_domain_snapshot_delete_flags_get_type; + gvir_domain_snapshot_delete; } LIBVIRT_GOBJECT_0.1.5; # .... define new API here using predicted next version number .... -- 1.9.3 Christophe

On Mon, Jun 02, 2014 at 04:08:51PM +0200, Timm Bäder wrote:
diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym index f2419ac..232e63b 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -234,4 +234,10 @@ LIBVIRT_GOBJECT_0.1.5 { gvir_connection_open_read_only_finish; } LIBVIRT_GOBJECT_0.1.4;
+LIBVIRT_GOBJECT_0.1.9 { + global: + gvir_domain_snapshot_delete_flags_get_type;
I've temporarily removed this symbol before pushing as this breaks make check, I've sent https://www.redhat.com/archives/libvir-list/2014-June/msg00115.html to fix the breakage and readd it. Christophe
participants (2)
-
Christophe Fergeau
-
Timm Bäder