]> git.proxmox.com Git - pve-manager.git/blame - www/manager/openvz/CreateWizard.js
disable animation of charts on load
[pve-manager.git] / www / manager / openvz / CreateWizard.js
CommitLineData
a2f57991 1/*jslint confusion: true */
aff192e6
DM
2Ext.define('PVE.openvz.CreateWizard', {
3 extend: 'PVE.window.Wizard',
4
5 initComponent: function() {
6 var me = this;
7
c6594d0e
DM
8 var summarystore = Ext.create('Ext.data.Store', {
9 model: 'KeyValue',
10 sorters: [
11 {
12 property : 'key',
13 direction: 'ASC'
14 }
15 ]
16 });
17
9f767883
DM
18 var storagesel = Ext.create('PVE.form.StorageSelector', {
19 name: 'storage',
f3bb9bb6 20 fieldLabel: gettext('Storage'),
9f767883
DM
21 storageContent: 'rootdir',
22 autoSelect: true,
23 allowBlank: false
24 });
25
c6594d0e
DM
26 var tmplsel = Ext.create('PVE.form.FileSelector', {
27 name: 'ostemplate',
28 storageContent: 'vztmpl',
f3bb9bb6 29 fieldLabel: gettext('Template'),
c6594d0e
DM
30 allowBlank: false
31 });
32
df4bd3ad
DM
33 var tmplstoragesel = Ext.create('PVE.form.StorageSelector', {
34 name: 'tmplstorage',
f3bb9bb6 35 fieldLabel: gettext('Storage'),
df4bd3ad
DM
36 storageContent: 'vztmpl',
37 autoSelect: true,
38 allowBlank: false,
39 listeners: {
40 change: function(f, value) {
41 tmplsel.setStorage(value);
42 }
43 }
44 });
45
c6594d0e
DM
46 var bridgesel = Ext.create('PVE.form.BridgeSelector', {
47 name: 'bridge',
0070ee37 48 fieldLabel: gettext('Bridge'),
c6594d0e
DM
49 labelAlign: 'right',
50 autoSelect: true,
51 disabled: true,
52 allowBlank: false
53 });
54
aff192e6 55 Ext.applyIf(me, {
58eb5905 56 subject: gettext('OpenVZ Container'),
aff192e6
DM
57 items: [
58 {
c6594d0e 59 xtype: 'inputpanel',
f3bb9bb6 60 title: gettext('General'),
c6594d0e
DM
61 column1: [
62 {
63 xtype: 'PVE.form.NodeSelector',
64 name: 'nodename',
f3bb9bb6 65 fieldLabel: gettext('Node'),
c6594d0e
DM
66 allowBlank: false,
67 onlineValidator: true,
68 listeners: {
69 change: function(f, value) {
df4bd3ad
DM
70 tmplstoragesel.setNodename(value);
71 tmplsel.setStorage(undefined, value);
c6594d0e 72 bridgesel.setNodename(value);
9f767883 73 storagesel.setNodename(value);
c6594d0e
DM
74 }
75 }
76 },
77 {
04f5d98e 78 xtype: 'pveVMIDSelector',
c6594d0e 79 name: 'vmid',
e893439e
DM
80 value: '',
81 loadNextFreeVMID: true,
04f5d98e 82 validateExists: false
c6594d0e
DM
83 },
84 {
85 xtype: 'pvetextfield',
86 name: 'hostname',
b2fe56d8 87 vtype: 'DnsName',
c6594d0e 88 value: '',
0070ee37 89 fieldLabel: gettext('Hostname'),
c6594d0e 90 skipEmptyText: true,
b2fe56d8 91 allowBlank: true
c6594d0e
DM
92 }
93 ],
94 column2: [
c92c67a6
DM
95 {
96 xtype: 'pvePoolSelector',
97 fieldLabel: gettext('Resource Pool'),
98 name: 'pool',
99 value: '',
100 allowBlank: true
101 },
9f767883 102 storagesel,
c6594d0e
DM
103 {
104 xtype: 'textfield',
105 inputType: 'password',
106 name: 'password',
107 value: '',
f3bb9bb6 108 fieldLabel: gettext('Password'),
c6594d0e
DM
109 allowBlank: false,
110 minLength: 5,
111 change: function(f, value) {
112 if (!me.rendered) {
113 return;
114 }
115 me.down('field[name=confirmpw]').validate();
116 }
117 },
118 {
119 xtype: 'textfield',
120 inputType: 'password',
121 name: 'confirmpw',
122 value: '',
f3bb9bb6 123 fieldLabel: gettext('Confirm password'),
c6594d0e
DM
124 allowBlank: false,
125 validator: function(value) {
126 var pw = me.down('field[name=password]').getValue();
127 if (pw !== value) {
8989e847 128 return "Passwords does not match!";
c6594d0e
DM
129 }
130 return true;
131 }
132 }
133 ],
134 onGetValues: function(values) {
135 delete values.confirmpw;
c92c67a6
DM
136 if (!values.pool) {
137 delete values.pool;
138 }
c6594d0e
DM
139 return values;
140 }
141 },
142 {
143 xtype: 'inputpanel',
f3bb9bb6 144 title: gettext('Template'),
df4bd3ad 145 column1: [ tmplstoragesel, tmplsel]
c6594d0e
DM
146 },
147 {
d9f0ffa9 148 xtype: 'pveOpenVZResourceInputPanel',
f3bb9bb6 149 title: gettext('Resources')
c6594d0e
DM
150 },
151 {
152 xtype: 'inputpanel',
f3bb9bb6 153 title: gettext('Network'),
c6594d0e
DM
154 column1: [
155 {
156 xtype: 'radiofield',
157 name: 'networkmode',
158 inputValue: 'routed',
159 boxLabel: 'Routed mode (venet)',
160 checked: true,
161 listeners: {
162 change: function(f, value) {
163 if (!me.rendered) {
164 return;
165 }
166 me.down('field[name=ip_address]').setDisabled(!value);
167 me.down('field[name=ip_address]').validate();
168 }
169 }
170 },
171 {
172 xtype: 'textfield',
173 name: 'ip_address',
ba777999 174 vtype: 'IP64Address',
c6594d0e 175 value: '',
f3bb9bb6 176 fieldLabel: gettext('IP address'),
c6594d0e
DM
177 labelAlign: 'right',
178 allowBlank: false
179 }
180 ],
181 column2: [
182 {
183 xtype: 'radiofield',
184 name: 'networkmode',
185 inputValue: 'bridge',
0070ee37 186 boxLabel: gettext('Bridged mode'),
c6594d0e
DM
187 checked: false,
188 listeners: {
189 change: function(f, value) {
190 if (!me.rendered) {
191 return;
192 }
c165567b 193 me.down('field[name=firewall]').setDisabled(!value);
c6594d0e
DM
194 me.down('field[name=bridge]').setDisabled(!value);
195 me.down('field[name=bridge]').validate();
196 }
197 }
198 },
c165567b
DM
199 bridgesel,
200 {
201 xtype: 'pvecheckbox',
202 fieldLabel: gettext('Firewall'),
203 name: 'firewall',
204 checked: false,
205 disabled: true
206 }
c6594d0e
DM
207 ],
208 onGetValues: function(values) {
877d3f6d 209 if (values.networkmode === 'bridge') {
c165567b
DM
210 var netif = PVE.Parser.printOpenVZNetIf({
211 eth0: {
212 ifname: "eth0",
213 bridge: values.bridge,
214 firewall: values.firewall
215 }
216 });
217 return { netif: netif };
877d3f6d
DM
218 } else {
219 return { ip_address: values.ip_address };
220 }
c6594d0e
DM
221 }
222 },
223 {
224 xtype: 'inputpanel',
225 title: 'DNS',
226 column1: [
227 {
228 xtype: 'pvetextfield',
229 name: 'searchdomain',
230 skipEmptyText: true,
0070ee37 231 fieldLabel: gettext('DNS domain'),
c6594d0e
DM
232 emptyText: 'use host settings',
233 allowBlank: true,
234 listeners: {
235 change: function(f, value) {
236 if (!me.rendered) {
237 return;
238 }
a2f57991 239 var field = me.down('#dns1');
c6594d0e
DM
240 field.setDisabled(!value);
241 field.clearInvalid();
a2f57991 242 field = me.down('#dns2');
c6594d0e
DM
243 field.setDisabled(!value);
244 field.clearInvalid();
245 }
246 }
247 },
248 {
249 xtype: 'pvetextfield',
e4e3bdd4 250 fieldLabel: gettext('DNS server') + " 1",
c6594d0e
DM
251 vtype: 'IPAddress',
252 allowBlank: true,
253 disabled: true,
254 name: 'nameserver',
255 itemId: 'dns1'
256 },
257 {
258 xtype: 'pvetextfield',
e4e3bdd4 259 fieldLabel: gettext('DNS server') + " 2",
c6594d0e
DM
260 vtype: 'IPAddress',
261 skipEmptyText: true,
262 disabled: true,
263 name: 'nameserver',
264 itemId: 'dns2'
265 }
266 ]
267 },
268 {
f3bb9bb6 269 title: gettext('Confirm'),
aff192e6 270 layout: 'fit',
c6594d0e
DM
271 items: [
272 {
f3bb9bb6 273 title: gettext('Settings'),
c6594d0e
DM
274 xtype: 'grid',
275 store: summarystore,
276 columns: [
277 {header: 'Key', width: 150, dataIndex: 'key'},
278 {header: 'Value', flex: 1, dataIndex: 'value'}
279 ]
280 }
281 ],
282 listeners: {
283 show: function(panel) {
284 var form = me.down('form').getForm();
285 var kv = me.getValues();
286 var data = [];
287 Ext.Object.each(kv, function(key, value) {
df4bd3ad 288 if (key === 'delete' || key === 'tmplstorage') { // ignore
c6594d0e
DM
289 return;
290 }
291 if (key === 'password') { // don't show pw
292 return;
293 }
294 var html = Ext.htmlEncode(Ext.JSON.encode(value));
295 data.push({ key: key, value: value });
296 });
297 summarystore.suspendEvents();
298 summarystore.removeAll();
299 summarystore.add(data);
300 summarystore.sort();
301 summarystore.resumeEvents();
302 summarystore.fireEvent('datachanged', summarystore);
303 }
304 },
305 onSubmit: function() {
306 var kv = me.getValues();
307 delete kv['delete'];
308
309 var nodename = kv.nodename;
310 delete kv.nodename;
df4bd3ad 311 delete kv.tmplstorage;
c6594d0e
DM
312
313 PVE.Utils.API2Request({
314 url: '/nodes/' + nodename + '/openvz',
315 waitMsgTarget: me,
316 method: 'POST',
317 params: kv,
4545bfda
DM
318 success: function(response, opts){
319 var upid = response.result.data;
320
321 var win = Ext.create('PVE.window.TaskViewer', {
322 upid: upid
323 });
324 win.show();
c6594d0e
DM
325 me.close();
326 },
327 failure: function(response, opts) {
f3bb9bb6 328 Ext.Msg.alert(gettext('Error'), response.htmlStatus);
c6594d0e
DM
329 }
330 });
331 }
aff192e6
DM
332 }
333 ]
334 });
335
336 me.callParent();
337 }
338});
339
340
341