]>
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',
27 // when restoring a container without specifying a storage, the backend defaults
28 // to 'local', which is unintuitive and 'rootdir' might not even be allowed on it
29 allowBlank
: me
.vmtype
!== 'lxc',
30 emptyText
: me
.vmtype
=== 'lxc' ? '' : gettext('From backup configuration'),
31 autoSelect
: me
.vmtype
=== 'lxc',
36 IDfield
= Ext
.create('Ext.form.field.Display', {
39 fieldLabel
: me
.vmtype
=== 'lxc' ? 'CT' : 'VM',
42 IDfield
= Ext
.create('PVE.form.GuestIDSelector', {
46 validateExists
: false,
52 xtype
: 'displayfield',
53 value
: me
.volidText
|| me
.volid
,
54 fieldLabel
: gettext('Source'),
59 xtype
: 'pveBandwidthField',
62 fieldLabel
: gettext('Read Limit'),
63 emptyText
: gettext('Defaults to target storage restore limit'),
66 'data-qtip': gettext("Use '0' to disable all bandwidth limits."),
70 xtype
: 'fieldcontainer',
73 xtype
: 'proxmoxcheckbox',
75 fieldLabel
: gettext('Unique'),
80 'data-qtip': gettext('Autogenerate unique properties, e.g., MAC addresses'),
85 xtype
: 'proxmoxcheckbox',
88 fieldLabel
: gettext('Start after restore'),
95 if (me
.vmtype
=== 'lxc') {
97 xtype
: 'proxmoxcheckbox',
100 fieldLabel
: gettext('Unprivileged container'),
104 me
.formPanel
= Ext
.create('Ext.form.Panel', {
114 var form
= me
.formPanel
.getForm();
116 var doRestore = function(url
, params
) {
117 Proxmox
.Utils
.API2Request({
122 failure: function(response
, opts
) {
123 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);
125 success: function(response
, options
) {
126 var upid
= response
.result
.data
;
128 var win
= Ext
.create('Proxmox.window.TaskViewer', {
137 var submitBtn
= Ext
.create('Ext.Button', {
138 text
: gettext('Restore'),
139 handler: function() {
140 var values
= form
.getValues();
143 vmid
: me
.vmid
|| values
.vmid
,
144 force
: me
.vmid
? 1 : 0,
146 if (values
.unique
) { params
.unique
= 1; }
147 if (values
.start
) { params
.start
= 1; }
148 if (values
.storage
) { params
.storage
= values
.storage
; }
150 if (values
.bwlimit
!== undefined) {
151 params
.bwlimit
= values
.bwlimit
;
156 if (me
.vmtype
=== 'lxc') {
157 url
= '/nodes/' + me
.nodename
+ '/lxc';
158 params
.ostemplate
= me
.volid
;
160 if (values
.unprivileged
) { params
.unprivileged
= 1; }
161 msg
= Proxmox
.Utils
.format_task_description('vzrestore', params
.vmid
);
162 } else if (me
.vmtype
=== 'qemu') {
163 url
= '/nodes/' + me
.nodename
+ '/qemu';
164 params
.archive
= me
.volid
;
165 msg
= Proxmox
.Utils
.format_task_description('qmrestore', params
.vmid
);
167 throw 'unknown VM type';
171 msg
+= '. ' + gettext('This will permanently erase current VM data.');
172 Ext
.Msg
.confirm(gettext('Confirm'), msg
, function(btn
) {
176 doRestore(url
, params
);
179 doRestore(url
, params
);
184 form
.on('validitychange', function(f
, valid
) {
185 submitBtn
.setDisabled(!valid
);
188 var title
= gettext('Restore') + ": " + (
189 me
.vmtype
=== 'lxc' ? 'CT' : 'VM');
192 title
+= " " + me
.vmid
;
201 items
: [me
.formPanel
],
202 buttons
: [submitBtn
],