[pve-devel] [PATCH manager] Introduce check to disable quota usage for unprivileged containers
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Aug 23 16:55:03 CEST 2017
some comments inline.
On 08/23/2017 04:31 PM, Philip Abernethy wrote:
> Disables the quota checkbox for unprivileged containers in the creation wizard,
> as well as when editing or adding mountpoints.
> ---
> www/manager6/lxc/CreateWizard.js | 20 +++++++++++++++-----
> www/manager6/lxc/ResourceEdit.js | 10 ++++++++--
> www/manager6/lxc/Resources.js | 27 +++++++++++++++++++++------
> 3 files changed, 44 insertions(+), 13 deletions(-)
>
> diff --git a/www/manager6/lxc/CreateWizard.js b/www/manager6/lxc/CreateWizard.js
> index c2f16a1a..a8f6ef9f 100644
> --- a/www/manager6/lxc/CreateWizard.js
> +++ b/www/manager6/lxc/CreateWizard.js
> @@ -60,7 +60,8 @@ Ext.define('PVE.lxc.CreateWizard', {
> insideWizard: true,
> isCreate: true,
> unused: false,
> - confid: 'rootfs'
> + confid: 'rootfs',
> + unprivileged: false
nitpick: I know JS standard is weird for not allowing trailing commas,
but you can always add it in between to avoid touching multiple lines.
> });
>
> var networkpanel = Ext.create('PVE.lxc.NetworkInputPanel', {
> @@ -148,7 +149,7 @@ 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;
> }
> @@ -218,7 +219,16 @@ Ext.define('PVE.lxc.CreateWizard', {
> xtype: 'pvecheckbox',
> name: 'unprivileged',
> value: '',
> - fieldLabel: gettext('Unprivileged container')
> + fieldLabel: gettext('Unprivileged container'),
> + listeners: {
> + change: function(f, value) {
> + if (value) {
> + rootfspanel.down('field[name=quota]').setValue(false);
> + }
> + rootfspanel.unprivileged = value;
> + rootfspanel.down('field[name=quota]').setDisabled(value);
> + }
> + }
> }
> ],
> column2: column2,
> @@ -309,8 +319,8 @@ Ext.define('PVE.lxc.CreateWizard', {
> params: kv,
> success: function(response, opts){
> var upid = response.result.data;
> -
> - var win = Ext.create('PVE.window.TaskViewer', {
> +
> + var win = Ext.create('PVE.window.TaskViewer', {
> upid: upid
> });
> win.show();
> diff --git a/www/manager6/lxc/ResourceEdit.js b/www/manager6/lxc/ResourceEdit.js
> index 9efb5116..893e10e1 100644
> --- a/www/manager6/lxc/ResourceEdit.js
> +++ b/www/manager6/lxc/ResourceEdit.js
> @@ -39,6 +39,8 @@ Ext.define('PVE.lxc.CPUEdit', {
> Ext.define('PVE.lxc.MountPointEdit', {
> extend: 'PVE.window.Edit',
>
> + unprivileged: false,
> +
> initComponent : function() {
> var me = this;
>
> @@ -55,6 +57,7 @@ Ext.define('PVE.lxc.MountPointEdit', {
> confid: me.confid,
> nodename: nodename,
> unused: unused,
> + unprivileged: me.unprivileged,
> isCreate: me.isCreate
> });
>
> @@ -221,6 +224,8 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
>
> unused: false, // ADD usused disk imaged
>
> + unprivileged: false,
> +
> vmconfig: {}, // used to select usused disks
>
> onGetValues: function(values) {
> @@ -405,7 +410,7 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
> rec.data.type === 'zfspool')) {
> me.quota.setDisabled(true);
> me.quota.setValue(false);
> - } else {
> + } else if (!me.unprivileged) {
> me.quota.setDisabled(false);
> }
> if (me.unused || !me.isCreate) {
> @@ -502,7 +507,8 @@ Ext.define('PVE.lxc.MountPointInputPanel', {
> me.quota = Ext.createWidget('pvecheckbox', {
> name: 'quota',
> defaultValue: 0,
> - fieldLabel: gettext('Enable quota')
> + fieldLabel: gettext('Enable quota'),
same
> + disabled: me.unprivileged
> });
>
> me.column2 = [
> diff --git a/www/manager6/lxc/Resources.js b/www/manager6/lxc/Resources.js
> index c54c7001..23570a9c 100644
> --- a/www/manager6/lxc/Resources.js
> +++ b/www/manager6/lxc/Resources.js
> @@ -94,6 +94,9 @@ Ext.define('PVE.lxc.RessourceView', {
> defaultValue: PVE.Utils.noneText,
> editor: mpeditor,
> tdCls: 'pve-itype-icon-storage'
> + },
> + unprivileged: {
> + visible: false
> }
> };
>
> @@ -138,11 +141,22 @@ Ext.define('PVE.lxc.RessourceView', {
>
> var editor = rowdef.editor;
>
> - var win = Ext.create(editor, {
> - pveSelNode: me.pveSelNode,
> - confid: rec.data.key,
> - url: '/api2/extjs/' + baseurl
> - });
> + var win;
> + // Only containers can be unprivileged, handle them separately
we are already in lxc/Resources so this is all for CTs? confusing comment...
Why not just add
unprivileged: me.getObjectValue('unprivileged')
or
unprivileged: !!me.getObjectValue('unprivileged') // (if booleanes is a problem)
to the Ext.create editor config above, omitting the if completely?
> + if (me.getObjectValue('unprivileged')) {
> + win = Ext.create(editor, {
> + pveSelNode: me.pveSelNode,
> + confid: rec.data.key,
> + unprivileged: true,
> + url: '/api2/extjs/' + baseurl
> + });
> + } else {
> + win = Ext.create(editor, {
> + pveSelNode: me.pveSelNode,
> + confid: rec.data.key,
> + url: '/api2/extjs/' + baseurl
> + });
> + }
>
> win.show();
> win.on('destroy', reload);
> @@ -266,7 +280,8 @@ Ext.define('PVE.lxc.RessourceView', {
> handler: function() {
> var win = Ext.create('PVE.lxc.MountPointEdit', {
> url: '/api2/extjs/' + baseurl,
> - pveSelNode: me.pveSelNode
> + pveSelNode: me.pveSelNode,
> + unprivileged: me.getObjectValue('unprivileged')
> });
> win.on('destroy', reload);
> win.show();
>
More information about the pve-devel
mailing list