diff --git a/www/manager5/window/Backup.js b/www/manager5/window/Backup.js new file mode 100644 index 00000000..f7b30d5f --- /dev/null +++ b/www/manager5/window/Backup.js @@ -0,0 +1,107 @@ +Ext.define('PVE.window.Backup', { + extend: 'Ext.window.Window', + + resizable: false, + + initComponent : function() { + var me = this; + + if (!me.nodename) { + throw "no node name specified"; + } + + if (!me.vmid) { + throw "no VM ID specified"; + } + + if (!me.vmtype) { + throw "no VM type specified"; + } + + var storagesel = Ext.create('PVE.form.StorageSelector', { + nodename: me.nodename, + name: 'storage', + value: me.storage, + fieldLabel: gettext('Storage'), + storageContent: 'backup', + allowBlank: false + }); + + me.formPanel = Ext.create('Ext.form.Panel', { + bodyPadding: 10, + border: false, + fieldDefaults: { + labelWidth: 100, + anchor: '100%' + }, + items: [ + storagesel, + { + xtype: 'pveBackupModeSelector', + fieldLabel: gettext('Mode'), + value: 'snapshot', + name: 'mode' + }, + { + xtype: 'pveCompressionSelector', + name: 'compress', + value: 'lzo', + fieldLabel: gettext('Compression') + } + ] + }); + + var form = me.formPanel.getForm(); + + var submitBtn = Ext.create('Ext.Button', { + text: gettext('Backup'), + handler: function(){ + var storage = storagesel.getValue(); + var values = form.getValues(); + var params = { + storage: storage, + vmid: me.vmid, + mode: values.mode, + remove: 0 + }; + if (values.compress) { + params.compress = values.compress; + } + + PVE.Utils.API2Request({ + url: '/nodes/' + me.nodename + '/vzdump', + params: params, + method: 'POST', + failure: function (response, opts) { + Ext.Msg.alert('Error',response.htmlStatus); + }, + success: function(response, options) { + var upid = response.result.data; + + var win = Ext.create('PVE.window.TaskViewer', { + upid: upid + }); + win.show(); + me.close(); + } + }); + } + }); + + var title = gettext('Backup') + " " + + ((me.vmtype === 'openvz') ? "CT" : "VM") + + " " + me.vmid; + + Ext.apply(me, { + title: title, + width: 350, + modal: true, + layout: 'auto', + border: false, + items: [ me.formPanel ], + buttons: [ submitBtn ] + }); + + me.callParent(); + } +});