]> git.proxmox.com Git - pve-manager.git/blame - www/manager/qemu/HDMove.js
add zfs filter in hdmove
[pve-manager.git] / www / manager / qemu / HDMove.js
CommitLineData
93e8c450
AD
1Ext.define('PVE.window.HDMove', {
2 extend: 'Ext.window.Window',
3
4 resizable: false,
5
6
af53052e 7 move_disk: function(disk, storage, format, delete_disk) {
93e8c450
AD
8 var me = this;
9
b5ffa3ec 10 var params = { disk: disk, storage: storage };
93e8c450
AD
11
12 if (format) {
13 params.format = format;
14 }
af53052e
DM
15
16 if (delete_disk) {
17 params['delete'] = 1;
b5ffa3ec 18 }
93e8c450
AD
19
20 PVE.Utils.API2Request({
21 params: params,
af53052e 22 url: '/nodes/' + me.nodename + '/qemu/' + me.vmid + '/move_disk',
93e8c450 23 waitMsgTarget: me,
d8269080 24 method: 'POST',
93e8c450
AD
25 failure: function(response, opts) {
26 Ext.Msg.alert('Error', response.htmlStatus);
27 },
28 success: function(response, options) {
772a8ffb
DM
29 var upid = response.result.data;
30 var win = Ext.create('PVE.window.TaskViewer', { upid: upid });
31 win.show();
93e8c450
AD
32 me.close();
33 }
34 });
35
36 },
37
38 initComponent : function() {
39 var me = this;
40
41 var diskarray = [];
42
43 if (!me.nodename) {
44 throw "no node name specified";
45 }
46
47 if (!me.vmid) {
48 throw "no VM ID specified";
49 }
50
51 var items = [
52 {
53 xtype: 'displayfield',
54 name: 'disk',
55 value: me.disk,
0070ee37 56 fieldLabel: gettext('Disk'),
93e8c450
AD
57 vtype: 'StorageId',
58 allowBlank: false
b5ffa3ec 59 }
93e8c450
AD
60 ];
61
62 me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
63 name: 'hdstorage',
64 nodename: me.nodename,
0070ee37 65 fieldLabel: gettext('Target Storage'),
93e8c450
AD
66 storageContent: 'images',
67 autoSelect: me.insideWizard,
68 allowBlank: true,
69 disabled: false,
70 hidden: false,
71 listeners: {
72 change: function(f, value) {
73 var rec = f.store.getById(value);
74 if (rec.data.type === 'iscsi') {
75 me.formatsel.setValue('raw');
76 me.formatsel.setDisabled(true);
77 } else if (rec.data.type === 'lvm' ||
78 rec.data.type === 'rbd' ||
4920fa3a
AD
79 rec.data.type === 'sheepdog' ||
80 rec.data.type === 'zfs'
81
93e8c450
AD
82 ) {
83 me.formatsel.setValue('raw');
84 me.formatsel.setDisabled(true);
85 } else {
86 me.formatsel.setDisabled(false);
87 }
88
89 }
90 }
91
92 });
93
94 me.formatsel = Ext.create('PVE.form.DiskFormatSelector', {
95 name: 'diskformat',
96 fieldLabel: gettext('Format'),
97 value: 'raw',
98 disabled: true,
99 hidden: false,
100 allowBlank: false
101 });
102
103
af53052e 104
93e8c450
AD
105 items.push(me.hdstoragesel);
106 items.push(me.formatsel);
107
af53052e
DM
108 items.push({
109 xtype: 'pvecheckbox',
110 fieldLabel: gettext('Delete source'),
111 name: 'deleteDisk',
112 uncheckedValue: 0,
113 checked: false
114 });
115
93e8c450
AD
116 me.formPanel = Ext.create('Ext.form.Panel', {
117 bodyPadding: 10,
118 border: false,
119 fieldDefaults: {
120 labelWidth: 100,
121 anchor: '100%'
122 },
123 items: items
124 });
125
126 var form = me.formPanel.getForm();
127
128 var submitBtn;
129
8b034616 130 me.title = gettext("Move disk");
93e8c450 131 submitBtn = Ext.create('Ext.Button', {
8b034616 132 text: gettext('Move disk'),
93e8c450
AD
133 handler: function() {
134 if (form.isValid()) {
135 var values = form.getValues();
af53052e
DM
136 me.move_disk(me.disk, values.hdstorage, values.diskformat,
137 values.deleteDisk);
93e8c450
AD
138 }
139 }
140 });
141
142 Ext.apply(me, {
143 modal: true,
144 width: 350,
145 border: false,
146 layout: 'fit',
147 buttons: [ submitBtn ],
148 items: [ me.formPanel ]
149 });
150
151
152 me.callParent();
153
154
155 }
156});