With libvirt-glib update, I've noticed a deprecation warning:
libvirt-designer-domain.c: In function 'gvir_designer_domain_add_disk_full':
libvirt-designer-domain.c:1610:9: error: 'gvir_config_domain_disk_set_driver_type'
is deprecated (declared at
/usr/include/libvirt-gconfig-1.0/libvirt-gconfig/libvirt-gconfig-domain-disk.h:145): Use
'gvir_config_domain_disk_set_driver_format' instead
[-Werror=deprecated-declarations]
gvir_config_domain_disk_set_driver_type(disk, format);
^
cc1: all warnings being treated as errors
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
libvirt-designer/Makefile.am | 1 +
libvirt-designer/libvirt-designer-domain.c | 22 +++++++++++--
libvirt-designer/libvirt-designer-internal.c | 46 ++++++++++++++++++++++++++++
libvirt-designer/libvirt-designer-internal.h | 2 ++
4 files changed, 68 insertions(+), 3 deletions(-)
create mode 100644 libvirt-designer/libvirt-designer-internal.c
diff --git a/libvirt-designer/Makefile.am b/libvirt-designer/Makefile.am
index 7becfd2..bda4240 100644
--- a/libvirt-designer/Makefile.am
+++ b/libvirt-designer/Makefile.am
@@ -25,6 +25,7 @@ DESIGNER_HEADER_FILES = \
libvirt-designer-domain.h \
$(NULL)
DESIGNER_SOURCE_FILES = \
+ libvirt-designer-internal.c \
libvirt-designer-main.c \
libvirt-designer-domain.c \
$(NULL)
diff --git a/libvirt-designer/libvirt-designer-domain.c
b/libvirt-designer/libvirt-designer-domain.c
index 848dfea..5475c79 100644
--- a/libvirt-designer/libvirt-designer-domain.c
+++ b/libvirt-designer/libvirt-designer-domain.c
@@ -1580,6 +1580,7 @@ gvir_designer_domain_add_disk_full(GVirDesignerDomain *design,
{
GVirDesignerDomainPrivate *priv = design->priv;
GVirConfigDomainDisk *disk = NULL;
+ GVirConfigDomainDiskDriver *driver = NULL;
GVirConfigDomainDiskBus bus;
gchar *target_gen = NULL;
const char *driver_name;
@@ -1602,12 +1603,27 @@ gvir_designer_domain_add_disk_full(GVirDesignerDomain *design,
break;
}
+ driver = gvir_config_domain_disk_driver_new();
+ gvir_config_domain_disk_driver_set_name(driver, driver_name);
+ if (format) {
+ int fmt;
+
+ fmt = gvir_designer_genum_get_value(GVIR_CONFIG_TYPE_DOMAIN_DISK_FORMAT,
+ format, -1);
+
+ if (fmt == -1) {
+ g_set_error(error, GVIR_DESIGNER_DOMAIN_ERROR, 0,
+ "Unknown disk format: %s", format);
+ goto error;
+ }
+
+ gvir_config_domain_disk_driver_set_format(driver, fmt);
+ }
+
disk = gvir_config_domain_disk_new();
gvir_config_domain_disk_set_type(disk, type);
gvir_config_domain_disk_set_source(disk, path);
- gvir_config_domain_disk_set_driver_name(disk, driver_name);
- if (format)
- gvir_config_domain_disk_set_driver_type(disk, format);
+ gvir_config_domain_disk_set_driver(disk, driver);
controller = gvir_designer_domain_get_preferred_disk_controller(design, NULL);
if (controller == NULL)
diff --git a/libvirt-designer/libvirt-designer-internal.c
b/libvirt-designer/libvirt-designer-internal.c
new file mode 100644
index 0000000..bdfa5d1
--- /dev/null
+++ b/libvirt-designer/libvirt-designer-internal.c
@@ -0,0 +1,46 @@
+/*
+ * libvirt-designer-internal.c: libvirt-designer helpers
+ *
+ * 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: Michal Privoznik <mprivozn(a)redhat.com>
+ */
+
+#include <config.h>
+
+#include "libvirt-designer/libvirt-designer.h"
+#include "libvirt-designer/libvirt-designer-internal.h"
+
+G_GNUC_INTERNAL int
+gvir_designer_genum_get_value(GType enum_type, const char *nick,
+ gint default_value)
+{
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+
+ g_return_val_if_fail(G_TYPE_IS_ENUM(enum_type), default_value);
+ g_return_val_if_fail(nick != NULL, default_value);
+
+ enum_class = g_type_class_ref(enum_type);
+ enum_value = g_enum_get_value_by_nick(enum_class, nick);
+ g_type_class_unref(enum_class);
+
+ if (enum_value != NULL)
+ return enum_value->value;
+
+ g_return_val_if_reached(default_value);
+}
diff --git a/libvirt-designer/libvirt-designer-internal.h
b/libvirt-designer/libvirt-designer-internal.h
index e95edfc..fd3db2c 100644
--- a/libvirt-designer/libvirt-designer-internal.h
+++ b/libvirt-designer/libvirt-designer-internal.h
@@ -24,4 +24,6 @@
#ifndef __LIBVIRT_DESIGNER_INTERNAL_H__
#define __LIBVIRT_DESIGNER_INTERNAL_H__
+int gvir_designer_genum_get_value(GType enum_type, const char *nick, gint
default_value);
+
#endif /* __LIBVIRT_DESIGNER_INTERNAL_H__ */
--
1.8.5.2