[pve-devel] [PATCH manager] ui: file-restore: start the file-restore on the selected node

Stefan Reiter s.reiter at proxmox.com
Thu Jun 10 11:29:37 CEST 2021


On 6/10/21 10:40 AM, Dominik Csapak wrote:
> On 6/10/21 10:23, Stefan Reiter wrote:
>> On 6/10/21 9:37 AM, Dominik Csapak wrote:
>>> and not the node where the browser connects.
>>> there are at least two good reasons for this:
>>> * it is confusing, since the user would expect it to start where
>>>    the ui is pointint to
>>> * the storage may not be available on the node the browser connects
>>>    to, but it must be available on the node selected in the ui
>>>
>>> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
>>> ---
>>
>> Does this work with the proxying code for downloading files? I believe 
>> my original reasoning behind this was because my implementation for 
>> quickly forwarding data between the unprivileged and privileged 
>> daemons uses a local Unix socket. Thus forwarding between nodes (as I 
>> understand this will do?) would be subject to caching the data at the 
>> node being contacted, before sending it to the browser.
> 
> well it does work, since i sucessfully downloaded some files from a backup
> 
> what exactly do you mean with
>  > would be subject to caching the data at the node being
>  > contacted, before sending it to the browser.
> 

Try downloading a larger file (multiple GB) - is it streamed directly to 
the browser or first transferred to node1 (from your example below), 
cached in memory there, and only once it's fully in RAM transferred to 
the client? I believe with this patch, the second variant will happen.

This whole idea was the reason for these shenanigans:
https://git.proxmox.com/?p=pve-http-server.git;a=commitdiff;h=51841e98fa5d4ad4d5b5250523c45f88769c577f

> yes the download api call goes afaiu
> 
> proxy at node1(the one the browser connects to) ->
> proxy at node2 (node selected from tree) ->
> daemon at node2 ->
> vm at node2
> 
>>
>>>   www/manager6/grid/BackupView.js    | 4 ++--
>>>   www/manager6/storage/BackupView.js | 4 ++--
>>>   2 files changed, 4 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/www/manager6/grid/BackupView.js 
>>> b/www/manager6/grid/BackupView.js
>>> index 8825ed96..fbed4118 100644
>>> --- a/www/manager6/grid/BackupView.js
>>> +++ b/www/manager6/grid/BackupView.js
>>> @@ -247,8 +247,8 @@ Ext.define('PVE.grid.BackupView', {
>>>           let isVMArchive = 
>>> PVE.Utils.volume_is_qemu_backup(rec.data.volid, rec.data.format);
>>>           Ext.create('Proxmox.window.FileBrowser', {
>>>               title: gettext('File Restore') + " - " + rec.data.text,
>>> -            listURL: 
>>> `/api2/json/nodes/localhost/storage/${storage}/file-restore/list`,
>>> -            downloadURL: 
>>> `/api2/json/nodes/localhost/storage/${storage}/file-restore/download`,
>>> +            listURL: 
>>> `/api2/json/nodes/${nodename}/storage/${storage}/file-restore/list`,
>>> +            downloadURL: 
>>> `/api2/json/nodes/${nodename}/storage/${storage}/file-restore/download`,
>>>               extraParams: {
>>>               volume: rec.data.volid,
>>>               },
>>> diff --git a/www/manager6/storage/BackupView.js 
>>> b/www/manager6/storage/BackupView.js
>>> index 0613c94d..c287ec63 100644
>>> --- a/www/manager6/storage/BackupView.js
>>> +++ b/www/manager6/storage/BackupView.js
>>> @@ -114,8 +114,8 @@ Ext.define('PVE.storage.BackupView', {
>>>               let isVMArchive = 
>>> PVE.Utils.volume_is_qemu_backup(rec.data.volid, rec.data.format);
>>>               Ext.create('Proxmox.window.FileBrowser', {
>>>               title: gettext('File Restore') + " - " + rec.data.text,
>>> -            listURL: 
>>> `/api2/json/nodes/localhost/storage/${me.storage}/file-restore/list`,
>>> -            downloadURL: 
>>> `/api2/json/nodes/localhost/storage/${me.storage}/file-restore/download`, 
>>>
>>> +            listURL: 
>>> `/api2/json/nodes/${nodename}/storage/${me.storage}/file-restore/list`,
>>> +            downloadURL: 
>>> `/api2/json/nodes/${nodename}/storage/${me.storage}/file-restore/download`, 
>>>
>>>               extraParams: {
>>>                   volume: rec.data.volid,
>>>               },
>>>
> 
> 





More information about the pve-devel mailing list