[libgovirt] Add OvirtVmDisplay::proxy-url



commit e2f4e6ae0975b24d4d4cb521ff1a2948e91af0e3
Author: Christophe Fergeau <cfergeau redhat com>
Date:   Tue Jan 20 10:42:57 2015 +0100

    Add OvirtVmDisplay::proxy-url
    
    Recent oVirt versions advertise which proxy URL should be used (if any)
    to connect to a VM. This commit exposes this information in libgovirt so
    that library users can make use of it.

 govirt/ovirt-vm-display.c |   18 ++++++++++++++++++
 govirt/ovirt-vm-xml.c     |    6 ++++++
 2 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/govirt/ovirt-vm-display.c b/govirt/ovirt-vm-display.c
index a8a0942..030d267 100644
--- a/govirt/ovirt-vm-display.c
+++ b/govirt/ovirt-vm-display.c
@@ -39,6 +39,7 @@ struct _OvirtVmDisplayPrivate {
     char *host_subject;
     gboolean smartcard;
     gboolean allow_override;
+    char *proxy_url;
 };
 
 G_DEFINE_TYPE(OvirtVmDisplay, ovirt_vm_display, G_TYPE_OBJECT);
@@ -55,6 +56,7 @@ enum {
     PROP_HOST_SUBJECT,
     PROP_SMARTCARD,
     PROP_ALLOW_OVERRIDE,
+    PROP_PROXY_URL,
 };
 
 static void ovirt_vm_display_get_property(GObject *object,
@@ -95,6 +97,9 @@ static void ovirt_vm_display_get_property(GObject *object,
     case PROP_ALLOW_OVERRIDE:
         g_value_set_boolean(value, display->priv->allow_override);
         break;
+    case PROP_PROXY_URL:
+        g_value_set_string(value, display->priv->proxy_url);
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     }
@@ -141,6 +146,10 @@ static void ovirt_vm_display_set_property(GObject *object,
     case PROP_ALLOW_OVERRIDE:
         display->priv->allow_override = g_value_get_boolean(value);
         break;
+    case PROP_PROXY_URL:
+        g_free(display->priv->proxy_url);
+        display->priv->proxy_url = g_value_dup_string(value);
+        break;
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     }
@@ -153,6 +162,7 @@ static void ovirt_vm_display_finalize(GObject *object)
     g_free(display->priv->address);
     g_free(display->priv->ticket);
     g_free(display->priv->host_subject);
+    g_free(display->priv->proxy_url);
 
     G_OBJECT_CLASS(ovirt_vm_display_parent_class)->finalize(object);
 }
@@ -252,6 +262,14 @@ static void ovirt_vm_display_class_init(OvirtVmDisplayClass *klass)
                                                         FALSE,
                                                         G_PARAM_READWRITE |
                                                         G_PARAM_STATIC_STRINGS));
+    g_object_class_install_property(object_class,
+                                    PROP_PROXY_URL,
+                                    g_param_spec_string("proxy-url",
+                                                        "Proxy URL",
+                                                        "URL of the proxy to use to access the VM",
+                                                        NULL,
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_STATIC_STRINGS));
 }
 
 static void ovirt_vm_display_init(G_GNUC_UNUSED OvirtVmDisplay *display)
diff --git a/govirt/ovirt-vm-xml.c b/govirt/ovirt-vm-xml.c
index 7790887..22d50af 100644
--- a/govirt/ovirt-vm-xml.c
+++ b/govirt/ovirt-vm-xml.c
@@ -44,6 +44,7 @@ static gboolean vm_set_display_from_xml(OvirtVm *vm,
     const char *certificate_key = g_intern_string("certificate");
     const char *smartcard_key = g_intern_string("smartcard_enabled");
     const char *allow_override_key = g_intern_string("allow_override");
+    const char *proxy_key = g_intern_string("proxy");
 
     if (root == NULL) {
         return FALSE;
@@ -120,6 +121,11 @@ static gboolean vm_set_display_from_xml(OvirtVm *vm,
         }
     }
 
+    node = g_hash_table_lookup(root->children, proxy_key);
+    if (node != NULL) {
+        g_object_set(G_OBJECT(display), "proxy-url", node->content, NULL);
+    }
+
     /* FIXME: this overrides the ticket/expiry which may
      * already be set
      */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]