In general it looks good and does work, some stuff inline.

> Stefan Reiter <s.rei...@proxmox.com> hat am 31. Juli 2019 13:23 geschrieben:
> 
>  
> Includes a "confirm" dialog to not accidentally run a potentially large backup
> job.
> 
> Signed-off-by: Stefan Reiter <s.rei...@proxmox.com>
> ---
>  www/manager6/dc/Backup.js | 67 +++++++++++++++++++++++++++++++++++----
>  1 file changed, 61 insertions(+), 6 deletions(-)
> 
> diff --git a/www/manager6/dc/Backup.js b/www/manager6/dc/Backup.js
> index 6810d92f..7b2c52a6 100644
> --- a/www/manager6/dc/Backup.js
> +++ b/www/manager6/dc/Backup.js
> @@ -410,13 +410,40 @@ Ext.define('PVE.dc.BackupView', {
>               return;
>           }
>  
> -            var win = Ext.create('PVE.dc.BackupEdit',{
> -                jobid: rec.data.id
> -            });
> -            win.on('destroy', reload);
> -            win.show();
> +         var win = Ext.create('PVE.dc.BackupEdit', {
> +             jobid: rec.data.id
> +         });
> +         win.on('destroy', reload);
> +         win.show();
>       };
>  

Maybe send clean up/formatting as extra patch, just to keep patches focused.

> +     var run_backup_now = function(jobid) {
> +         var allNodes = PVE.data.ResourceStore.getNodes();

There is much more info available which you could use to make this a little bit 
less error prone e.g. why requesting anything to a node which is offline?

> +         var standalone = allNodes.length === 1;
> +         allNodes.forEach(node => {
> +             Proxmox.Utils.API2Request({
> +                 url: '/cluster/backup/' + jobid + '/' + node.node + '/run',
> +                 method: 'POST',
> +                 waitMsgTarget: me,

This won't work, because it will be set/reset for each request. So it happens, 
that there a still pending calls but the UI suggest all is done because there 
is no loading indicator displayed. This is especially confusing if you test it 
with a backup job where there is a node involved which is offline/not 
responding and then suddenly an error message pops up even though you navigated 
to a different tab.

> +                 failure: function (response, opts) {
> +                     Ext.Msg.alert('Error', node.node + ': ' + 
> response.htmlStatus);
> +                 },
> +                 success: function (response, opts) {
> +                     var data = response.result.data;
> +                     if (!standalone) {
> +                         // Task has been started on multiple nodes
> +                         // User has to figure out which to monitor 
> themselves

This is actually not true, because standalone does only state that there are at 
least 2 nodes in the cluster, but this does not state anything about how many 
tasks will be spawned. If you take a look at the bulk start/stop ui, there 
you'll have an example how this is handled if more than one task is involved. 
If you handle the masking of the grid correctly I would be ok with it not 
showing a TaskViewer at all, to not make this a bigger expense than it needs to 
be.

> +                         return;
> +                     }
> +                     var win = Ext.create('Proxmox.window.TaskViewer', {
> +                             upid: data
> +                     });
> +                     win.show();
> +                 }
> +             });
> +         });
> +     }
> +
>       var edit_btn = new Proxmox.button.Button({
>           text: gettext('Edit'),
>           disabled: true,
> @@ -424,6 +451,33 @@ Ext.define('PVE.dc.BackupView', {
>           handler: run_editor
>       });
>  
> +     var caps = Ext.state.Manager.get('GuiCap');
> +     var run_btn = new Proxmox.button.Button({
> +         text: gettext('Run now'),
> +         disabled: true,
> +         hidden: !caps.nodes['Sys.Modify'],
> +         selModel: sm,
> +         handler: function() {
> +             var rec = sm.getSelection()[0];
> +             if (!rec) {
> +                 return;
> +             }
> +
> +             Ext.Msg.show({
> +                 title: gettext('Confirm'),
> +                 icon: Ext.Msg.QUESTION,
> +                 msg: gettext('Start the selected backup job now?'),
> +                 buttons: Ext.Msg.YESNO,
> +                 callback: function(btn) {
> +                     if (btn !== 'yes') {
> +                         return;
> +                     }
> +                     run_backup_now(rec.data.id);
> +                 }
> +             });
> +         }
> +     });
> +
>       var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
>           selModel: sm,
>           baseurl: '/cluster/backup',
> @@ -452,7 +506,8 @@ Ext.define('PVE.dc.BackupView', {
>                   }
>               },
>               remove_btn,
> -             edit_btn
> +             edit_btn,
> +             run_btn
>           ],
>           columns: [
>               {
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@pve.proxmox.com
> https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to