[libvirt] [libvirt-glib 1/3] Add gvir_config_capabilities_cpu_get_model()

Add a method to get the model of the CPU from capabilities. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 6 ++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 2 ++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 10 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index f4753ff..255c4d7 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -60,6 +60,12 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); } +const gchar * +gvir_config_capabilities_cpu_get_model(GVirConfigCapabilitiesCpu *cpu) +{ + return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "model"); +} + /** * gvir_config_capabilities_cpu_add_feature: * diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index ce3613f..c6c152f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -66,6 +66,8 @@ GType gvir_config_capabilities_cpu_get_type(void); const gchar * gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu); +const gchar * +gvir_config_capabilities_cpu_get_model(GVirConfigCapabilitiesCpu *cpu); void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, GVirConfigCapabilitiesCpuFeature *feature); GList * diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 0d33fdb..86dada6 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -689,6 +689,8 @@ global: LIBVIRT_GCONFIG_0.1.9 { global: + gvir_config_capabilities_cpu_get_model; + gvir_config_capabilities_host_get_secmodels; gvir_config_capabilities_host_secmodel_get_doi; -- 1.9.3

Add a class to represent 'model' node under domain/cpu. --- libvirt-gconfig/Makefile.am | 2 + libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c | 94 ++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h | 72 +++++++++++++++++ libvirt-gconfig/libvirt-gconfig.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 5 ++ 5 files changed, 174 insertions(+) create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c create mode 100644 libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h diff --git a/libvirt-gconfig/Makefile.am b/libvirt-gconfig/Makefile.am index 8a3ff0d..8ad1cc9 100644 --- a/libvirt-gconfig/Makefile.am +++ b/libvirt-gconfig/Makefile.am @@ -37,6 +37,7 @@ GCONFIG_HEADER_FILES = \ libvirt-gconfig-domain-controller-usb.h \ libvirt-gconfig-domain-cpu.h \ libvirt-gconfig-domain-cpu-feature.h \ + libvirt-gconfig-domain-cpu-model.h \ libvirt-gconfig-domain-device.h \ libvirt-gconfig-domain-disk.h \ libvirt-gconfig-domain-disk-driver.h \ @@ -125,6 +126,7 @@ GCONFIG_SOURCE_FILES = \ libvirt-gconfig-domain-controller-usb.c \ libvirt-gconfig-domain-cpu.c \ libvirt-gconfig-domain-cpu-feature.c \ + libvirt-gconfig-domain-cpu-model.c \ libvirt-gconfig-domain-device.c \ libvirt-gconfig-domain-disk.c \ libvirt-gconfig-domain-disk-driver.c \ diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c new file mode 100644 index 0000000..514a2e3 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c @@ -0,0 +1,94 @@ +/* + * libvirt-gconfig-domain-cpu-model.c: libvirt domain CPU model + * + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelPrivate)) + +struct _GVirConfigDomainCpuModelPrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpuModel, gvir_config_domain_cpu_model, GVIR_CONFIG_TYPE_OBJECT); + +static void gvir_config_domain_cpu_model_class_init(GVirConfigDomainCpuModelClass *klass) +{ + g_type_class_add_private(klass, sizeof(GVirConfigDomainCpuModelPrivate)); +} + +static void gvir_config_domain_cpu_model_init(GVirConfigDomainCpuModel *model) +{ + g_debug("Init GVirConfigDomainCpuModel=%p", model); + + model->priv = GVIR_CONFIG_DOMAIN_CPU_MODEL_GET_PRIVATE(model); +} + +GVirConfigDomainCpuModel *gvir_config_domain_cpu_model_new(void) +{ + GVirConfigObject *object; + + object = gvir_config_object_new(GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, + "model", + NULL); + + return GVIR_CONFIG_DOMAIN_CPU_MODEL(object); +} + +GVirConfigDomainCpuModel * +gvir_config_domain_cpu_model_new_from_xml(const gchar *xml, GError **error) +{ + GVirConfigObject *object; + + object = gvir_config_object_new_from_xml(GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, + "model", + NULL, + xml, + error); + + return GVIR_CONFIG_DOMAIN_CPU_MODEL(object); +} + +void +gvir_config_domain_cpu_model_set_name(GVirConfigDomainCpuModel *model, + const gchar *name) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(model)); + + gvir_config_object_set_node_content + (GVIR_CONFIG_OBJECT(model), + NULL, + name); +} + +const gchar * +gvir_config_domain_cpu_model_get_name(GVirConfigDomainCpuModel *model) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(model), NULL); + + return gvir_config_object_get_node_content (GVIR_CONFIG_OBJECT(model), + NULL); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h new file mode 100644 index 0000000..5ae9d14 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h @@ -0,0 +1,72 @@ +/* + * libvirt-gconfig-domain-cpu-model.h: libvirt domain CPU model + * + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL (gvir_config_domain_cpu_model_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModel)) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL)) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelClass)) + +typedef struct _GVirConfigDomainCpuModel GVirConfigDomainCpuModel; +typedef struct _GVirConfigDomainCpuModelPrivate GVirConfigDomainCpuModelPrivate; +typedef struct _GVirConfigDomainCpuModelClass GVirConfigDomainCpuModelClass; + +struct _GVirConfigDomainCpuModel +{ + GVirConfigCapabilitiesCpu parent; + + GVirConfigDomainCpuModelPrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuModelClass +{ + GVirConfigCapabilitiesCpuClass parent_class; + + gpointer padding[20]; +}; + +GType gvir_config_domain_cpu_model_get_type(void); +GVirConfigDomainCpuModel *gvir_config_domain_cpu_model_new(void); +GVirConfigDomainCpuModel * +gvir_config_domain_cpu_model_new_from_xml(const gchar *xml, GError **error); + +void +gvir_config_domain_cpu_model_set_name(GVirConfigDomainCpuModel *model, + const gchar *name); +const gchar * +gvir_config_domain_cpu_model_get_name(GVirConfigDomainCpuModel *model); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index b494154..b845976 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -54,6 +54,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk-driver.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 86dada6..1ad7e18 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -702,6 +702,11 @@ global: gvir_config_domain_chardev_source_spiceport_new; gvir_config_domain_chardev_source_spiceport_new_from_xml; gvir_config_domain_chardev_source_spiceport_set_channel; + + gvir_config_domain_cpu_model_get_type; + gvir_config_domain_cpu_model_new; + gvir_config_domain_cpu_model_get_name; + gvir_config_domain_cpu_model_set_name; } LIBVIRT_GCONFIG_0.1.8; # .... define new API here using predicted next version number .... -- 1.9.3

On Fri, Jul 04, 2014 at 02:51:27PM +0100, Zeeshan Ali (Khattak) wrote:
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c new file mode 100644 index 0000000..514a2e3 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.c @@ -0,0 +1,94 @@ +/* + * libvirt-gconfig-domain-cpu-model.c: libvirt domain CPU model + * + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + */ + +#include <config.h> + +#include "libvirt-gconfig/libvirt-gconfig.h" +#include "libvirt-gconfig/libvirt-gconfig-private.h" + +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelPrivate)) + +struct _GVirConfigDomainCpuModelPrivate +{ + gboolean unused; +}; + +G_DEFINE_TYPE(GVirConfigDomainCpuModel, gvir_config_domain_cpu_model, GVIR_CONFIG_TYPE_OBJECT);
Here this inherits from GVirConfigObject...
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h new file mode 100644 index 0000000..5ae9d14 --- /dev/null +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h @@ -0,0 +1,72 @@ +/* + * libvirt-gconfig-domain-cpu-model.h: libvirt domain CPU model + * + * Copyright (C) 2014 Red Hat, Inc. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * <http://www.gnu.org/licenses/>. + * + * Authors: Zeeshan Ali <zeenix@redhat.com> + */ + +#if !defined(__LIBVIRT_GCONFIG_H__) && !defined(LIBVIRT_GCONFIG_BUILD) +#error "Only <libvirt-gconfig/libvirt-gconfig.h> can be included directly." +#endif + +#ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ +#define __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ + +G_BEGIN_DECLS + +#define GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL (gvir_config_domain_cpu_model_get_type ()) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModel)) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelClass)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL)) +#define GVIR_CONFIG_IS_DOMAIN_CPU_MODEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL)) +#define GVIR_CONFIG_DOMAIN_CPU_MODEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GVIR_CONFIG_TYPE_DOMAIN_CPU_MODEL, GVirConfigDomainCpuModelClass)) + +typedef struct _GVirConfigDomainCpuModel GVirConfigDomainCpuModel; +typedef struct _GVirConfigDomainCpuModelPrivate GVirConfigDomainCpuModelPrivate; +typedef struct _GVirConfigDomainCpuModelClass GVirConfigDomainCpuModelClass; + +struct _GVirConfigDomainCpuModel +{ + GVirConfigCapabilitiesCpu parent;
... and here from GVirConfigCapabilitiesCpu.
+ + GVirConfigDomainCpuModelPrivate *priv; + + /* Do not add fields to this struct */ +}; + +struct _GVirConfigDomainCpuModelClass +{ + GVirConfigCapabilitiesCpuClass parent_class;
(here too)
+ + gpointer padding[20]; +}; + +GType gvir_config_domain_cpu_model_get_type(void); +GVirConfigDomainCpuModel *gvir_config_domain_cpu_model_new(void); +GVirConfigDomainCpuModel * +gvir_config_domain_cpu_model_new_from_xml(const gchar *xml, GError **error); + +void +gvir_config_domain_cpu_model_set_name(GVirConfigDomainCpuModel *model, + const gchar *name); +const gchar * +gvir_config_domain_cpu_model_get_name(GVirConfigDomainCpuModel *model); + +G_END_DECLS + +#endif /* __LIBVIRT_GCONFIG_DOMAIN_CPU_MODEL_H__ */ diff --git a/libvirt-gconfig/libvirt-gconfig.h b/libvirt-gconfig/libvirt-gconfig.h index b494154..b845976 100644 --- a/libvirt-gconfig/libvirt-gconfig.h +++ b/libvirt-gconfig/libvirt-gconfig.h @@ -54,6 +54,7 @@ #include <libvirt-gconfig/libvirt-gconfig-domain-controller-usb.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu.h> #include <libvirt-gconfig/libvirt-gconfig-domain-cpu-feature.h> +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h> #include <libvirt-gconfig/libvirt-gconfig-domain-device.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk.h> #include <libvirt-gconfig/libvirt-gconfig-domain-disk-driver.h> diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 86dada6..1ad7e18 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -702,6 +702,11 @@ global: gvir_config_domain_chardev_source_spiceport_new; gvir_config_domain_chardev_source_spiceport_new_from_xml; gvir_config_domain_chardev_source_spiceport_set_channel; + + gvir_config_domain_cpu_model_get_type; + gvir_config_domain_cpu_model_new; + gvir_config_domain_cpu_model_get_name; + gvir_config_domain_cpu_model_set_name;
I believe this breaks make syntax-check (which is already broken because of https://www.redhat.com/archives/libvir-list/2014-June/msg00115.html but this is a different issue). Rest of the patch looks good. Christophe

Add a method to set model of domain CPU. --- libvirt-gconfig/libvirt-gconfig-domain-cpu.c | 11 +++++++++++ libvirt-gconfig/libvirt-gconfig-domain-cpu.h | 4 ++++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 17 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c index e7b9575..0037763 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c @@ -136,3 +136,14 @@ void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, "mode", GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, mode, NULL); } + +void gvir_config_domain_cpu_set_model(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuModel *model) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + g_return_if_fail(model == NULL || GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(model)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(cpu), + "model", + GVIR_CONFIG_OBJECT(model)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h index 7efb7eb..f7c0a93 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h @@ -28,6 +28,8 @@ #ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ #define __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ +#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h> + G_BEGIN_DECLS #define GVIR_CONFIG_TYPE_DOMAIN_CPU (gvir_config_domain_cpu_get_type ()) @@ -80,6 +82,8 @@ GVirConfigDomainCpuMatchPolicy gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu); void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, GVirConfigDomainCpuMode mode); +void gvir_config_domain_cpu_set_model(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuModel *model); GVirConfigDomainCpuMode gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 1ad7e18..072e9b8 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -703,6 +703,8 @@ global: gvir_config_domain_chardev_source_spiceport_new_from_xml; gvir_config_domain_chardev_source_spiceport_set_channel; + gvir_config_domain_cpu_set_model; + gvir_config_domain_cpu_model_get_type; gvir_config_domain_cpu_model_new; gvir_config_domain_cpu_model_get_name; -- 1.9.3

On Fri, Jul 04, 2014 at 02:51:28PM +0100, Zeeshan Ali (Khattak) wrote:
Add a method to set model of domain CPU. --- libvirt-gconfig/libvirt-gconfig-domain-cpu.c | 11 +++++++++++ libvirt-gconfig/libvirt-gconfig-domain-cpu.h | 4 ++++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 17 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c index e7b9575..0037763 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.c @@ -136,3 +136,14 @@ void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, "mode", GVIR_CONFIG_TYPE_DOMAIN_CPU_MODE, mode, NULL); } + +void gvir_config_domain_cpu_set_model(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuModel *model) +{ + g_return_if_fail(GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + g_return_if_fail(model == NULL || GVIR_CONFIG_IS_DOMAIN_CPU_MODEL(model)); + + gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(cpu), + "model", + GVIR_CONFIG_OBJECT(model)); +} diff --git a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h index 7efb7eb..f7c0a93 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-cpu.h @@ -28,6 +28,8 @@ #ifndef __LIBVIRT_GCONFIG_DOMAIN_CPU_H__ #define __LIBVIRT_GCONFIG_DOMAIN_CPU_H__
+#include <libvirt-gconfig/libvirt-gconfig-domain-cpu-model.h> + G_BEGIN_DECLS
#define GVIR_CONFIG_TYPE_DOMAIN_CPU (gvir_config_domain_cpu_get_type ()) @@ -80,6 +82,8 @@ GVirConfigDomainCpuMatchPolicy gvir_config_domain_cpu_get_match_policy(GVirConfigDomainCpu *cpu); void gvir_config_domain_cpu_set_mode(GVirConfigDomainCpu *cpu, GVirConfigDomainCpuMode mode); +void gvir_config_domain_cpu_set_model(GVirConfigDomainCpu *cpu, + GVirConfigDomainCpuModel *model); GVirConfigDomainCpuMode gvir_config_domain_cpu_get_mode(GVirConfigDomainCpu *cpu);
diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 1ad7e18..072e9b8 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -703,6 +703,8 @@ global: gvir_config_domain_chardev_source_spiceport_new_from_xml; gvir_config_domain_chardev_source_spiceport_set_channel;
+ gvir_config_domain_cpu_set_model; +
Same comment about this breaking make syntax-check, looks good otherwise.
gvir_config_domain_cpu_model_get_type; gvir_config_domain_cpu_model_new; gvir_config_domain_cpu_model_get_name; -- 1.9.3
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

This is returning a char * <capabilities> <host> <cpu> <model>xxx</model> </cpu> </host> </capabilities> while the next patch exposes the model from the /domain/cpu/model node as an actual object, why the difference? Christophe On Fri, Jul 04, 2014 at 02:51:26PM +0100, Zeeshan Ali (Khattak) wrote:
Add a method to get the model of the CPU from capabilities. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 6 ++++++ libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h | 2 ++ libvirt-gconfig/libvirt-gconfig.sym | 2 ++ 3 files changed, 10 insertions(+)
diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index f4753ff..255c4d7 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -60,6 +60,12 @@ gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu) return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "arch"); }
+const gchar * +gvir_config_capabilities_cpu_get_model(GVirConfigCapabilitiesCpu *cpu) +{ + return gvir_config_object_get_node_content(GVIR_CONFIG_OBJECT(cpu), "model"); +} + /** * gvir_config_capabilities_cpu_add_feature: * diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h index ce3613f..c6c152f 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.h @@ -66,6 +66,8 @@ GType gvir_config_capabilities_cpu_get_type(void);
const gchar * gvir_config_capabilities_cpu_get_arch(GVirConfigCapabilitiesCpu *cpu); +const gchar * +gvir_config_capabilities_cpu_get_model(GVirConfigCapabilitiesCpu *cpu); void gvir_config_capabilities_cpu_add_feature(GVirConfigCapabilitiesCpu *cpu, GVirConfigCapabilitiesCpuFeature *feature); GList * diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 0d33fdb..86dada6 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -689,6 +689,8 @@ global:
LIBVIRT_GCONFIG_0.1.9 { global: + gvir_config_capabilities_cpu_get_model; + gvir_config_capabilities_host_get_secmodels;
gvir_config_capabilities_host_secmodel_get_doi; -- 1.9.3
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Mon, Jul 7, 2014 at 12:09 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
This is returning a char * <capabilities> <host> <cpu> <model>xxx</model> </cpu> </host> </capabilities> while the next patch exposes the model from the /domain/cpu/model node as an actual object, why the difference?
Because /domain/cpu/model node has at least one attribute and hence a simple char * won't do there. -- Regards, Zeeshan Ali (Khattak) ________________________________________ Befriend GNOME: http://www.gnome.org/friends/

On Tue, Jul 08, 2014 at 07:41:55PM +0100, Zeeshan Ali (Khattak) wrote:
On Mon, Jul 7, 2014 at 12:09 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
This is returning a char * <capabilities> <host> <cpu> <model>xxx</model> </cpu> </host> </capabilities> while the next patch exposes the model from the /domain/cpu/model node as an actual object, why the difference?
Because /domain/cpu/model node has at least one attribute and hence a simple char * won't do there.
My question was the opposite one, why return a char * here instead of an actual object since you have to add it anyway? Christophe

On Mon, Jul 14, 2014 at 10:44 AM, Christophe Fergeau <cfergeau@redhat.com> wrote:
On Tue, Jul 08, 2014 at 07:41:55PM +0100, Zeeshan Ali (Khattak) wrote:
On Mon, Jul 7, 2014 at 12:09 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
This is returning a char * <capabilities> <host> <cpu> <model>xxx</model> </cpu> </host> </capabilities> while the next patch exposes the model from the /domain/cpu/model node as an actual object, why the difference?
Because /domain/cpu/model node has at least one attribute and hence a simple char * won't do there.
My question was the opposite one, why return a char * here instead of an actual object since you have to add it anyway?
Ah so you mean that I use the same object to represent both? I'm not sure that makes sense since they are part of different XMLs and therefore different entities. I'm not sure here. -- Regards, Zeeshan Ali (Khattak) ________________________________________ Befriend GNOME: http://www.gnome.org/friends/

On Mon, Jul 14, 2014 at 02:56:18PM +0100, Zeeshan Ali (Khattak) wrote:
Ah so you mean that I use the same object to represent both? I'm not sure that makes sense since they are part of different XMLs and therefore different entities. I'm not sure here.
We already have GVirConfigDomainCpu which inherits from GVirConfigCapabilitiesCpu and this is also used by GVirConfigCapabilitiesHost, I think this is a similar situation? Christophe

On Mon, Jul 14, 2014 at 6:31 PM, Christophe Fergeau <cfergeau@redhat.com> wrote:
On Mon, Jul 14, 2014 at 02:56:18PM +0100, Zeeshan Ali (Khattak) wrote:
Ah so you mean that I use the same object to represent both? I'm not sure that makes sense since they are part of different XMLs and therefore different entities. I'm not sure here.
We already have GVirConfigDomainCpu which inherits from GVirConfigCapabilitiesCpu and this is also used by GVirConfigCapabilitiesHost, I think this is a similar situation?
Hmm... yeah I guess so. -- Regards, Zeeshan Ali (Khattak) ________________________________________ Befriend GNOME: http://www.gnome.org/friends/
participants (2)
-
Christophe Fergeau
-
Zeeshan Ali (Khattak)