]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/qemu/HDMove.js
ui: BusTypeSelector: change noVirtIO to withVirtIO
[pve-manager.git] / www / manager6 / qemu / HDMove.js
CommitLineData
5d485b70
DM
1Ext.define('PVE.window.HDMove', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6
7 move_disk: function(disk, storage, format, delete_disk) {
8 var me = this;
53e3ea84 9 var qemu = me.type === 'qemu';
d47512af
DC
10 var params = {};
11 params.storage = storage;
12 params[qemu ? 'disk':'volume'] = disk;
5d485b70 13
d47512af
DC
14 if (format && qemu) {
15 params.format = format;
16 }
5d485b70 17
5d485b70 18 if (delete_disk) {
399ffa76 19 params.delete = 1;
5d485b70
DM
20 }
21
d47512af
DC
22 var url = '/nodes/' + me.nodename + '/' + me.type + '/' + me.vmid + '/';
23 url += qemu ? 'move_disk' : 'move_volume';
24
e7ade592 25 Proxmox.Utils.API2Request({
5d485b70 26 params: params,
d47512af 27 url: url,
5d485b70
DM
28 waitMsgTarget: me,
29 method: 'POST',
30 failure: function(response, opts) {
31 Ext.Msg.alert('Error', response.htmlStatus);
32 },
33 success: function(response, options) {
34 var upid = response.result.data;
811a06ca 35 var win = Ext.create('Proxmox.window.TaskViewer', {
f6710aac 36 upid: upid,
811a06ca 37 });
5d485b70 38 win.show();
eb273d60 39 win.on('destroy', function() { me.close(); });
f6710aac 40 },
5d485b70 41 });
5d485b70
DM
42 },
43
8058410f 44 initComponent: function() {
5d485b70
DM
45 var me = this;
46
5d485b70
DM
47 if (!me.nodename) {
48 throw "no node name specified";
49 }
50
51 if (!me.vmid) {
52 throw "no VM ID specified";
53 }
54
d47512af
DC
55 if (!me.type) {
56 me.type = 'qemu';
57 }
58
53e3ea84 59 var qemu = me.type === 'qemu';
d47512af 60
5d485b70
DM
61 var items = [
62 {
63 xtype: 'displayfield',
d47512af 64 name: qemu ? 'disk' : 'volume',
5d485b70 65 value: me.disk,
d47512af 66 fieldLabel: qemu ? gettext('Disk') : gettext('Mount Point'),
5d485b70 67 vtype: 'StorageId',
f6710aac
TL
68 allowBlank: false,
69 },
5d485b70
DM
70 ];
71
fb71c9a5
DC
72 items.push({
73 xtype: 'pveDiskStorageSelector',
74 storageLabel: gettext('Target Storage'),
75 nodename: me.nodename,
d47512af 76 storageContent: qemu ? 'images' : 'rootdir',
f6710aac 77 hideSize: true,
6d084964 78 hideFormat: me.disk === 'tpmstate0',
5d485b70
DM
79 });
80
5d485b70 81 items.push({
896c0d50 82 xtype: 'proxmoxcheckbox',
5d485b70
DM
83 fieldLabel: gettext('Delete source'),
84 name: 'deleteDisk',
85 uncheckedValue: 0,
f6710aac 86 checked: false,
5d485b70
DM
87 });
88
89 me.formPanel = Ext.create('Ext.form.Panel', {
90 bodyPadding: 10,
91 border: false,
92 fieldDefaults: {
93 labelWidth: 100,
f6710aac 94 anchor: '100%',
5d485b70 95 },
f6710aac 96 items: items,
5d485b70
DM
97 });
98
99 var form = me.formPanel.getForm();
100
101 var submitBtn;
102
d47512af 103 me.title = qemu ? gettext("Move disk") : gettext('Move Volume');
5d485b70 104 submitBtn = Ext.create('Ext.Button', {
d47512af 105 text: me.title,
5d485b70
DM
106 handler: function() {
107 if (form.isValid()) {
108 var values = form.getValues();
109 me.move_disk(me.disk, values.hdstorage, values.diskformat,
110 values.deleteDisk);
111 }
f6710aac 112 },
5d485b70
DM
113 });
114
115 Ext.apply(me, {
116 modal: true,
117 width: 350,
118 border: false,
119 layout: 'fit',
8058410f
TL
120 buttons: [submitBtn],
121 items: [me.formPanel],
5d485b70
DM
122 });
123
124
125 me.callParent();
126
fb71c9a5
DC
127 me.mon(me.formPanel, 'validitychange', function(fp, isValid) {
128 submitBtn.setDisabled(!isValid);
129 });
5d485b70 130
fb71c9a5 131 me.formPanel.isValid();
f6710aac 132 },
5d485b70 133});