On Tue, Apr 7, 2015 at 1:14 PM, Christophe Fergeau <cfergeau@xxxxxxxxxx> wrote: > When using a user with administrator rights, the VMs this user can > access from the user portal and the admin portal are different, and > REST API users must indicate which set of VMs they want through a > specific header. libgovirt already has support for that in its API, but > virt-viewer was not making use of that API. > This commit adds support for an 'admin' field in the [ovirt] section of > .vv files so oVirt can indicate remote-viewer whether this header should > be set or not. > --- > src/ovirt-foreign-menu.c | 3 +++ > src/virt-viewer-file.c | 26 ++++++++++++++++++++++++++ > src/virt-viewer-file.h | 2 ++ > 3 files changed, 31 insertions(+) > > diff --git a/src/ovirt-foreign-menu.c b/src/ovirt-foreign-menu.c > index 7c95e4c..9b6d3b8 100644 > --- a/src/ovirt-foreign-menu.c > +++ b/src/ovirt-foreign-menu.c > @@ -826,6 +826,7 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file) > { > OvirtProxy *proxy = NULL; > OvirtForeignMenu *menu = NULL; > + gboolean admin; > char *ca_str = NULL; > char *jsessionid = NULL; > char *url = NULL; > @@ -836,6 +837,7 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file) > vm_guid = virt_viewer_file_get_ovirt_vm_guid(file); > jsessionid = virt_viewer_file_get_ovirt_jsessionid(file); > ca_str = virt_viewer_file_get_ovirt_ca(file); > + admin = virt_viewer_file_get_ovirt_admin(file); > > if ((url == NULL) || (vm_guid == NULL)) > goto end; > @@ -850,6 +852,7 @@ OvirtForeignMenu *ovirt_foreign_menu_new_from_file(VirtViewerFile *file) > } > > g_object_set(G_OBJECT(proxy), > + "admin", admin, > "session-id", jsessionid, > "ca-cert", ca, > NULL); > diff --git a/src/virt-viewer-file.c b/src/virt-viewer-file.c > index c8f04e8..69b6531 100644 > --- a/src/virt-viewer-file.c > +++ b/src/virt-viewer-file.c > @@ -76,6 +76,8 @@ > * - jsessionid: string containing an authentication cookie to be used to > * connect to the oVirt engine without being asked for credentials > * - ca: string PEM data (use \n to separate the lines) > + * - admin: boolean (0 or 1) indicating whether the VM is visible in the user or > + * admin portal > * > * (the file can be extended with extra groups or keys, which should > * be prefixed with x- to avoid later conflicts) > @@ -119,6 +121,7 @@ enum { > PROP_SECURE_CHANNELS, > PROP_DELETE_THIS_FILE, > PROP_SECURE_ATTENTION, > + PROP_OVIRT_ADMIN, > PROP_OVIRT_HOST, > PROP_OVIRT_VM_GUID, > PROP_OVIRT_JSESSIONID, > @@ -677,6 +680,19 @@ virt_viewer_file_set_ovirt_ca(VirtViewerFile* self, const gchar* value) > g_object_notify(G_OBJECT(self), "ovirt-ca"); > } > > +gint > +virt_viewer_file_get_ovirt_admin(VirtViewerFile* self) > +{ > + return virt_viewer_file_get_int(self, OVIRT_GROUP, "admin"); > +} > + > +void > +virt_viewer_file_set_ovirt_admin(VirtViewerFile* self, gint value) > +{ > + virt_viewer_file_set_int(self, OVIRT_GROUP, "admin", value); > + g_object_notify(G_OBJECT(self), "ovirt-admin"); > +} > + > static void > spice_hotkey_set_accel(const gchar *accel_path, const gchar *key) > { > @@ -840,6 +856,9 @@ virt_viewer_file_set_property(GObject* object, guint property_id, > case PROP_DELETE_THIS_FILE: > virt_viewer_file_set_delete_this_file(self, g_value_get_int(value)); > break; > + case PROP_OVIRT_ADMIN: > + virt_viewer_file_set_ovirt_admin(self, g_value_get_int(value)); > + break; > case PROP_OVIRT_HOST: > virt_viewer_file_set_ovirt_host(self, g_value_get_string(value)); > break; > @@ -940,6 +959,9 @@ virt_viewer_file_get_property(GObject* object, guint property_id, > case PROP_DELETE_THIS_FILE: > g_value_set_int(value, virt_viewer_file_get_delete_this_file(self)); > break; > + case PROP_OVIRT_ADMIN: > + g_value_set_int(value, virt_viewer_file_get_ovirt_admin(self)); > + break; > case PROP_OVIRT_HOST: > g_value_take_string(value, virt_viewer_file_get_ovirt_host(self)); > break; > @@ -1087,6 +1109,10 @@ virt_viewer_file_class_init(VirtViewerFileClass* klass) > g_param_spec_int("delete-this-file", "delete-this-file", "delete-this-file", 0, 1, 0, > G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); > > + g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_OVIRT_ADMIN, > + g_param_spec_int("ovirt-admin", "ovirt-admin", "ovirt-admin", 0, 1, 0, > + G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); > + > g_object_class_install_property(G_OBJECT_CLASS(klass), PROP_OVIRT_HOST, > g_param_spec_string("ovirt-host", "ovirt-host", "ovirt-host", NULL, > G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); > diff --git a/src/virt-viewer-file.h b/src/virt-viewer-file.h > index f4b030c..e84988a 100644 > --- a/src/virt-viewer-file.h > +++ b/src/virt-viewer-file.h > @@ -108,6 +108,8 @@ gint virt_viewer_file_get_delete_this_file(VirtViewerFile* self); > void virt_viewer_file_set_delete_this_file(VirtViewerFile* self, gint value); > gchar* virt_viewer_file_get_secure_attention(VirtViewerFile* self); > void virt_viewer_file_set_secure_attention(VirtViewerFile* self, const gchar* value); > +gint virt_viewer_file_get_ovirt_admin(VirtViewerFile* self); > +void virt_viewer_file_set_ovirt_admin(VirtViewerFile* self, gint value); > gchar* virt_viewer_file_get_ovirt_host(VirtViewerFile* self); > void virt_viewer_file_set_ovirt_host(VirtViewerFile* self, const gchar* value); > gchar* virt_viewer_file_get_ovirt_vm_guid(VirtViewerFile* self); > -- > 2.3.4 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list Not tested but looks good. ACK! -- Fabiano Fidêncio _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list