[pve-devel] [PATCH manager 2/2] fix #1594: add "Run now" button to cluster backup page

Stefan Reiter s.reiter at proxmox.com
Wed Jul 31 13:23:55 CEST 2019


Includes a "confirm" dialog to not accidentally run a potentially large backup
job.

Signed-off-by: Stefan Reiter <s.reiter at 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();
 	};
 
+	var run_backup_now = function(jobid) {
+	    var allNodes = PVE.data.ResourceStore.getNodes();
+	    var standalone = allNodes.length === 1;
+	    allNodes.forEach(node => {
+		Proxmox.Utils.API2Request({
+		    url: '/cluster/backup/' + jobid + '/' + node.node + '/run',
+		    method: 'POST',
+		    waitMsgTarget: me,
+		    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
+			    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





More information about the pve-devel mailing list