]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/lxc/CreateWizard.js
5 Ext
.define('PVE.lxc.CreateWizard', {
6 extend
: 'PVE.window.Wizard',
8 initComponent: function() {
11 var summarystore
= Ext
.create('Ext.data.Store', {
21 var tmplsel
= Ext
.create('PVE.form.FileSelector', {
23 storageContent
: 'vztmpl',
24 fieldLabel
: gettext('Template'),
28 var tmplstoragesel
= Ext
.create('PVE.form.StorageSelector', {
30 fieldLabel
: gettext('Storage'),
31 storageContent
: 'vztmpl',
35 change: function(f
, value
) {
36 tmplsel
.setStorage(value
);
41 var rootfspanel
= Ext
.create('PVE.lxc.MountPointInputPanel', {
42 title
: gettext('Root Disk'),
50 var networkpanel
= Ext
.create('PVE.lxc.NetworkInputPanel', {
51 title
: gettext('Network'),
56 var passwordfield
= Ext
.createWidget('textfield', {
57 inputType
: 'password',
60 fieldLabel
: gettext('Password'),
63 change: function(f
, value
) {
67 me
.down('field[name=confirmpw]').validate();
71 /*jslint confusion: true */
72 /* the validator function can return either a string or a boolean */
73 me
.sshkeyfield
= Ext
.createWidget('proxmoxtextfield', {
74 name
: 'ssh-public-keys',
76 fieldLabel
: gettext('SSH public key'),
78 validator: function(value
) {
80 var key
= PVE
.Parser
.parseSSHKey(value
);
82 return "Failed to recognize ssh key";
84 me
.down('field[name=password]').allowBlank
= true;
86 me
.down('field[name=password]').allowBlank
= false;
88 me
.down('field[name=password]').validate();
91 afterRender: function() {
92 if (!window
.FileReader
) {
93 // No FileReader support in this browser
96 var cancel = function(ev
) {
98 if (ev
.preventDefault
) {
102 me
.sshkeyfield
.inputEl
.on('dragover', cancel
);
103 me
.sshkeyfield
.inputEl
.on('dragenter', cancel
);
104 me
.sshkeyfield
.inputEl
.on('drop', function(ev
) {
106 if (ev
.preventDefault
) {
109 var files
= ev
.dataTransfer
.files
;
110 PVE
.Utils
.loadSSHKeyFromFile(files
[0], function (v
) {
111 me
.sshkeyfield
.setValue(v
);
119 xtype
: 'pvePoolSelector',
120 fieldLabel
: gettext('Resource Pool'),
128 inputType
: 'password',
131 fieldLabel
: gettext('Confirm password'),
133 validator: function(value
) {
134 var pw
= me
.down('field[name=password]').getValue();
136 return "Passwords do not match!";
143 /*jslint confusion: false */
145 if (window
.FileReader
) {
149 text
: gettext('Load SSH Key File'),
151 change: function(btn
, e
, value
) {
153 PVE
.Utils
.loadSSHKeyFromFile(e
.target
.files
[0], function (v
) {
154 me
.sshkeyfield
.setValue(v
);
163 subject
: gettext('LXC Container'),
167 title
: gettext('General'),
168 onlineHelp
: 'pct_general',
171 xtype
: 'pveNodeSelector',
173 selectCurNode
: !me
.nodename
,
174 preferredValue
: me
.nodename
,
175 fieldLabel
: gettext('Node'),
177 onlineValidator
: true,
179 change: function(f
, value
) {
180 tmplstoragesel
.setNodename(value
);
181 tmplsel
.setStorage(undefined, value
);
182 networkpanel
.setNodename(value
);
183 rootfspanel
.setNodename(value
);
188 xtype
: 'pveGuestIDSelector',
189 name
: 'vmid', // backend only knows vmid
192 loadNextFreeID
: true,
193 validateExists
: false
196 xtype
: 'proxmoxtextfield',
200 fieldLabel
: gettext('Hostname'),
205 xtype
: 'proxmoxcheckbox',
206 name
: 'unprivileged',
209 change: function(f
, value
) {
211 rootfspanel
.down('field[name=quota]').setValue(false);
213 rootfspanel
.unprivileged
= value
;
214 var hdsel
= rootfspanel
.down('#hdstorage');
215 hdsel
.fireEvent('change', hdsel
, hdsel
.getValue());
218 fieldLabel
: gettext('Unprivileged container')
222 onGetValues: function(values
) {
223 delete values
.confirmpw
;
232 title
: gettext('Template'),
233 onlineHelp
: 'pct_container_images',
234 column1
: [ tmplstoragesel
, tmplsel
]
238 xtype
: 'pveLxcCPUInputPanel',
239 title
: gettext('CPU'),
243 xtype
: 'pveLxcMemoryInputPanel',
244 title
: gettext('Memory'),
249 xtype
: 'pveLxcDNSInputPanel',
250 title
: gettext('DNS'),
254 title
: gettext('Confirm'),
261 {header
: 'Key', width
: 150, dataIndex
: 'key'},
262 {header
: 'Value', flex
: 1, dataIndex
: 'value'}
267 show: function(panel
) {
268 var form
= me
.down('form').getForm();
269 var kv
= me
.getValues();
271 Ext
.Object
.each(kv
, function(key
, value
) {
272 if (key
=== 'delete' || key
=== 'tmplstorage') { // ignore
275 if (key
=== 'password') { // don't show pw
278 var html
= Ext
.htmlEncode(Ext
.JSON
.encode(value
));
279 data
.push({ key
: key
, value
: value
});
281 summarystore
.suspendEvents();
282 summarystore
.removeAll();
283 summarystore
.add(data
);
285 summarystore
.resumeEvents();
286 summarystore
.fireEvent('refresh');
289 onSubmit: function() {
290 var kv
= me
.getValues();
293 var nodename
= kv
.nodename
;
295 delete kv
.tmplstorage
;
297 if (!kv
.password
.length
&& kv
['ssh-public-keys']) {
301 Proxmox
.Utils
.API2Request({
302 url
: '/nodes/' + nodename
+ '/lxc',
306 success: function(response
, opts
){
307 var upid
= response
.result
.data
;
309 var win
= Ext
.create('Proxmox.window.TaskViewer', {
315 failure: function(response
, opts
) {
316 Ext
.Msg
.alert(gettext('Error'), response
.htmlStatus
);