Blame SOURCES/0039-vm-display-Move-XML-parsing-from-ovirt-vm-xml.c-file.patch

546e1e
From c81f18b9dd4888145ac979addb4ef5d73585a176 Mon Sep 17 00:00:00 2001
546e1e
From: "Eduardo Lima (Etrunko)" <etrunko@redhat.com>
546e1e
Date: Tue, 19 Sep 2017 12:02:32 -0300
546e1e
Subject: [PATCH] vm-display: Move XML parsing from ovirt-vm-xml.c file
546e1e
546e1e
Following the model of other resources, the code for parsing the XML
546e1e
elements for the OvirtVmDisplay object where it really belongs to.
546e1e
546e1e
Signed-off-by: Eduardo Lima (Etrunko) <etrunko@redhat.com>
546e1e
---
546e1e
 govirt/Makefile.am        |  1 -
546e1e
 govirt/ovirt-vm-display.c | 60 +++++++++++++++++++++++++++++
546e1e
 govirt/ovirt-vm-display.h |  2 +
546e1e
 govirt/ovirt-vm-xml.c     | 96 -----------------------------------------------
546e1e
 govirt/ovirt-vm.c         | 15 ++++++--
546e1e
 5 files changed, 74 insertions(+), 100 deletions(-)
546e1e
 delete mode 100644 govirt/ovirt-vm-xml.c
546e1e
546e1e
diff --git a/govirt/Makefile.am b/govirt/Makefile.am
546e1e
index 9bf0eba..1a59f2c 100644
546e1e
--- a/govirt/Makefile.am
546e1e
+++ b/govirt/Makefile.am
546e1e
@@ -73,7 +73,6 @@ libgovirt_la_SOURCES =						\
546e1e
 	ovirt-utils.c						\
546e1e
 	ovirt-vm.c						\
546e1e
 	ovirt-vm-display.c					\
546e1e
-	ovirt-vm-xml.c						\
546e1e
 	ovirt-vm-pool.c						\
546e1e
 	$(NULL)
546e1e
 
546e1e
diff --git a/govirt/ovirt-vm-display.c b/govirt/ovirt-vm-display.c
546e1e
index b03c303..ebb04c2 100644
546e1e
--- a/govirt/ovirt-vm-display.c
546e1e
+++ b/govirt/ovirt-vm-display.c
546e1e
@@ -24,6 +24,7 @@
546e1e
 
546e1e
 #include "ovirt-enum-types.h"
546e1e
 #include "ovirt-vm-display.h"
546e1e
+#include "ovirt-utils.h"
546e1e
 
546e1e
 #define OVIRT_VM_DISPLAY_GET_PRIVATE(obj)                         \
546e1e
         (G_TYPE_INSTANCE_GET_PRIVATE((obj), OVIRT_TYPE_VM_DISPLAY, OvirtVmDisplayPrivate))
546e1e
@@ -303,3 +304,62 @@ OvirtVmDisplay *ovirt_vm_display_new(void)
546e1e
 {
546e1e
     return OVIRT_VM_DISPLAY(g_object_new(OVIRT_TYPE_VM_DISPLAY, NULL));
546e1e
 }
546e1e
+
546e1e
+static gboolean ovirt_vm_display_set_from_xml(OvirtVmDisplay *display, RestXmlNode *node)
546e1e
+{
546e1e
+    OvirtVmDisplayType type;
546e1e
+    OvirtXmlElement display_elements[] = {
546e1e
+        { .prop_name = "type",
546e1e
+          .xml_path = "type",
546e1e
+        },
546e1e
+        { .prop_name = "address",
546e1e
+          .xml_path = "address",
546e1e
+        },
546e1e
+        { .prop_name = "port",
546e1e
+          .xml_path = "port",
546e1e
+        },
546e1e
+        { .prop_name = "secure-port",
546e1e
+          .xml_path = "secure_port",
546e1e
+        },
546e1e
+        { .prop_name = "monitor-count",
546e1e
+          .xml_path = "monitors",
546e1e
+        },
546e1e
+        { .prop_name = "smartcard",
546e1e
+          .xml_path = "smartcard_enabled",
546e1e
+        },
546e1e
+        { .prop_name = "allow-override",
546e1e
+          .xml_path = "allow_override",
546e1e
+        },
546e1e
+        { .prop_name = "host-subject",
546e1e
+          .xml_path = "certificate/subject",
546e1e
+        },
546e1e
+        { .prop_name = "proxy-url",
546e1e
+          .xml_path = "proxy",
546e1e
+        },
546e1e
+        { NULL, },
546e1e
+    };
546e1e
+
546e1e
+    ovirt_rest_xml_node_parse(node, G_OBJECT(display), display_elements);
546e1e
+    g_object_get(G_OBJECT(display), "type", &type, NULL);
546e1e
+    if (type == OVIRT_VM_DISPLAY_INVALID) {
546e1e
+        return FALSE;
546e1e
+    }
546e1e
+
546e1e
+    return TRUE;
546e1e
+}
546e1e
+
546e1e
+OvirtVmDisplay *ovirt_vm_display_new_from_xml(RestXmlNode *node)
546e1e
+{
546e1e
+    OvirtVmDisplay *display;
546e1e
+
546e1e
+    g_return_val_if_fail(node != NULL, NULL);
546e1e
+
546e1e
+    display = ovirt_vm_display_new();
546e1e
+
546e1e
+    if (!ovirt_vm_display_set_from_xml(display, node)) {
546e1e
+        g_object_unref(display);
546e1e
+        return NULL;
546e1e
+    }
546e1e
+
546e1e
+    return display;
546e1e
+}
546e1e
diff --git a/govirt/ovirt-vm-display.h b/govirt/ovirt-vm-display.h
546e1e
index 38ef9b7..11a5074 100644
546e1e
--- a/govirt/ovirt-vm-display.h
546e1e
+++ b/govirt/ovirt-vm-display.h
546e1e
@@ -24,6 +24,7 @@
546e1e
 
546e1e
 #include <glib-object.h>
546e1e
 #include <govirt/ovirt-types.h>
546e1e
+#include <rest/rest-xml-node.h>
546e1e
 
546e1e
 G_BEGIN_DECLS
546e1e
 
546e1e
@@ -61,6 +62,7 @@ typedef enum {
546e1e
 
546e1e
 GType ovirt_vm_display_get_type(void);
546e1e
 OvirtVmDisplay *ovirt_vm_display_new(void);
546e1e
+OvirtVmDisplay *ovirt_vm_display_new_from_xml(RestXmlNode *node);
546e1e
 
546e1e
 G_END_DECLS
546e1e
 
546e1e
diff --git a/govirt/ovirt-vm-xml.c b/govirt/ovirt-vm-xml.c
546e1e
deleted file mode 100644
546e1e
index 0603427..0000000
546e1e
--- a/govirt/ovirt-vm-xml.c
546e1e
+++ /dev/null
546e1e
@@ -1,96 +0,0 @@
546e1e
-/*
546e1e
- * ovirt-vm-xml.c
546e1e
- *
546e1e
- * Copyright (C) 2011, 2013 Red Hat, Inc.
546e1e
- *
546e1e
- * This library is free software; you can redistribute it and/or
546e1e
- * modify it under the terms of the GNU Lesser General Public
546e1e
- * License as published by the Free Software Foundation; either
546e1e
- * version 2.1 of the License, or (at your option) any later version.
546e1e
- *
546e1e
- * This library is distributed in the hope that it will be useful,
546e1e
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
546e1e
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
546e1e
- * Lesser General Public License for more details.
546e1e
- *
546e1e
- * You should have received a copy of the GNU Lesser General Public
546e1e
- * License along with this library. If not, see
546e1e
- * <http://www.gnu.org/licenses/>.
546e1e
- *
546e1e
- * Author: Christophe Fergeau <cfergeau@redhat.com>
546e1e
- */
546e1e
-#include <config.h>
546e1e
-
546e1e
-#include <stdlib.h>
546e1e
-#include <string.h>
546e1e
-
546e1e
-#include "ovirt-enum-types.h"
546e1e
-#include "ovirt-utils.h"
546e1e
-#include "ovirt-vm.h"
546e1e
-#include "ovirt-vm-display.h"
546e1e
-#include "ovirt-vm-private.h"
546e1e
-
546e1e
-static gboolean vm_set_display_from_xml(OvirtVm *vm,
546e1e
-                                        RestXmlNode *root)
546e1e
-{
546e1e
-    OvirtVmDisplay *display;
546e1e
-    OvirtVmDisplayType type;
546e1e
-    OvirtXmlElement display_elements[] = {
546e1e
-        { .prop_name = "type",
546e1e
-          .xml_path = "type",
546e1e
-        },
546e1e
-        { .prop_name = "address",
546e1e
-          .xml_path = "address",
546e1e
-        },
546e1e
-        { .prop_name = "port",
546e1e
-          .xml_path = "port",
546e1e
-        },
546e1e
-        { .prop_name = "secure-port",
546e1e
-          .xml_path = "secure_port",
546e1e
-        },
546e1e
-        { .prop_name = "monitor-count",
546e1e
-          .xml_path = "monitors",
546e1e
-        },
546e1e
-        { .prop_name = "smartcard",
546e1e
-          .xml_path = "smartcard_enabled",
546e1e
-        },
546e1e
-        { .prop_name = "allow-override",
546e1e
-          .xml_path = "allow_override",
546e1e
-        },
546e1e
-        { .prop_name = "host-subject",
546e1e
-          .xml_path = "certificate/subject",
546e1e
-        },
546e1e
-        { .prop_name = "proxy-url",
546e1e
-          .xml_path = "proxy",
546e1e
-        },
546e1e
-        { NULL, },
546e1e
-    };
546e1e
-
546e1e
-    if (root == NULL) {
546e1e
-        return FALSE;
546e1e
-    }
546e1e
-    root = rest_xml_node_find(root, "display");
546e1e
-    if (root == NULL) {
546e1e
-        g_debug("Could not find 'display' node");
546e1e
-        return FALSE;
546e1e
-    }
546e1e
-    display = ovirt_vm_display_new();
546e1e
-    ovirt_rest_xml_node_parse(root, G_OBJECT(display), display_elements);
546e1e
-    g_object_get(G_OBJECT(display), "type", &type, NULL);
546e1e
-    if (type == OVIRT_VM_DISPLAY_INVALID) {
546e1e
-        return FALSE;
546e1e
-    }
546e1e
-
546e1e
-    /* FIXME: this overrides the ticket/expiry which may
546e1e
-     * already be set
546e1e
-     */
546e1e
-    g_object_set(G_OBJECT(vm), "display", display, NULL);
546e1e
-    g_object_unref(G_OBJECT(display));
546e1e
-
546e1e
-    return TRUE;
546e1e
-}
546e1e
-
546e1e
-G_GNUC_INTERNAL gboolean ovirt_vm_refresh_from_xml(OvirtVm *vm, RestXmlNode *node)
546e1e
-{
546e1e
-    return vm_set_display_from_xml(vm, node);
546e1e
-}
546e1e
diff --git a/govirt/ovirt-vm.c b/govirt/ovirt-vm.c
546e1e
index f30022d..95c1e4d 100644
546e1e
--- a/govirt/ovirt-vm.c
546e1e
+++ b/govirt/ovirt-vm.c
546e1e
@@ -180,7 +180,8 @@ static gboolean ovirt_vm_init_from_xml(OvirtResource *resource,
546e1e
                                        RestXmlNode *node,
546e1e
                                        GError **error)
546e1e
 {
546e1e
-    gboolean parsed_ok;
546e1e
+    OvirtVmDisplay *display;
546e1e
+    RestXmlNode *display_node;
546e1e
     OvirtResourceClass *parent_class;
546e1e
     OvirtXmlElement vm_elements[] = {
546e1e
         { .prop_name = "host-href",
546e1e
@@ -205,11 +206,19 @@ static gboolean ovirt_vm_init_from_xml(OvirtResource *resource,
546e1e
         { NULL, },
546e1e
     };
546e1e
 
546e1e
-    parsed_ok = ovirt_vm_refresh_from_xml(OVIRT_VM(resource), node);
546e1e
-    if (!parsed_ok) {
546e1e
+    display_node = rest_xml_node_find(node, "display");
546e1e
+    if (display_node == NULL) {
546e1e
+        g_debug("Could not find 'display' node");
546e1e
         return FALSE;
546e1e
     }
546e1e
 
546e1e
+    display = ovirt_vm_display_new_from_xml(display_node);
546e1e
+    if (display == NULL)
546e1e
+        return FALSE;
546e1e
+
546e1e
+    g_object_set(G_OBJECT(resource), "display", display, NULL);
546e1e
+    g_object_unref(G_OBJECT(display));
546e1e
+
546e1e
     if (!ovirt_rest_xml_node_parse(node, G_OBJECT(resource), vm_elements))
546e1e
         return FALSE;
546e1e
 
546e1e
-- 
546e1e
2.14.4
546e1e