[libvirt] [PATCH libvirt-glib] Support setting target attributes for console & channel devices

Christophe Fergeau cfergeau at redhat.com
Thu Jan 12 19:21:48 UTC 2012


On Thu, Jan 12, 2012 at 07:07:22PM +0000, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange" <berrange at redhat.com>
> 
> ---
>  libvirt-gconfig/libvirt-gconfig-domain-channel.c |   23 ++++++++++++++++++++++
>  libvirt-gconfig/libvirt-gconfig-domain-channel.h |   11 ++++++++++
>  libvirt-gconfig/libvirt-gconfig-domain-console.c |   12 +++++++++++
>  libvirt-gconfig/libvirt-gconfig-domain-console.h |   12 +++++++++++
>  libvirt-gconfig/libvirt-gconfig-object-private.h |    5 ++++
>  libvirt-gconfig/libvirt-gconfig-object.c         |   15 ++++++++++++++
>  libvirt-gconfig/libvirt-gconfig.sym              |    5 ++++
>  7 files changed, 83 insertions(+), 0 deletions(-)
> 
> diff --git a/libvirt-gconfig/libvirt-gconfig-domain-channel.c b/libvirt-gconfig/libvirt-gconfig-domain-channel.c
> index 02f8fe7..a4f9527 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain-channel.c
> +++ b/libvirt-gconfig/libvirt-gconfig-domain-channel.c
> @@ -23,6 +23,7 @@
>  #include <config.h>
>  
>  #include "libvirt-gconfig/libvirt-gconfig.h"
> +#include "libvirt-gconfig/libvirt-gconfig-private.h"
>  
>  #define GVIR_CONFIG_DOMAIN_CHANNEL_GET_PRIVATE(obj)                         \
>          (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CHANNEL, GVirConfigDomainChannelPrivate))
> @@ -68,3 +69,25 @@ GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xm
>          return NULL;
>      return GVIR_CONFIG_DOMAIN_CHANNEL(object);
>  }
> +
> +
> +void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel,
> +                                                GVirConfigDomainChannelTargetType type)
> +{
> +    g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel));
> +
> +    gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(channel),
> +                                                     "target", "type",
> +                                                     GVIR_CONFIG_TYPE_DOMAIN_CHANNEL_TARGET_TYPE,
> +                                                     type);
> +}
> +
> +
> +void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel,
> +                                                const gchar *name)
> +{
> +    g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CHANNEL(channel));
> +
> +    gvir_config_object_add_child_with_attribute(GVIR_CONFIG_OBJECT(channel),
> +                                                "target", "name", name);
> +}


_set_target_type and _set_target_name create a different <target> node when
they are called, this is probably not what we want.
Apart from this issue, the patch looks good to me.

Christophe

> diff --git a/libvirt-gconfig/libvirt-gconfig-domain-channel.h b/libvirt-gconfig/libvirt-gconfig-domain-channel.h
> index 0e48bcf..a8a3020 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain-channel.h
> +++ b/libvirt-gconfig/libvirt-gconfig-domain-channel.h
> @@ -56,12 +56,23 @@ struct _GVirConfigDomainChannelClass
>      gpointer padding[20];
>  };
>  
> +typedef enum {
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_GUESTFWD,
> +    GVIR_CONFIG_DOMAIN_CHANNEL_TARGET_VIRTIO,
> +} GVirConfigDomainChannelTargetType;
> +
>  
>  GType gvir_config_domain_channel_get_type(void);
>  GVirConfigDomainChannel *gvir_config_domain_channel_new(void);
>  GVirConfigDomainChannel *gvir_config_domain_channel_new_from_xml(const gchar *xml,
>                                                                   GError **error);
>  
> +void gvir_config_domain_channel_set_target_type(GVirConfigDomainChannel *channel,
> +                                                GVirConfigDomainChannelTargetType type);
> +void gvir_config_domain_channel_set_target_name(GVirConfigDomainChannel *channel,
> +                                                const gchar *name);
> +
> +
>  G_END_DECLS
>  
>  #endif /* __LIBVIRT_GCONFIG_DOMAIN_CHANNEL_H__ */
> diff --git a/libvirt-gconfig/libvirt-gconfig-domain-console.c b/libvirt-gconfig/libvirt-gconfig-domain-console.c
> index 03ee1a7..db97322 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain-console.c
> +++ b/libvirt-gconfig/libvirt-gconfig-domain-console.c
> @@ -23,6 +23,7 @@
>  #include <config.h>
>  
>  #include "libvirt-gconfig/libvirt-gconfig.h"
> +#include "libvirt-gconfig/libvirt-gconfig-private.h"
>  
>  #define GVIR_CONFIG_DOMAIN_CONSOLE_GET_PRIVATE(obj)                         \
>          (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CONSOLE, GVirConfigDomainConsolePrivate))
> @@ -68,3 +69,14 @@ GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xm
>          return NULL;
>      return GVIR_CONFIG_DOMAIN_CONSOLE(object);
>  }
> +
> +void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console,
> +                                                GVirConfigDomainConsoleTargetType type)
> +{
> +    g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CONSOLE(console));
> +
> +    gvir_config_object_add_child_with_attribute_enum(GVIR_CONFIG_OBJECT(console),
> +                                                     "target", "type",
> +                                                     GVIR_CONFIG_TYPE_DOMAIN_CONSOLE_TARGET_TYPE,
> +                                                     type);
> +}
> diff --git a/libvirt-gconfig/libvirt-gconfig-domain-console.h b/libvirt-gconfig/libvirt-gconfig-domain-console.h
> index 00e142a..1c735e9 100644
> --- a/libvirt-gconfig/libvirt-gconfig-domain-console.h
> +++ b/libvirt-gconfig/libvirt-gconfig-domain-console.h
> @@ -57,11 +57,23 @@ struct _GVirConfigDomainConsoleClass
>  };
>  
>  
> +typedef enum {
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_XEN,
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_SERIAL,
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_UML,
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_VIRTIO,
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_LXC,
> +    GVIR_CONFIG_DOMAIN_CONSOLE_TARGET_OPENVZ,
> +} GVirConfigDomainConsoleTargetType;
> +
>  GType gvir_config_domain_console_get_type(void);
>  GVirConfigDomainConsole *gvir_config_domain_console_new(void);
>  GVirConfigDomainConsole *gvir_config_domain_console_new_from_xml(const gchar *xml,
>                                                                   GError **error);
>  
> +void gvir_config_domain_console_set_target_type(GVirConfigDomainConsole *console,
> +                                                GVirConfigDomainConsoleTargetType type);
> +
>  G_END_DECLS
>  
>  #endif /* __LIBVIRT_GCONFIG_DOMAIN_CONSOLE_H__ */
> diff --git a/libvirt-gconfig/libvirt-gconfig-object-private.h b/libvirt-gconfig/libvirt-gconfig-object-private.h
> index 0c0c44f..6d01e26 100644
> --- a/libvirt-gconfig/libvirt-gconfig-object-private.h
> +++ b/libvirt-gconfig/libvirt-gconfig-object-private.h
> @@ -59,6 +59,11 @@ void gvir_config_object_add_child_with_attribute(GVirConfigObject *object,
>                                                   const char *child_name,
>                                                   const char *attr_name,
>                                                   const char *attr_value);
> +void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object,
> +                                                      const char *child_name,
> +                                                      const char *attr_name,
> +                                                      GType attr_type,
> +                                                      unsigned int attr_value);
>  GVirConfigObject *gvir_config_object_replace_child(GVirConfigObject *object,
>                                                     const char *child_name);
>  void gvir_config_object_replace_child_with_attribute(GVirConfigObject *object,
> diff --git a/libvirt-gconfig/libvirt-gconfig-object.c b/libvirt-gconfig/libvirt-gconfig-object.c
> index a3b7109..5645490 100644
> --- a/libvirt-gconfig/libvirt-gconfig-object.c
> +++ b/libvirt-gconfig/libvirt-gconfig-object.c
> @@ -419,6 +419,21 @@ gvir_config_object_add_child_with_attribute(GVirConfigObject *object,
>      g_object_unref(G_OBJECT(child));
>  }
>  
> +
> +void gvir_config_object_add_child_with_attribute_enum(GVirConfigObject *object,
> +                                                      const char *child_name,
> +                                                      const char *attr_name,
> +                                                      GType attr_type,
> +                                                      unsigned int attr_value)
> +{
> +    GVirConfigObject *child;
> +
> +    child = gvir_config_object_add_child(object, child_name);
> +    gvir_config_object_set_attribute_with_type(child, attr_name, attr_type, attr_value, NULL);
> +    g_object_unref(G_OBJECT(child));
> +}
> +
> +
>  G_GNUC_INTERNAL GVirConfigObject *
>  gvir_config_object_replace_child(GVirConfigObject *object,
>                                   const char *child_name)
> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym
> index 7cf3c3d..1c11729 100644
> --- a/libvirt-gconfig/libvirt-gconfig.sym
> +++ b/libvirt-gconfig/libvirt-gconfig.sym
> @@ -33,6 +33,9 @@ LIBVIRT_GCONFIG_0.0.3 {
>  	gvir_config_domain_channel_get_type;
>  	gvir_config_domain_channel_new;
>  	gvir_config_domain_channel_new_from_xml;
> +	gvir_config_domain_channel_set_target_type;
> +	gvir_config_domain_channel_set_target_name;
> +	gvir_config_domain_channel_target_type_get_type;
>  
>  	gvir_config_domain_chardev_get_type;
>  	gvir_config_domain_chardev_set_source;
> @@ -55,6 +58,8 @@ LIBVIRT_GCONFIG_0.0.3 {
>  	gvir_config_domain_console_get_type;
>  	gvir_config_domain_console_new;
>  	gvir_config_domain_console_new_from_xml;
> +	gvir_config_domain_console_set_target_type;
> +	gvir_config_domain_console_target_type_get_type;
>  
>  	gvir_config_domain_device_get_type;
>  
> -- 
> 1.7.7.5
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120112/04b8d5d3/attachment-0001.sig>


More information about the libvir-list mailing list