[pve-devel] [PATCH manager 3/5] fix #5430: ui: vm: allow editing cdrom aio and cache options

Lukas Wagner l.wagner at proxmox.com
Fri Oct 18 09:42:29 CEST 2024


Some suggestions inline. Skimmed over the code to spot style issues, correctness
was not really checked.

On  2024-10-16 18:47, Daniel Kral wrote:
> Adds cache and async I/O selectors to the CDROM Drive Edit modal window
> in the "Hardware" tab. This allows users to set these options in the
> WebGUI when the VM fails to start because the underlying storage
> (driver) does not support a specific set of configurations.
> 
> Signed-off-by: Daniel Kral <d.kral at proxmox.com>
> ---
>  www/manager6/qemu/CDEdit.js | 30 ++++++++++++++++++++++++++++--
>  1 file changed, 28 insertions(+), 2 deletions(-)
> 
> diff --git a/www/manager6/qemu/CDEdit.js b/www/manager6/qemu/CDEdit.js
> index 3cc16205..f15905e7 100644
> --- a/www/manager6/qemu/CDEdit.js
> +++ b/www/manager6/qemu/CDEdit.js
> @@ -7,6 +7,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
>      onGetValues: function(values) {
>  	var me = this;
>  
> +	var params = {};

Note: For new code we should use `let` or `const` insted of `var` [1].
When touching existing code can IMO also change it to `let`, but of course
familiarize yourself first with the differences between the three and make sure
that you don't introduce any unwanted changes (e.g. due to changed scoping).

[1]: https://pve.proxmox.com/wiki/Javascript_Style_Guide

>  	var confid = me.confid || values.controller + values.deviceid;
>  
>  	me.drive.media = 'cdrom';
> @@ -18,7 +19,8 @@ Ext.define('PVE.qemu.CDInputPanel', {
>  	    me.drive.file = 'none';
>  	}
>  
> -	var params = {};
> +	PVE.Utils.propertyStringSet(me.drive, values.cache, 'cache');
> +	PVE.Utils.propertyStringSet(me.drive, values.aio, 'aio');
>  
>  	params[confid] = PVE.Parser.printQemuDrive(me.drive);
>  
> @@ -46,6 +48,9 @@ Ext.define('PVE.qemu.CDInputPanel', {
>  	    values.cdimage = drive.file;
>  	}
>  
> +	values.cache = drive.cache || '__default__';
> +	values.aio = drive.aio || '__default__';
> +
>  	me.drive = drive;
>  
>  	me.setValues(values);
> @@ -118,6 +123,27 @@ Ext.define('PVE.qemu.CDInputPanel', {
>  
>  	me.items = items;
>  
> +	// those are only useful for specific niche use cases
> +	if (!me.insideWizard) {
> +	    me.advancedColumn1 = [
> +		{
> +		    xtype: 'CacheTypeSelector',
> +		    name: 'cache',
> +		    value: '__default__',
> +		    fieldLabel: gettext('Cache'),
> +		},
> +	    ];
> +	    me.advancedColumn2 = [
> +		{
> +		    xtype: 'AsyncIOTypeSelector',
> +		    name: 'aio',
> +		    value: '__default__',
> +		    fieldLabel: gettext('Async IO'),
> +		    allowBlank: false,
> +		},
> +	    ];
> +	}
> +
>  	me.callParent();
>      },
>  });
> @@ -125,7 +151,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
>  Ext.define('PVE.qemu.CDEdit', {
>      extend: 'Proxmox.window.Edit',
>  
> -    width: 400,
> +    width: 550,

This change is not mentioned in the commit message and should probably
be split out into its own commit.

>  
>      initComponent: function() {
>  	var me = this;

-- 
- Lukas




More information about the pve-devel mailing list