[pve-devel] applied: [PATCH manager v3] gui: expose lxc features

Thomas Lamprecht t.lamprecht at proxmox.com
Mon Nov 5 13:03:51 CET 2018


On 11/5/18 10:07 AM, Dominik Csapak wrote:
> but constrain editing to root at pam
> give a checkbox (for now) for nfs and cifs, but keep all that are manually set
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> changes from v2:
> * do not autogenerate checkboxes
> * remove now unecessary initComponent
> * indentation fix
> 

applied, will send a small followup regarding the disabled keyctl for
priviledged CTs.

>  www/manager6/Makefile            |  1 +
>  www/manager6/lxc/FeaturesEdit.js | 93 ++++++++++++++++++++++++++++++++++++++++
>  www/manager6/lxc/Options.js      |  6 +++
>  3 files changed, 100 insertions(+)
>  create mode 100644 www/manager6/lxc/FeaturesEdit.js
> 
> diff --git a/www/manager6/Makefile b/www/manager6/Makefile
> index 68b5227b..cc2f7203 100644
> --- a/www/manager6/Makefile
> +++ b/www/manager6/Makefile
> @@ -146,6 +146,7 @@ JSSRC= 				                 	\
>  	lxc/Summary.js					\
>  	lxc/Network.js					\
>  	lxc/Resources.js				\
> +	lxc/FeaturesEdit.js				\
>  	lxc/Options.js					\
>  	lxc/DNS.js					\
>  	lxc/Config.js					\
> diff --git a/www/manager6/lxc/FeaturesEdit.js b/www/manager6/lxc/FeaturesEdit.js
> new file mode 100644
> index 00000000..02ce0a1d
> --- /dev/null
> +++ b/www/manager6/lxc/FeaturesEdit.js
> @@ -0,0 +1,93 @@
> +Ext.define('PVE.lxc.FeaturesInputPanel', {
> +    extend: 'Proxmox.panel.InputPanel',
> +    xtype: 'pveLxcFeaturesInputPanel',
> +
> +    // used to save the mounts fstypes until sending
> +    mounts: [],
> +
> +    fstypes: ['nfs', 'cifs'],
> +
> +    items: [
> +	{
> +	    xtype: 'proxmoxcheckbox',
> +	    fieldLabel: gettext('keyctl'),
> +	    name: 'keyctl'
> +	},
> +	{
> +	    xtype: 'proxmoxcheckbox',
> +	    fieldLabel: gettext('Nesting'),
> +	    name: 'nesting'
> +	},
> +	{
> +	    xtype: 'proxmoxcheckbox',
> +	    name: 'nfs',
> +	    fieldLabel: 'NFS'
> +	},
> +	{
> +	    xtype: 'proxmoxcheckbox',
> +	    name: 'cifs',
> +	    fieldLabel: 'CIFS'
> +	}
> +    ],
> +
> +    onGetValues: function(values) {
> +	var me = this;
> +	var mounts = me.mounts;
> +	me.fstypes.forEach(function(fs) {
> +	    if (values[fs]) {
> +		mounts.push(fs);
> +	    }
> +	    delete values[fs];
> +	});
> +
> +	if (mounts.length) {
> +	    values.mount = mounts.join(';');
> +	}
> +
> +	var featuresstring = PVE.Parser.printPropertyString(values, undefined);
> +	if (featuresstring == '') {
> +	    return { 'delete': 'features' };
> +	}
> +	return { features: featuresstring };
> +    },
> +
> +    setValues: function(values) {
> +	var me = this;
> +
> +	me.down('field[name=keyctl]').setDisabled(!values.unprivileged);
> +
> +	if (values.features) {
> +	    var res = PVE.Parser.parsePropertyString(values.features);
> +	    me.mounts = [];
> +	    if (res.mount) {
> +		res.mount.split(/[; ]/).forEach(function(item) {
> +		    if (me.fstypes.indexOf(item) === -1) {
> +			me.mounts.push(item);
> +		    } else {
> +			res[item] = 1;
> +		    }
> +		});
> +	    }
> +	    this.callParent([res]);
> +	}
> +    }
> +});
> +
> +Ext.define('PVE.lxc.FeaturesEdit', {
> +    extend: 'Proxmox.window.Edit',
> +    xtype: 'pveLxcFeaturesEdit',
> +
> +    subject: gettext('Features'),
> +
> +    items: [{
> +	xtype: 'pveLxcFeaturesInputPanel'
> +    }],
> +
> +    initComponent : function() {
> +	var me = this;
> +
> +	me.callParent();
> +
> +	me.load();
> +    }
> +});
> diff --git a/www/manager6/lxc/Options.js b/www/manager6/lxc/Options.js
> index 3a9959fe..e4a8d86b 100644
> --- a/www/manager6/lxc/Options.js
> +++ b/www/manager6/lxc/Options.js
> @@ -134,6 +134,12 @@ Ext.define('PVE.lxc.Options', {
>  		header: gettext('Unprivileged container'),
>  		renderer: Proxmox.Utils.format_boolean,
>  		defaultValue: 0
> +	    },
> +	    features: {
> +		header: gettext('Features'),
> +		defaultValue: Proxmox.Utils.noneText,
> +		editor: Proxmox.UserName === 'root at pam' ?
> +		    'PVE.lxc.FeaturesEdit' : undefined
>  	    }
>  	};
>  
> 





More information about the pve-devel mailing list