]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/lxc/CreateWizard.js
ui: move loadSSHKeyFromFile from lxc/Create to Utils
[pve-manager.git] / www / manager6 / lxc / CreateWizard.js
index 46f4e81f8b1dc89114b7669aac10902ad44f44f8..65b1348d08fd152a29e5f3f21df631a52a62f5b0 100644 (file)
@@ -1,27 +1,10 @@
 /*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;
 
@@ -58,8 +41,9 @@ Ext.define('PVE.lxc.CreateWizard', {
        var rootfspanel = Ext.create('PVE.lxc.MountPointInputPanel', {
            title: gettext('Root Disk'),
            insideWizard: true,
-           create: true,
+           isCreate: true,
            unused: false,
+           unprivileged: false,
            confid: 'rootfs'
        });
 
@@ -67,7 +51,7 @@ Ext.define('PVE.lxc.CreateWizard', {
            title: gettext('Network'),
            insideWizard: true,
            dataCache: {},
-           create: true
+           isCreate: true
        });
 
        var passwordfield = Ext.createWidget('textfield', {
@@ -85,8 +69,9 @@ Ext.define('PVE.lxc.CreateWizard', {
            }
        });
 
-       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'),
@@ -123,7 +108,9 @@ Ext.define('PVE.lxc.CreateWizard', {
                        ev.preventDefault();
                    }
                    var files = ev.dataTransfer.files;
-                   me.loadSSHKeyFromFile(files[0]);
+                   PVE.Utils.loadSSHKeyFromFile(files[0], function (v) {
+                       me.sshkeyfield.setValue(v);
+                   });
                });
            }
        });
@@ -147,13 +134,14 @@ Ext.define('PVE.lxc.CreateWizard', {
                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({
@@ -163,7 +151,9 @@ Ext.define('PVE.lxc.CreateWizard', {
                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();
                    }
                }
@@ -176,11 +166,13 @@ Ext.define('PVE.lxc.CreateWizard', {
                {
                    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,
@@ -194,20 +186,37 @@ Ext.define('PVE.lxc.CreateWizard', {
                            }
                        },
                        {
-                           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,
@@ -247,7 +256,6 @@ Ext.define('PVE.lxc.CreateWizard', {
                    layout: 'fit',
                    items: [
                        {
-                           title: gettext('Settings'),
                            xtype: 'grid',
                            store: summarystore,
                            columns: [
@@ -287,21 +295,19 @@ Ext.define('PVE.lxc.CreateWizard', {
                        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();