diff options
author | Christophe Fergeau <cfergeau@redhat.com> | 2015-01-20 10:42:57 +0100 |
---|---|---|
committer | Christophe Fergeau <cfergeau@redhat.com> | 2015-01-22 16:54:19 +0100 |
commit | e2f4e6ae0975b24d4d4cb521ff1a2948e91af0e3 (patch) | |
tree | 325786deeddd72a7719542bf6089a9e63166b6e1 | |
parent | 2ca872bd88efcfa7a55fedb6116f6bbec618d896 (diff) |
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.
-rw-r--r-- | govirt/ovirt-vm-display.c | 18 | ||||
-rw-r--r-- | 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 */ |