This is a wrapper for virDomainUpdateDeviceFlags. --- libvirt-gobject/libvirt-gobject-domain.c | 42 ++++++++++++++++++++++++++++++++ libvirt-gobject/libvirt-gobject-domain.h | 17 +++++++++++++ libvirt-gobject/libvirt-gobject.sym | 7 ++++++ 3 files changed, 66 insertions(+) diff --git a/libvirt-gobject/libvirt-gobject-domain.c b/libvirt-gobject/libvirt-gobject-domain.c index 8ade3ea..a00a042 100644 --- a/libvirt-gobject/libvirt-gobject-domain.c +++ b/libvirt-gobject/libvirt-gobject-domain.c @@ -1428,6 +1428,48 @@ GList *gvir_domain_get_devices(GVirDomain *domain, return g_list_reverse (ret); } + +/** + * gvir_domain_update_device: + * @dom: the domain + * @device: A modified device config + * @flags: bitwise-OR of #GVirDomainUpdateDeviceFlags + * @err: (allow-none):Place-holder for error or NULL + * + * Update the configuration of a device. + * + * Returns: TRUE if device was updated successfully, FALSE otherwise. + */ +gboolean +gvir_domain_update_device(GVirDomain *dom, + GVirConfigDomainDevice *device, + guint flags, + GError **err) +{ + gchar *xml; + + g_return_val_if_fail(GVIR_IS_DOMAIN(dom), FALSE); + g_return_val_if_fail(err == NULL || *err == NULL, FALSE); + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_DEVICE(device), FALSE); + + xml = gvir_config_object_to_xml(GVIR_CONFIG_OBJECT(device)); + g_return_val_if_fail(xml != NULL, FALSE); + + if (virDomainUpdateDeviceFlags(dom->priv->handle, + xml, flags) < 0) { + gvir_set_error_literal(err, GVIR_DOMAIN_ERROR, + 0, + "Failed to update device"); + g_free (xml); + + return FALSE; + } + + g_free (xml); + return TRUE; +} + + /** * gvir_domain_create_snapshot: * @dom: the domain diff --git a/libvirt-gobject/libvirt-gobject-domain.h b/libvirt-gobject/libvirt-gobject-domain.h index 6e7b10d..a622a46 100644 --- a/libvirt-gobject/libvirt-gobject-domain.h +++ b/libvirt-gobject/libvirt-gobject-domain.h @@ -158,6 +158,18 @@ typedef enum { GVIR_DOMAIN_SNAPSHOT_ATOMIC = VIR_DOMAIN_SNAPSHOT_CREATE_ATOMIC, } GVirDomainSnapshotCreateFlags; +/** + * GVirDomainUpdateDeviceFlags: + * @GVIR_DOMAIN_UPDATE_DEVICE_CURRENT: Update current domain state + * @GVIR_DOMAIN_UPDATE_DEVICE_LIVE: Update state for only active domains + * @GVIR_DOMAIN_UPDATE_DEVICE_CONFIG: Update state for persistent state only + */ +typedef enum { + GVIR_DOMAIN_UPDATE_DEVICE_CURRENT = VIR_DOMAIN_AFFECT_CURRENT, + GVIR_DOMAIN_UPDATE_DEVICE_LIVE = VIR_DOMAIN_AFFECT_LIVE, + GVIR_DOMAIN_UPDATE_DEVICE_CONFIG = VIR_DOMAIN_AFFECT_CONFIG, +} GVirDomainUpdateDeviceFlags; + typedef struct _GVirDomainInfo GVirDomainInfo; struct _GVirDomainInfo { @@ -294,6 +306,11 @@ gboolean gvir_domain_get_saved(GVirDomain *dom); GList *gvir_domain_get_devices(GVirDomain *domain, GError **err); +gboolean gvir_domain_update_device(GVirDomain *dom, + GVirConfigDomainDevice *device, + guint flags, + GError **err); + GVirDomainSnapshot * gvir_domain_create_snapshot(GVirDomain *dom, GVirConfigDomainSnapshot *custom_conf, diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym index 3a40a8a..2034e89 100644 --- a/libvirt-gobject/libvirt-gobject.sym +++ b/libvirt-gobject/libvirt-gobject.sym @@ -204,4 +204,11 @@ LIBVIRT_GOBJECT_0.1.3 { gvir_domain_wakeup_finish; } LIBVIRT_GOBJECT_0.1.2; +LIBVIRT_GOBJECT_0.1.4 { + global: + gvir_domain_update_device_flags_get_type; + gvir_domain_update_device; +} LIBVIRT_GOBJECT_0.1.3; + + # .... define new API here using predicted next version number .... -- 1.7.12.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list