]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/CreateWizard.js
1 /*jslint confusion: true*/
2 Ext
.define('PVE.lxc.CreateWizard', {
3 extend
: 'PVE.window.Wizard',
4 mixins
: ['Proxmox.Mixin.CBind'],
18 subject
: gettext('LXC Container'),
23 title
: gettext('General'),
24 onlineHelp
: 'pct_general',
27 xtype
: 'pveNodeSelector',
30 selectCurNode
: '{!nodename}',
31 preferredValue
: '{nodename}'
36 fieldLabel
: gettext('Node'),
41 xtype
: 'pveGuestIDSelector',
42 name
: 'vmid', // backend only knows vmid
49 xtype
: 'proxmoxtextfield',
53 fieldLabel
: gettext('Hostname'),
58 xtype
: 'proxmoxcheckbox',
62 value
: '{unprivileged}'
64 fieldLabel
: gettext('Unprivileged container')
69 xtype
: 'pvePoolSelector',
70 fieldLabel
: gettext('Resource Pool'),
77 inputType
: 'password',
80 fieldLabel
: gettext('Password'),
83 change: function(f
, value
) {
85 f
.up().down('field[name=confirmpw]').validate();
91 inputType
: 'password',
94 fieldLabel
: gettext('Confirm password'),
97 validator: function(value
) {
98 var pw
= this.up().down('field[name=password]').getValue();
100 return "Passwords do not match!";
106 xtype
: 'proxmoxtextfield',
107 name
: 'ssh-public-keys',
109 fieldLabel
: gettext('SSH public key'),
111 validator: function(value
) {
112 var pwfield
= this.up().down('field[name=password]');
114 var key
= PVE
.Parser
.parseSSHKey(value
);
116 return "Failed to recognize ssh key";
118 pwfield
.allowBlank
= true;
120 pwfield
.allowBlank
= false;
125 afterRender: function() {
126 if (!window
.FileReader
) {
127 // No FileReader support in this browser
130 var cancel = function(ev
) {
132 if (ev
.preventDefault
) {
137 field
.inputEl
.on('dragover', cancel
);
138 field
.inputEl
.on('dragenter', cancel
);
139 field
.inputEl
.on('drop', function(ev
) {
141 if (ev
.preventDefault
) {
144 var files
= ev
.dataTransfer
.files
;
145 PVE
.Utils
.loadSSHKeyFromFile(files
[0], function(v
) {
154 hidden
: !window
.FileReader
,
155 text
: gettext('Load SSH Key File'),
157 change: function(btn
, e
, value
) {
159 var field
= this.up().down('proxmoxtextfield[name=ssh-public-keys]');
160 PVE
.Utils
.loadSSHKeyFromFile(e
.target
.files
[0], function(v
) {
171 title
: gettext('Template'),
172 onlineHelp
: 'pct_container_images',
175 xtype
: 'pveStorageSelector',
177 fieldLabel
: gettext('Storage'),
178 storageContent
: 'vztmpl',
183 nodename
: '{nodename}'
187 xtype
: 'pveFileSelector',
189 storageContent
: 'vztmpl',
190 fieldLabel
: gettext('Template'),
192 storage
: '{storage}',
193 nodename
: '{nodename}'
200 xtype
: 'pveLxcMountPointInputPanel',
201 title
: gettext('Root Disk'),
206 nodename
: '{nodename}',
207 unprivileged
: '{unprivileged}'
212 xtype
: 'pveLxcCPUInputPanel',
213 title
: gettext('CPU'),
217 xtype
: 'pveLxcMemoryInputPanel',
218 title
: gettext('Memory'),
222 xtype
: 'pveLxcNetworkInputPanel',
223 title
: gettext('Network'),
226 nodename
: '{nodename}'
231 xtype
: 'pveLxcDNSInputPanel',
232 title
: gettext('DNS'),
236 title
: gettext('Confirm'),
249 {header
: 'Key', width
: 150, dataIndex
: 'key'},
250 {header
: 'Value', flex
: 1, dataIndex
: 'value'}
256 xtype
: 'proxmoxcheckbox',
260 boxLabel
: gettext('Start after created')
264 show: function(panel
) {
265 var wizard
= this.up('window');
266 var kv
= wizard
.getValues();
268 Ext
.Object
.each(kv
, function(key
, value
) {
269 if (key
=== 'delete' || key
=== 'tmplstorage') { // ignore
272 if (key
=== 'password') { // don't show pw
275 var html
= Ext
.htmlEncode(Ext
.JSON
.encode(value
));
276 data
.push({ key
: key
, value
: value
});
279 var summarystore
= panel
.down('grid').getStore();
280 summarystore
.suspendEvents();
281 summarystore
.removeAll();
282 summarystore
.add(data
);
284 summarystore
.resumeEvents();
285 summarystore
.fireEvent('refresh');
288 onSubmit: function() {
289 var wizard
= this.up('window');
290 var kv
= wizard
.getValues();
293 var nodename
= kv
.nodename
;
295 delete kv
.tmplstorage
;
297 if (!kv
.pool
.length
) {
301 if (!kv
.password
.length
&& kv
['ssh-public-keys']) {
305 Proxmox
.Utils
.API2Request({
306 url
: '/nodes/' + nodename
+ '/lxc',
307 waitMsgTarget
: wizard
,
310 success: function(response
, opts
){
311 var upid
= response
.result
.data
;
313 var win
= Ext
.create('Proxmox.window.TaskViewer', {
319 failure: function(response
, opts
) {
320 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);