diff --git a/SOURCES/0047-vm-display-Add-support-for-parsing-certificate-data.patch b/SOURCES/0047-vm-display-Add-support-for-parsing-certificate-data.patch new file mode 100644 index 0000000..c7e957c --- /dev/null +++ b/SOURCES/0047-vm-display-Add-support-for-parsing-certificate-data.patch @@ -0,0 +1,56 @@ +From 0fceae5b08888ae04d0f984aaa2583ca39756880 Mon Sep 17 00:00:00 2001 +From: "Eduardo Lima (Etrunko)" +Date: Thu, 3 Oct 2019 15:30:46 -0300 +Subject: [PATCH] vm-display: Add support for parsing certificate data + +Certificate data is stored as GByteArray, thus requiring support for +G_TYPE_BYTE_ARRAY in ovirt-utils. + +Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1402909 + +Signed-off-by: Eduardo Lima (Etrunko) +--- + govirt/ovirt-utils.c | 5 +++++ + govirt/ovirt-vm-display.c | 3 +++ + 2 files changed, 8 insertions(+) + +diff --git a/govirt/ovirt-utils.c b/govirt/ovirt-utils.c +index 56ce2e1..7789296 100644 +--- a/govirt/ovirt-utils.c ++++ b/govirt/ovirt-utils.c +@@ -181,6 +181,7 @@ _set_property_value_from_type(GValue *value, + const char *value_str; + GType type = prop->value_type; + ++ /* These types do not require a value associated */ + if (g_type_is_a(type, OVIRT_TYPE_RESOURCE)) { + OvirtResource *resource_value = ovirt_resource_new_from_xml(type, node, NULL); + g_value_set_object(value, resource_value); +@@ -210,6 +211,10 @@ _set_property_value_from_type(GValue *value, + int enum_value = ovirt_utils_genum_get_value(type, value_str, enum_prop->default_value); + g_value_set_enum(value, enum_value); + goto end; ++ } else if (g_type_is_a(type, G_TYPE_BYTE_ARRAY)) { ++ GByteArray *array = g_byte_array_new_take((guchar *)g_strdup(value_str), strlen(value_str)); ++ g_value_take_boxed(value, array); ++ goto end; + } + + ret = _set_property_value_from_basic_type(value, type, value_str); +diff --git a/govirt/ovirt-vm-display.c b/govirt/ovirt-vm-display.c +index ebb04c2..a8a946a 100644 +--- a/govirt/ovirt-vm-display.c ++++ b/govirt/ovirt-vm-display.c +@@ -336,6 +336,9 @@ static gboolean ovirt_vm_display_set_from_xml(OvirtVmDisplay *display, RestXmlNo + { .prop_name = "proxy-url", + .xml_path = "proxy", + }, ++ { .prop_name = "ca-cert", ++ .xml_path = "certificate/content", ++ }, + { NULL, }, + }; + +-- +2.21.0 + diff --git a/SOURCES/0048-proxy-Do-not-overwrite-certificate-data-from-display.patch b/SOURCES/0048-proxy-Do-not-overwrite-certificate-data-from-display.patch new file mode 100644 index 0000000..9880f22 --- /dev/null +++ b/SOURCES/0048-proxy-Do-not-overwrite-certificate-data-from-display.patch @@ -0,0 +1,39 @@ +From cf2c7c6b5ee1b636d7f443a4442374e9e254c164 Mon Sep 17 00:00:00 2001 +From: "Eduardo Lima (Etrunko)" +Date: Thu, 3 Oct 2019 17:18:58 -0300 +Subject: [PATCH] proxy: Do not overwrite certificate data from display + +Since oVirt 4.3, certificate data is available from the XML see: + +https://bugzilla.redhat.com/show_bug.cgi?id=1403161 + +Previous commit adds support for using that value instead of the one +obtained from proxy object. + +Signed-off-by: Eduardo Lima (Etrunko) +--- + govirt/ovirt-proxy.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c +index 9cdd211..74604dd 100644 +--- a/govirt/ovirt-proxy.c ++++ b/govirt/ovirt-proxy.c +@@ -632,6 +632,14 @@ static void ovirt_proxy_update_vm_display_ca(OvirtProxy *proxy) + + g_object_get(G_OBJECT(vm), "display", &display, NULL); + if (display != NULL) { ++ GByteArray *ca_cert = NULL; ++ g_object_get(G_OBJECT(display), "ca-cert", &ca_cert, NULL); ++ if (ca_cert != NULL) { ++ g_byte_array_unref(ca_cert); ++ ca_cert = NULL; ++ continue; ++ } ++ + g_object_set(G_OBJECT(display), + "ca-cert", proxy->priv->display_ca, + NULL); +-- +2.21.0 + diff --git a/SOURCES/0049-proxy-Do-not-leak-display-object.patch b/SOURCES/0049-proxy-Do-not-leak-display-object.patch new file mode 100644 index 0000000..0e6e149 --- /dev/null +++ b/SOURCES/0049-proxy-Do-not-leak-display-object.patch @@ -0,0 +1,26 @@ +From 61b2753958118b910dfbc9270cccfee80d165b0a Mon Sep 17 00:00:00 2001 +From: "Eduardo Lima (Etrunko)" +Date: Thu, 3 Oct 2019 17:18:58 -0300 +Subject: [PATCH] proxy: Do not leak display object + +Signed-off-by: Eduardo Lima (Etrunko) +--- + govirt/ovirt-proxy.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c +index 74604dd..92c5ed0 100644 +--- a/govirt/ovirt-proxy.c ++++ b/govirt/ovirt-proxy.c +@@ -636,7 +636,7 @@ static void ovirt_proxy_update_vm_display_ca(OvirtProxy *proxy) + g_object_get(G_OBJECT(display), "ca-cert", &ca_cert, NULL); + if (ca_cert != NULL) { + g_byte_array_unref(ca_cert); +- ca_cert = NULL; ++ g_object_unref(display); + continue; + } + +-- +2.21.0 + diff --git a/SOURCES/0050-Add-support-for-oVirt-API-v4.patch b/SOURCES/0050-Add-support-for-oVirt-API-v4.patch new file mode 100644 index 0000000..1ae83ca --- /dev/null +++ b/SOURCES/0050-Add-support-for-oVirt-API-v4.patch @@ -0,0 +1,90 @@ +From 7fc76f7cea0efe8fdf48033b616cfd107cd9bd56 Mon Sep 17 00:00:00 2001 +From: "Eduardo Lima (Etrunko)" +Date: Mon, 20 Jan 2020 19:16:49 -0300 +Subject: [PATCH] Add support for oVirt API v4 + +v3 has been deprecated for a while now, and support will be completely +removed in RHV 4.4. + +Tested against main use cases with remote-viewer: + + - Connecting to oVirt using ovirt:// URI. + - Connecting to oVirt with console.vv file. + - Listing and changing CD ROMs. + +https://bugzilla.redhat.com/show_bug.cgi?id=1399750 + +Signed-off-by: Eduardo Lima (Etrunko) +--- + govirt/ovirt-proxy.c | 1 - + govirt/ovirt-resource.c | 7 ------- + govirt/ovirt-storage-domain.c | 2 +- + govirt/ovirt-vm.c | 2 +- + 4 files changed, 2 insertions(+), 10 deletions(-) + +diff --git a/govirt/ovirt-proxy.c b/govirt/ovirt-proxy.c +index 92c5ed0..39ef476 100644 +--- a/govirt/ovirt-proxy.c ++++ b/govirt/ovirt-proxy.c +@@ -943,7 +943,6 @@ static void ovirt_proxy_constructed(GObject *gobject) + g_object_set(OVIRT_PROXY(gobject), "ssl-strict", FALSE, NULL); + } + ovirt_proxy_add_header(OVIRT_PROXY(gobject), "Prefer", "persistent-auth"); +- ovirt_proxy_add_header(OVIRT_PROXY(gobject), "Version", "3"); + + /* Chain up to the parent class */ + if (G_OBJECT_CLASS(ovirt_proxy_parent_class)->constructed) +diff --git a/govirt/ovirt-resource.c b/govirt/ovirt-resource.c +index 936e912..9511e2f 100644 +--- a/govirt/ovirt-resource.c ++++ b/govirt/ovirt-resource.c +@@ -686,7 +686,6 @@ static enum OvirtResponseStatus parse_action_status(RestXmlNode *root, + { + RestXmlNode *node; + const char *status_key = g_intern_string("status"); +- const char *state_key = g_intern_string("state"); + + g_return_val_if_fail(g_strcmp0(root->name, "action") == 0, + OVIRT_RESPONSE_UNKNOWN); +@@ -699,12 +698,6 @@ static enum OvirtResponseStatus parse_action_status(RestXmlNode *root, + _("Could not find 'status' node")); + g_return_val_if_reached(OVIRT_RESPONSE_UNKNOWN); + } +- node = g_hash_table_lookup(node->children, state_key); +- if (node == NULL) { +- g_set_error(error, OVIRT_ERROR, OVIRT_ERROR_PARSING_FAILED, +- _("Could not find 'state' node")); +- g_return_val_if_reached(OVIRT_RESPONSE_UNKNOWN); +- } + g_debug("State: %s\n", node->content); + if (g_strcmp0(node->content, "complete") == 0) { + return OVIRT_RESPONSE_COMPLETE; +diff --git a/govirt/ovirt-storage-domain.c b/govirt/ovirt-storage-domain.c +index a9078f4..4eb3354 100644 +--- a/govirt/ovirt-storage-domain.c ++++ b/govirt/ovirt-storage-domain.c +@@ -171,7 +171,7 @@ static gboolean ovirt_storage_domain_init_from_xml(OvirtResource *resource, + .xml_path = "storage_format", + }, + { .prop_name = "state", +- .xml_path = "status/state", ++ .xml_path = "status", + }, + { .prop_name = "data-center-ids", + .xml_path = "data_centers", +diff --git a/govirt/ovirt-vm.c b/govirt/ovirt-vm.c +index 8cd482b..7e1dec1 100644 +--- a/govirt/ovirt-vm.c ++++ b/govirt/ovirt-vm.c +@@ -201,7 +201,7 @@ static gboolean ovirt_vm_init_from_xml(OvirtResource *resource, + .xml_attr = "id", + }, + { .prop_name = "state", +- .xml_path = "status/state", ++ .xml_path = "status", + }, + { NULL, }, + }; +-- +2.25.1 + diff --git a/SOURCES/0051-tests-Update-VM-XML-according-to-new-API-version.patch b/SOURCES/0051-tests-Update-VM-XML-according-to-new-API-version.patch new file mode 100644 index 0000000..ceaa92f --- /dev/null +++ b/SOURCES/0051-tests-Update-VM-XML-according-to-new-API-version.patch @@ -0,0 +1,26 @@ +From 8401d58557bfe45a5289e37bbd443335b49ee32a Mon Sep 17 00:00:00 2001 +From: "Eduardo Lima (Etrunko)" +Date: Tue, 21 Jan 2020 10:41:18 -0300 +Subject: [PATCH] tests: Update VM XML according to new API version + +Signed-off-by: Eduardo Lima (Etrunko) +--- + tests/test-govirt.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test-govirt.c b/tests/test-govirt.c +index fd4e0af..99901e0 100644 +--- a/tests/test-govirt.c ++++ b/tests/test-govirt.c +@@ -136,7 +136,7 @@ static void test_govirt_list_vms(void) + \ + vm1 \ + desktop \ +- up \ ++ up \ + \ + spice \ +
10.0.0.123
\ +-- +2.25.1 + diff --git a/SPECS/libgovirt.spec b/SPECS/libgovirt.spec index 8ad409f..723efd8 100644 --- a/SPECS/libgovirt.spec +++ b/SPECS/libgovirt.spec @@ -17,7 +17,7 @@ Summary: A GObject library for interacting with oVirt REST API Name: libgovirt Version: 0.3.4 -Release: 9%{?dist}%{?extra_release} +Release: 12%{?dist}%{?extra_release} License: LGPLv2+ Group: Development/Libraries Source0: http://ftp.gnome.org/pub/GNOME/sources/libgovirt/0.3/%{name}-%{version}.tar.xz @@ -71,6 +71,11 @@ Patch44: 0044-proxy-Don-t-try-to-unref-NULL-root-node.patch Patch45: 0045-utils-Check-for-valid-data-before-calling-rest_xml_p.patch Patch46: 0046-Update-tests-certificates.patch Patch47: 0047-cdrom-Remove-unused-variable.patch +Patch48: 0047-vm-display-Add-support-for-parsing-certificate-data.patch +Patch49: 0048-proxy-Do-not-overwrite-certificate-data-from-display.patch +Patch50: 0049-proxy-Do-not-leak-display-object.patch +Patch51: 0050-Add-support-for-oVirt-API-v4.patch +Patch52: 0051-tests-Update-VM-XML-according-to-new-API-version.patch %if 0%{?enable_autotools} BuildRequires: autoconf @@ -158,6 +163,18 @@ make check %endif %changelog +* Thu Apr 9 2020 Tomas Pelka - 0.3.4-12 +- Bumped version and rebuildccagaincafter z-stream unfreeze to trigger gating for 8.2.0.z properly + Resolves: rhbz#1813962 + +* Mon Mar 16 2020 Eduardo Lima (Etrunko) - 0.3.4-11 +- Bumped version and rebuild to trigger gating for 8.2.0.z properly + Resolves: rhbz#1813962 + +* Mon Mar 16 2020 Eduardo Lima (Etrunko) - 0.3.4-10 +- Update to RHV REST API version 4 + Resolves: rhbz#1813962 + * Mon Aug 2 2019 Eduardo Lima (Etrunko) - 0.3.4-9 - Sync with the rhel 7.7 package Related: rhbz#1717900