[libvirt] [libvirt-designer][PATCH 0/3] Cleanup

The first two patches are trivial, the third would require some review. Michal Privoznik (3): disk_add: Don't hardcode 'qemu' driver style: Use two blank lines between functions virtxml: Drop direct libvirt usage configure.ac | 24 +++++++++++++++++++-- examples/Makefile.am | 6 +++- examples/virtxml.c | 24 ++++++++-------------- libvirt-designer/libvirt-designer-domain.c | 30 +++++++++++++++++++++++++++- 4 files changed, 63 insertions(+), 21 deletions(-) -- 1.7.8.6

but depend on domain virt type instead. --- libvirt-designer/libvirt-designer-domain.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-) diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c index ee1dd65..1127ce7 100644 --- a/libvirt-designer/libvirt-designer-domain.c +++ b/libvirt-designer/libvirt-designer-domain.c @@ -806,6 +806,8 @@ gvir_designer_domain_add_disk_full(GVirDesignerDomain *design, GVirConfigDomainDiskBus bus; gchar *target_gen = NULL; const gchar *bus_str = NULL; + const char *driver_name; + int virt_type; GList *bus_str_list = NULL, *item = NULL; /* Guess preferred disk bus */ @@ -828,10 +830,25 @@ gvir_designer_domain_add_disk_full(GVirDesignerDomain *design, g_clear_error(error); + virt_type = gvir_config_domain_get_virt_type(priv->config); + switch (virt_type) { + case GVIR_CONFIG_DOMAIN_VIRT_QEMU: + case GVIR_CONFIG_DOMAIN_VIRT_KQEMU: + case GVIR_CONFIG_DOMAIN_VIRT_KVM: + driver_name = "qemu"; + break; + /* add new virt type here */ + default: + g_set_error(error, GVIR_DESIGNER_DOMAIN_ERROR, 0, + "Unsupported virt type %d", virt_type); + goto error; + break; + } + 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, "qemu"); + gvir_config_domain_disk_set_driver_name(disk, driver_name); if (format) gvir_config_domain_disk_set_driver_type(disk, format); if (g_str_equal(bus_str, "ide")) { -- 1.7.8.6

--- libvirt-designer/libvirt-designer-domain.c | 11 +++++++++++ 1 files changed, 11 insertions(+), 0 deletions(-) diff --git a/libvirt-designer/libvirt-designer-domain.c b/libvirt-designer/libvirt-designer-domain.c index 1127ce7..de69241 100644 --- a/libvirt-designer/libvirt-designer-domain.c +++ b/libvirt-designer/libvirt-designer-domain.c @@ -677,6 +677,7 @@ cleanup: return ret; } + static GList * gvir_designer_domain_get_supported_disk_bus_types(GVirDesignerDomain *design) { @@ -708,6 +709,7 @@ cleanup: return ret; } + static OsinfoDeviceLink * gvir_designer_domain_get_preferred_device(GVirDesignerDomain *design, const char *class, @@ -742,6 +744,7 @@ cleanup: return dev_link; } + static const gchar * gvir_designer_domain_get_preferred_disk_bus_type(GVirDesignerDomain *design, GError **error) @@ -762,6 +765,7 @@ gvir_designer_domain_get_preferred_disk_bus_type(GVirDesignerDomain *design, return ret; } + static gchar * gvir_designer_domain_next_disk_target(GVirDesignerDomain *design, GVirConfigDomainDiskBus bus) @@ -793,6 +797,7 @@ gvir_designer_domain_next_disk_target(GVirDesignerDomain *design, return ret; } + static GVirConfigDomainDisk * gvir_designer_domain_add_disk_full(GVirDesignerDomain *design, GVirConfigDomainDiskType type, @@ -890,6 +895,8 @@ error: g_object_unref(disk); return NULL; } + + /** * gvir_designer_domain_add_disk_file: * @design: (transfer none): the domain designer instance @@ -919,6 +926,7 @@ GVirConfigDomainDisk *gvir_designer_domain_add_disk_file(GVirDesignerDomain *des return ret; } + /** * gvir_designer_domain_add_disk_device: * @design: (transfer none): the domain designer instance @@ -946,6 +954,7 @@ GVirConfigDomainDisk *gvir_designer_domain_add_disk_device(GVirDesignerDomain *d return ret; } + static const gchar * gvir_designer_domain_get_preferred_nic_model(GVirDesignerDomain *design, GError **error) @@ -965,6 +974,7 @@ cleanup: return ret; } + static GVirConfigDomainInterface * gvir_designer_domain_add_interface_full(GVirDesignerDomain *design, GVirDesignerDomainNICType type, @@ -997,6 +1007,7 @@ cleanup: return ret; } + /** * gvir_designer_domain_add_interface_network: * @design: (transfer none): the domain designer instance -- 1.7.8.6

and switch to libvirt-gobject when connecting to libvirtd and fetching capabilities. --- configure.ac | 24 +++++++++++++++++++++--- examples/Makefile.am | 6 ++++-- examples/virtxml.c | 24 +++++++++--------------- 3 files changed, 34 insertions(+), 20 deletions(-) diff --git a/configure.ac b/configure.ac index c4f4383..c214809 100644 --- a/configure.ac +++ b/configure.ac @@ -12,8 +12,8 @@ AM_SILENT_RULES([yes]) LIBOSINFO_REQUIRED=0.0.5 LIBVIRT_GCONFIG_REQUIRED=0.0.9 +LIBVIRT_GOBJECT_REQUIRED=0.0.8 GOBJECT_INTROSPECTION_REQUIRED=0.10.8 -LIBVIRT_REQUIRED=0.9.0 LIBVIRT_DESIGNER_MAJOR_VERSION=`echo $VERSION | awk -F. '{print $1}'` LIBVIRT_DESIGNER_MINOR_VERSION=`echo $VERSION | awk -F. '{print $2}'` @@ -46,7 +46,6 @@ LIBVIRT_DESIGNER_COMPILE_WARNINGS PKG_CHECK_MODULES(LIBOSINFO, libosinfo-1.0 >= $LIBOSINFO_REQUIRED) PKG_CHECK_MODULES(LIBVIRT_GCONFIG, libvirt-gconfig-1.0 >= $LIBVIRT_GCONFIG_REQUIRED) -PKG_CHECK_MODULES(LIBVIRT, libvirt >= $LIBVIRT_REQUIRED) LIBVIRT_DESIGNER_GETTEXT LIBVIRT_DESIGNER_GTK_MISC @@ -54,6 +53,23 @@ LIBVIRT_DESIGNER_WIN32 LIBVIRT_DESIGNER_COVERAGE LIBVIRT_DESIGNER_INTROSPECTION +AC_ARG_ENABLE([examples], + AS_HELP_STRING([--enable-examples], [enable virtxml example. Default is check, meaning it is enabled as long as libvirt-gobject is installed]), + [],[enable_examples=check]) + +if test "x$enable_examples" != "xno" ; then + PKG_CHECK_MODULES([LIBVIRT_GOBJECT], + [libvirt-gobject-1.0 >= $LIBVIRT_GOBJECT_REQUIRED], + [enable_examples=yes], + [ + if test "x$enable_examples" = "xcheck" ; then + enable_examples=no + else + AC_MSG_ERROR([Cannot enable examples because libvirt-gobject is not available]) + fi + ]) +fi +AM_CONDITIONAL(WITH_EXAMPLES, [test "x$enable_examples" = "xyes"]) AC_OUTPUT(Makefile libvirt-designer/Makefile @@ -66,9 +82,11 @@ AC_MSG_NOTICE([Configuration summary]) AC_MSG_NOTICE([=====================]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([]) +AC_MSG_NOTICE([ examples: $enable_examples]) +AC_MSG_NOTICE([]) +AC_MSG_NOTICE([]) AC_MSG_NOTICE([ Libraries:]) AC_MSG_NOTICE([]) AC_MSG_NOTICE([ LIBOSINFO: $LIBOSINFO_CFLAGS $LIBOSINFO_LIBS]) AC_MSG_NOTICE([ LIBVIRT_GCONFIG: $LIBVIRT_GCONFIG_CFLAGS $LIBVIRT_GCONFIG_LIBS]) -AC_MSG_NOTICE([ LIBVIRT: $LIBVIRT_CFLAGS $LIBVIRT_LIBS]) AC_MSG_NOTICE([]) diff --git a/examples/Makefile.am b/examples/Makefile.am index 15f4b95..32549a0 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -10,12 +10,14 @@ virtxml_CFLAGS = \ $(LIBOSINFO_CFLAGS) \ $(LIBVIRT_GCONFIG_CFLAGS) \ $(WARN_CFLAGS) \ - $(LIBVIRT_CFLAGS) \ + $(LIBVIRT_GOBJECT_CFLAGS) \ $(NULL) virtxml_LDFLAGS = \ $(LIBOSINFO_LIBS) \ $(LIBVIRT_GCONFIG_LIBS) \ - $(LIBVIRT_LIBS) + $(LIBVIRT_GOBJECT_LIBS) +if WITH_EXAMPLES bin_PROGRAMS = virtxml +endif diff --git a/examples/virtxml.c b/examples/virtxml.c index 33d029e..9783ba6 100644 --- a/examples/virtxml.c +++ b/examples/virtxml.c @@ -22,8 +22,7 @@ #include <config.h> #include <libvirt-designer/libvirt-designer.h> -#include <libvirt/libvirt.h> -#include <libvirt/virterror.h> +#include <libvirt-gobject/libvirt-gobject.h> #include <stdio.h> #include <stdlib.h> @@ -310,8 +309,7 @@ main(int argc, char *argv[]) GVirConfigCapabilities *caps = NULL; GVirConfigDomain *config = NULL; GVirDesignerDomain *domain = NULL; - virConnectPtr conn = NULL; - char *caps_str = NULL; + GVirConnection *conn = NULL; gchar *xml = NULL; static char *os_str = NULL; static char *platform_str = NULL; @@ -358,20 +356,15 @@ main(int argc, char *argv[]) return EXIT_FAILURE; } - conn = virConnectOpenAuth(connect_uri, virConnectAuthPtrDefault, VIR_CONNECT_RO); - if (!conn) { - print_error("Unable to connect to libvirt"); - return EXIT_FAILURE; - } + conn = gvir_connection_new(connect_uri); + gvir_connection_open(conn, NULL, &error); + CHECK_ERROR; - if ((caps_str = virConnectGetCapabilities(conn)) == NULL) { - print_error("failed to get capabilities"); - goto cleanup; - } + caps = gvir_connection_get_capabilities(conn, &error); + CHECK_ERROR; os = osinfo_os_new(os_str); platform = osinfo_platform_new(platform_str); - caps = gvir_config_capabilities_new_from_xml(caps_str, NULL); domain = gvir_designer_domain_new(os, platform, caps); @@ -395,6 +388,7 @@ main(int argc, char *argv[]) ret = EXIT_SUCCESS; cleanup: - virConnectClose(conn); + if (conn) + gvir_connection_close(conn); return ret; } -- 1.7.8.6

On Tue, Sep 11, 2012 at 03:23:37PM +0200, Michal Privoznik wrote:
The first two patches are trivial, the third would require some review.
Michal Privoznik (3): disk_add: Don't hardcode 'qemu' driver style: Use two blank lines between functions virtxml: Drop direct libvirt usage
configure.ac | 24 +++++++++++++++++++-- examples/Makefile.am | 6 +++- examples/virtxml.c | 24 ++++++++-------------- libvirt-designer/libvirt-designer-domain.c | 30 +++++++++++++++++++++++++++- 4 files changed, 63 insertions(+), 21 deletions(-)
ACK to all Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On 11.09.2012 15:30, Daniel P. Berrange wrote:
On Tue, Sep 11, 2012 at 03:23:37PM +0200, Michal Privoznik wrote:
The first two patches are trivial, the third would require some review.
Michal Privoznik (3): disk_add: Don't hardcode 'qemu' driver style: Use two blank lines between functions virtxml: Drop direct libvirt usage
configure.ac | 24 +++++++++++++++++++-- examples/Makefile.am | 6 +++- examples/virtxml.c | 24 ++++++++-------------- libvirt-designer/libvirt-designer-domain.c | 30 +++++++++++++++++++++++++++- 4 files changed, 63 insertions(+), 21 deletions(-)
ACK to all
Daniel
Thanks, pushed. Michal
participants (2)
-
Daniel P. Berrange
-
Michal Privoznik