]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/window/Restore.js
1 Ext
.define('PVE.window.Restore', {
2 extend
: 'Ext.window.Window', // fixme: Proxmox.window.Edit?
6 initComponent : function() {
10 throw "no node name specified";
14 throw "no volume ID specified";
18 throw "no vmtype specified";
21 var storagesel
= Ext
.create('PVE.form.StorageSelector', {
22 nodename
: me
.nodename
,
25 fieldLabel
: gettext('Storage'),
26 storageContent
: (me
.vmtype
=== 'lxc') ? 'rootdir' : 'images',
33 IDfield
= Ext
.create('Ext.form.field.Display', {
36 fieldLabel
: (me
.vmtype
=== 'lxc') ? 'CT' : 'VM'
39 IDfield
= Ext
.create('PVE.form.GuestIDSelector', {
42 loadNextGuestID
: true,
45 unique
= Ext
.create('Proxmox.form.Checkbox', {
47 fieldLabel
: gettext('Unique MAC address'),
54 xtype
: 'displayfield',
55 value
: me
.volidText
|| me
.volid
,
56 fieldLabel
: gettext('Source')
61 xtype
: 'proxmoxintegerfield',
63 fieldLabel
: gettext('Read Limit (MiB/s)'),
65 emptyText
: gettext('Defaults to target storage restore limit'),
68 'data-qtip': gettext("Use '0' to disable all bandwidth limits.")
74 /*jslint confusion: true*/
75 if (me
.vmtype
=== 'lxc') {
77 xtype
: 'proxmoxcheckbox',
80 fieldLabel
: gettext('Unprivileged container')
83 /*jslint confusion: false*/
85 me
.formPanel
= Ext
.create('Ext.form.Panel', {
95 var form
= me
.formPanel
.getForm();
97 var doRestore = function(url
, params
) {
98 Proxmox
.Utils
.API2Request({
103 failure: function (response
, opts
) {
104 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
106 success: function(response
, options
) {
107 var upid
= response
.result
.data
;
109 var win
= Ext
.create('Proxmox.window.TaskViewer', {
118 var submitBtn
= Ext
.create('Ext.Button', {
119 text
: gettext('Restore'),
121 var storage
= storagesel
.getValue();
122 var values
= form
.getValues();
126 vmid
: me
.vmid
|| values
.vmid
,
127 force
: me
.vmid
? 1 : 0
129 if (values
.unique
) { params
.unique
= 1; }
131 if (values
.bwlimit
!== undefined) {
132 params
.bwlimit
= values
.bwlimit
* 1024;
137 if (me
.vmtype
=== 'lxc') {
138 url
= '/nodes/' + me
.nodename
+ '/lxc';
139 params
.ostemplate
= me
.volid
;
141 if (values
.unprivileged
) { params
.unprivileged
= 1; }
142 msg
= Proxmox
.Utils
.format_task_description('vzrestore', params
.vmid
);
143 } else if (me
.vmtype
=== 'qemu') {
144 url
= '/nodes/' + me
.nodename
+ '/qemu';
145 params
.archive
= me
.volid
;
146 msg
= Proxmox
.Utils
.format_task_description('qmrestore', params
.vmid
);
148 throw 'unknown VM type';
152 msg
+= '. ' + gettext('This will permanently erase current VM data.');
153 Ext
.Msg
.confirm(gettext('Confirm'), msg
, function(btn
) {
157 doRestore(url
, params
);
160 doRestore(url
, params
);
165 form
.on('validitychange', function(f
, valid
) {
166 submitBtn
.setDisabled(!valid
);
169 var title
= gettext('Restore') + ": " + (
170 (me
.vmtype
=== 'lxc') ? 'CT' : 'VM');
173 title
+= " " + me
.vmid
;
182 items
: [ me
.formPanel
],
183 buttons
: [ submitBtn
]