They are similar to g_warning/g_critical, but also log the last
libvirt error. They are meant to be called right after a libvirt
call failed, in other cases g_warning/g_critical are still to be
used.
---
libvirt-glib/libvirt-glib-error.c | 34 +++++++++++++++++++++++
libvirt-glib/libvirt-glib-error.h | 2 ++
libvirt-glib/libvirt-glib.sym | 5 ++++
libvirt-gobject/libvirt-gobject-connection.c | 4 +--
libvirt-gobject/libvirt-gobject-domain-snapshot.c | 2 +-
libvirt-gobject/libvirt-gobject-domain.c | 14 ++--------
libvirt-gobject/libvirt-gobject-interface.c | 2 +-
libvirt-gobject/libvirt-gobject-network-filter.c | 17 ++++--------
libvirt-gobject/libvirt-gobject-network.c | 14 ++--------
libvirt-gobject/libvirt-gobject-node-device.c | 4 +--
libvirt-gobject/libvirt-gobject-secret.c | 11 ++------
libvirt-gobject/libvirt-gobject-storage-pool.c | 17 +++---------
libvirt-gobject/libvirt-gobject-storage-vol.c | 2 +-
libvirt-gobject/libvirt-gobject-stream.c | 2 +-
14 files changed, 66 insertions(+), 64 deletions(-)
diff --git a/libvirt-glib/libvirt-glib-error.c b/libvirt-glib/libvirt-glib-error.c
index 7356aed..5c97da4 100644
--- a/libvirt-glib/libvirt-glib-error.c
+++ b/libvirt-glib/libvirt-glib-error.c
@@ -257,3 +257,37 @@ void gvir_set_error_valist(GError **error,
g_free(message);
}
+
+static void
+gvir_log_valist(GLogLevelFlags level, const gchar *format, va_list args)
+{
+ gchar *message;
+ virErrorPtr verr = virGetLastError();
+
+ message = g_strdup_vprintf(format, args);
+
+ if (verr)
+ g_log(G_LOG_DOMAIN, level, "%s: %s", message, verr->message);
+ else
+ g_log(G_LOG_DOMAIN, level, "%s", message);
+
+ g_free(message);
+}
+
+void gvir_warning(const gchar *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ gvir_log_valist(G_LOG_LEVEL_WARNING, format, args);
+ va_end(args);
+}
+
+void gvir_critical(const gchar *format, ...)
+{
+ va_list args;
+
+ va_start(args, format);
+ gvir_log_valist(G_LOG_LEVEL_CRITICAL, format, args);
+ va_end(args);
+}
diff --git a/libvirt-glib/libvirt-glib-error.h b/libvirt-glib/libvirt-glib-error.h
index 9e44383..1421047 100644
--- a/libvirt-glib/libvirt-glib-error.h
+++ b/libvirt-glib/libvirt-glib-error.h
@@ -59,6 +59,8 @@ void gvir_set_error_valist(GError **error,
const gchar *format,
va_list args);
+void gvir_critical(const gchar *format, ...);
+void gvir_warning(const gchar *format, ...);
G_END_DECLS
diff --git a/libvirt-glib/libvirt-glib.sym b/libvirt-glib/libvirt-glib.sym
index 53b8907..d9ddb07 100644
--- a/libvirt-glib/libvirt-glib.sym
+++ b/libvirt-glib/libvirt-glib.sym
@@ -15,4 +15,9 @@ LIBVIRT_GLIB_0.0.7 {
*;
};
+LIBVIRT_GLIB_0.1.4 {
+ gvir_critical;
+ gvir_warning;
+} LIBVIRT_GLIB_0.0.7;
+
# .... define new API here using predicted next version number ....
diff --git a/libvirt-gobject/libvirt-gobject-connection.c
b/libvirt-gobject/libvirt-gobject-connection.c
index 9628989..e6ccfd0 100644
--- a/libvirt-gobject/libvirt-gobject-connection.c
+++ b/libvirt-gobject/libvirt-gobject-connection.c
@@ -273,7 +273,7 @@ static int domain_event_cb(virConnectPtr conn G_GNUC_UNUSED,
GVirConnectionPrivate *priv = gconn->priv;
if (virDomainGetUUIDString(dom, uuid) < 0) {
- g_warning("Failed to get domain UUID on %p", dom);
+ gvir_warning("Failed to get domain UUID on %p", dom);
return 0;
}
@@ -463,7 +463,7 @@ gboolean gvir_connection_open(GVirConnection *conn,
}
if (virConnectDomainEventRegister(priv->conn, domain_event_cb, conn, NULL) == -1)
- g_warning("Failed to register domain events, ignoring");
+ gvir_warning("Failed to register domain events, ignoring");
g_mutex_unlock(priv->lock);
diff --git a/libvirt-gobject/libvirt-gobject-domain-snapshot.c
b/libvirt-gobject/libvirt-gobject-domain-snapshot.c
index 11a073c..ce60ea0 100644
--- a/libvirt-gobject/libvirt-gobject-domain-snapshot.c
+++ b/libvirt-gobject/libvirt-gobject-domain-snapshot.c
@@ -167,7 +167,7 @@ const gchar *gvir_domain_snapshot_get_name(GVirDomainSnapshot
*snapshot)
const char *name;
if (!(name = virDomainSnapshotGetName(priv->handle))) {
- g_warning("Failed to get domain_snapshot name on %p",
priv->handle);
+ gvir_warning("Failed to get domain_snapshot name on %p",
priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-domain.c
b/libvirt-gobject/libvirt-gobject-domain.c
index 8ade3ea..9d4e232 100644
--- a/libvirt-gobject/libvirt-gobject-domain.c
+++ b/libvirt-gobject/libvirt-gobject-domain.c
@@ -135,16 +135,8 @@ static void gvir_domain_constructed(GObject *object)
G_OBJECT_CLASS(gvir_domain_parent_class)->constructed(object);
/* xxx we may want to turn this into an initable */
- if (virDomainGetUUIDString(priv->handle, priv->uuid) < 0) {
- virErrorPtr verr = virGetLastError();
- if (verr) {
- g_warning("Failed to get domain UUID on %p: %s",
- priv->handle, verr->message);
- } else {
- g_warning("Failed to get domain UUID on %p",
- priv->handle);
- }
- }
+ if (virDomainGetUUIDString(priv->handle, priv->uuid) < 0)
+ gvir_warning("Failed to get domain UUID on %p", priv->handle);
}
@@ -292,7 +284,7 @@ const gchar *gvir_domain_get_name(GVirDomain *dom)
priv = dom->priv;
if (!(name = virDomainGetName(priv->handle))) {
- g_warning("Failed to get domain name on %p", priv->handle);
+ gvir_warning("Failed to get domain name on %p", priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-interface.c
b/libvirt-gobject/libvirt-gobject-interface.c
index ecabb41..4523100 100644
--- a/libvirt-gobject/libvirt-gobject-interface.c
+++ b/libvirt-gobject/libvirt-gobject-interface.c
@@ -164,7 +164,7 @@ const gchar *gvir_interface_get_name(GVirInterface *iface)
g_return_val_if_fail(GVIR_IS_INTERFACE(iface), NULL);
if (!(name = virInterfaceGetName(iface->priv->handle))) {
- g_warning("Failed to get interface name on %p",
iface->priv->handle);
+ gvir_warning("Failed to get interface name on %p",
iface->priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-network-filter.c
b/libvirt-gobject/libvirt-gobject-network-filter.c
index 00b1ed2..54c1eeb 100644
--- a/libvirt-gobject/libvirt-gobject-network-filter.c
+++ b/libvirt-gobject/libvirt-gobject-network-filter.c
@@ -118,16 +118,9 @@ static void gvir_network_filter_constructed(GObject *object)
G_OBJECT_CLASS(gvir_network_filter_parent_class)->constructed(object);
/* xxx we may want to turn this into an initable */
- if (virNWFilterGetUUIDString(priv->handle, priv->uuid) < 0) {
- virErrorPtr verr = virGetLastError();
- if (verr) {
- g_warning("Failed to get network filter UUID on %p: %s",
- priv->handle, verr->message);
- } else {
- g_warning("Failed to get network filter UUID on %p",
- priv->handle);
- }
- }
+ if (virNWFilterGetUUIDString(priv->handle, priv->uuid) < 0)
+ gvir_warning("Failed to get network filter UUID on %p",
+ priv->handle);
}
@@ -187,8 +180,8 @@ const gchar *gvir_network_filter_get_name(GVirNetworkFilter *filter)
g_return_val_if_fail(GVIR_IS_NETWORK_FILTER(filter), NULL);
if (!(name = virNWFilterGetName(filter->priv->handle))) {
- g_warning("Failed to get network_filter name on %p",
- filter->priv->handle);
+ gvir_warning("Failed to get network_filter name on %p",
+ filter->priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-network.c
b/libvirt-gobject/libvirt-gobject-network.c
index 9625ece..0f17ecc 100644
--- a/libvirt-gobject/libvirt-gobject-network.c
+++ b/libvirt-gobject/libvirt-gobject-network.c
@@ -117,16 +117,8 @@ static void gvir_network_constructed(GObject *object)
G_OBJECT_CLASS(gvir_network_parent_class)->constructed(object);
/* xxx we may want to turn this into an initable */
- if (virNetworkGetUUIDString(priv->handle, priv->uuid) < 0) {
- virErrorPtr verr = virGetLastError();
- if (verr) {
- g_warning("Failed to get network UUID on %p: %s",
- priv->handle, verr->message);
- } else {
- g_warning("Failed to get network UUID on %p",
- priv->handle);
- }
- }
+ if (virNetworkGetUUIDString(priv->handle, priv->uuid) < 0)
+ gvir_warning("Failed to get network UUID on %p", priv->handle);
}
static void gvir_network_class_init(GVirNetworkClass *klass)
@@ -185,7 +177,7 @@ const gchar *gvir_network_get_name(GVirNetwork *network)
g_return_val_if_fail(GVIR_IS_NETWORK(network), NULL);
if (!(name = virNetworkGetName(network->priv->handle))) {
- g_warning("Failed to get network name on %p",
network->priv->handle);
+ gvir_warning("Failed to get network name on %p",
network->priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-node-device.c
b/libvirt-gobject/libvirt-gobject-node-device.c
index eb314ed..781fc5d 100644
--- a/libvirt-gobject/libvirt-gobject-node-device.c
+++ b/libvirt-gobject/libvirt-gobject-node-device.c
@@ -164,8 +164,8 @@ const gchar *gvir_node_device_get_name(GVirNodeDevice *device)
g_return_val_if_fail(GVIR_IS_NODE_DEVICE(device), NULL);
if (!(name = virNodeDeviceGetName(device->priv->handle))) {
- g_warning("Failed to get node_device name on %p",
- device->priv->handle);
+ gvir_warning("Failed to get node_device name on %p",
+ device->priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-secret.c
b/libvirt-gobject/libvirt-gobject-secret.c
index 8bfee88..01b8ed1 100644
--- a/libvirt-gobject/libvirt-gobject-secret.c
+++ b/libvirt-gobject/libvirt-gobject-secret.c
@@ -118,15 +118,8 @@ static void gvir_secret_constructed(GObject *object)
G_OBJECT_CLASS(gvir_secret_parent_class)->constructed(object);
/* xxx we may want to turn this into an initable */
- if (virSecretGetUUIDString(priv->handle, priv->uuid) < 0) {
- virErrorPtr verr = virGetLastError();
- if (verr) {
- g_warning("Failed to get secret UUID on %p: %s",
- priv->handle, verr->message);
- } else {
- g_warning("Failed to get secret UUID on %p", priv->handle);
- }
- }
+ if (virSecretGetUUIDString(priv->handle, priv->uuid) < 0)
+ gvir_warning("Failed to get secret UUID on %p", priv->handle);
}
diff --git a/libvirt-gobject/libvirt-gobject-storage-pool.c
b/libvirt-gobject/libvirt-gobject-storage-pool.c
index a09e5a7..adcdda7 100644
--- a/libvirt-gobject/libvirt-gobject-storage-pool.c
+++ b/libvirt-gobject/libvirt-gobject-storage-pool.c
@@ -128,15 +128,8 @@ static void gvir_storage_pool_constructed(GObject *object)
G_OBJECT_CLASS(gvir_storage_pool_parent_class)->constructed(object);
/* xxx we may want to turn this into an initable */
- if (virStoragePoolGetUUIDString(priv->handle, priv->uuid) < 0) {
- virErrorPtr verr = virGetLastError();
- if (verr) {
- g_warning("Failed to get storage pool UUID on %p: %s",
- priv->handle, verr->message);
- } else {
- g_warning("Failed to get storage pool UUID on %p",
priv->handle);
- }
- }
+ if (virStoragePoolGetUUIDString(priv->handle, priv->uuid) < 0)
+ gvir_warning("Failed to get storage pool UUID on %p",
priv->handle);
}
@@ -215,10 +208,8 @@ const gchar *gvir_storage_pool_get_name(GVirStoragePool *pool)
g_return_val_if_fail(GVIR_IS_STORAGE_POOL(pool), NULL);
- if (!(name = virStoragePoolGetName(pool->priv->handle))) {
- g_warning("Failed to get storage_pool name on %p",
pool->priv->handle);
- return NULL;
- }
+ if (!(name = virStoragePoolGetName(pool->priv->handle)))
+ gvir_warning("Failed to get storage_pool name on %p",
pool->priv->handle);
return name;
}
diff --git a/libvirt-gobject/libvirt-gobject-storage-vol.c
b/libvirt-gobject/libvirt-gobject-storage-vol.c
index 9256445..c7ebb45 100644
--- a/libvirt-gobject/libvirt-gobject-storage-vol.c
+++ b/libvirt-gobject/libvirt-gobject-storage-vol.c
@@ -200,7 +200,7 @@ const gchar *gvir_storage_vol_get_name(GVirStorageVol *vol)
g_return_val_if_fail(GVIR_IS_STORAGE_VOL(vol), NULL);
if (!(name = virStorageVolGetName(vol->priv->handle))) {
- g_warning("Failed to get storage_vol name on %p",
vol->priv->handle);
+ gvir_warning("Failed to get storage_vol name on %p",
vol->priv->handle);
return NULL;
}
diff --git a/libvirt-gobject/libvirt-gobject-stream.c
b/libvirt-gobject/libvirt-gobject-stream.c
index fa1a32c..f0e43d0 100644
--- a/libvirt-gobject/libvirt-gobject-stream.c
+++ b/libvirt-gobject/libvirt-gobject-stream.c
@@ -218,7 +218,7 @@ static void gvir_stream_finalize(GObject *object)
gvir_stream_update_events(self);
if (virStreamFinish(priv->handle) < 0)
- g_critical("cannot finish stream");
+ gvir_critical("cannot finish stream");
virStreamFree(priv->handle);
}
--
1.7.12.1