/*global
FileReader
*/
-/*jslint confusion: true */
+
Ext.define('PVE.lxc.CreateWizard', {
extend: 'PVE.window.Wizard',
- loadSSHKeyFromFile: function(file) {
- var me = this;
- // ssh-keygen produces 740 bytes for an average 4096 bit rsa key, with
- // a user@host comment, 1420 for 8192 bits; current max is 16kbit
- // assume: 740*8 for max. 32kbit (5920 byte file)
- // round upwards to nearest nice number => 8192 bytes, leaves lots of comment space
- if (file.size > 8192) {
- Ext.Msg.alert(gettext('Error'), gettext("Invalid file size: ") + file.size);
- return;
- }
- var reader = new FileReader();
- reader.onload = function(evt) {
- me.sshkeyfield.setValue(evt.target.result);
- };
- reader.readAsText(file);
- },
-
initComponent: function() {
var me = this;
var rootfspanel = Ext.create('PVE.lxc.MountPointInputPanel', {
title: gettext('Root Disk'),
insideWizard: true,
- create: true,
+ isCreate: true,
unused: false,
+ unprivileged: false,
confid: 'rootfs'
});
title: gettext('Network'),
insideWizard: true,
dataCache: {},
- create: true
+ isCreate: true
});
var passwordfield = Ext.createWidget('textfield', {
}
});
- me.sshkeyfield = Ext.createWidget('textfield', {
- xtype: 'textfield',
+ /*jslint confusion: true */
+ /* the validator function can return either a string or a boolean */
+ me.sshkeyfield = Ext.createWidget('proxmoxtextfield', {
name: 'ssh-public-keys',
value: '',
fieldLabel: gettext('SSH public key'),
ev.preventDefault();
}
var files = ev.dataTransfer.files;
- me.loadSSHKeyFromFile(files[0]);
+ PVE.Utils.loadSSHKeyFromFile(files[0], function (v) {
+ me.sshkeyfield.setValue(v);
+ });
});
}
});
validator: function(value) {
var pw = me.down('field[name=password]').getValue();
if (pw !== value) {
- return "Passwords does not match!";
+ return "Passwords do not match!";
}
return true;
}
},
me.sshkeyfield
];
+ /*jslint confusion: false */
if (window.FileReader) {
column2.push({
listeners: {
change: function(btn, e, value) {
e = e.event;
- me.loadSSHKeyFromFile(e.target.files[0]);
+ PVE.Utils.loadSSHKeyFromFile(e.target.files[0], function (v) {
+ me.sshkeyfield.setValue(v);
+ });
btn.reset();
}
}
{
xtype: 'inputpanel',
title: gettext('General'),
+ onlineHelp: 'pct_general',
column1: [
{
xtype: 'pveNodeSelector',
name: 'nodename',
- selectCurNode: true,
+ selectCurNode: !me.nodename,
+ preferredValue: me.nodename,
fieldLabel: gettext('Node'),
allowBlank: false,
onlineValidator: true,
}
},
{
- xtype: 'pveVMIDSelector',
- name: 'vmid',
+ xtype: 'pveGuestIDSelector',
+ name: 'vmid', // backend only knows vmid
+ guestType: 'lxc',
value: '',
- loadNextFreeVMID: true,
+ loadNextFreeID: true,
validateExists: false
},
{
- xtype: 'pvetextfield',
+ xtype: 'proxmoxtextfield',
name: 'hostname',
vtype: 'DnsName',
value: '',
fieldLabel: gettext('Hostname'),
skipEmptyText: true,
allowBlank: true
+ },
+ {
+ xtype: 'proxmoxcheckbox',
+ name: 'unprivileged',
+ value: '',
+ listeners: {
+ change: function(f, value) {
+ if (value) {
+ rootfspanel.down('field[name=quota]').setValue(false);
+ }
+ rootfspanel.unprivileged = value;
+ var hdsel = rootfspanel.down('#hdstorage');
+ hdsel.fireEvent('change', hdsel, hdsel.getValue());
+ }
+ },
+ fieldLabel: gettext('Unprivileged container')
}
],
column2: column2,
layout: 'fit',
items: [
{
- title: gettext('Settings'),
xtype: 'grid',
store: summarystore,
columns: [
delete kv.nodename;
delete kv.tmplstorage;
- if (!kv['ssh-public-keys'].length) {
- delete kv['ssh-public-keys'];
- } else if (!kv.password.length) {
+ if (!kv.password.length && kv['ssh-public-keys']) {
delete kv.password;
}
- PVE.Utils.API2Request({
+ Proxmox.Utils.API2Request({
url: '/nodes/' + nodename + '/lxc',
waitMsgTarget: me,
method: 'POST',
params: kv,
success: function(response, opts){
var upid = response.result.data;
-
- var win = Ext.create('PVE.window.TaskViewer', {
+
+ var win = Ext.create('Proxmox.window.TaskViewer', {
upid: upid
});
win.show();