Checking for only Sys.Console prevents users who actually have the correct permissions (VM.Config.CDROM, VM.Config.Cloudinit) from adding a new cloud-init drive. Some checks needed to be adapted so that editing cloud-init devices was possible with VM.Config.CDROM instead of VM.Config.Disk.
Signed-off-by: Leo Nunner <l.nun...@proxmox.com> --- www/manager6/qemu/HardwareView.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js index 6e9d03b4..121b0f53 100644 --- a/www/manager6/qemu/HardwareView.js +++ b/www/manager6/qemu/HardwareView.js @@ -569,6 +569,8 @@ Ext.define('PVE.qemu.HardwareView', { const noVMConfigHWTypePerm = !caps.vms['VM.Config.HWType']; const noVMConfigNetPerm = !caps.vms['VM.Config.Network']; const noVMConfigDiskPerm = !caps.vms['VM.Config.Disk']; + const noVMConfigCDROMPerm = !caps.vms['VM.Config.CDROM']; + const noVMConfigCloudinitPerm = !caps.vms['VM.Config.Cloudinit']; me.down('#addUsb').setDisabled(noSysConsolePerm || isAtLimit('usb')); me.down('#addPci').setDisabled(noSysConsolePerm || isAtLimit('hostpci')); @@ -578,7 +580,7 @@ Ext.define('PVE.qemu.HardwareView', { me.down('#addRng').setDisabled(noSysConsolePerm || isAtLimit('rng')); efidisk_menuitem.setDisabled(noVMConfigDiskPerm || isAtLimit('efidisk')); me.down('#addTpmState').setDisabled(noSysConsolePerm || isAtLimit('tpmstate')); - me.down('#addCloudinitDrive').setDisabled(noSysConsolePerm || hasCloudInit); + me.down('#addCloudinitDrive').setDisabled(noVMConfigCDROMPerm || noVMConfigCloudinitPerm || hasCloudInit); if (!rec) { remove_btn.disable(); @@ -594,11 +596,11 @@ Ext.define('PVE.qemu.HardwareView', { const pending = deleted || me.hasPendingChanges(key); const isCloudInit = isCloudInitKey(value); - const isCDRom = value && !!value.toString().match(/media=cdrom/) && !isCloudInit; + const isCDRom = value && !!value.toString().match(/media=cdrom/); const isUnusedDisk = key.match(/^unused\d+/); - const isUsedDisk = !isUnusedDisk && row.isOnStorageBus && !isCDRom && !isCloudInit; - const isDisk = isCloudInit || isUnusedDisk || isUsedDisk; + const isUsedDisk = !isUnusedDisk && row.isOnStorageBus && !isCDRom; + const isDisk = isUnusedDisk || isUsedDisk; const isEfi = key === 'efidisk0'; const tpmMoveable = key === 'tpmstate0' && !me.pveSelNode.data.running; @@ -701,7 +703,7 @@ Ext.define('PVE.qemu.HardwareView', { text: gettext('CloudInit Drive'), itemId: 'addCloudinitDrive', iconCls: 'fa fa-fw fa-cloud black', - disabled: !caps.nodes['Sys.Console'], + disabled: !caps.vms['VM.Config.CDROM'] || !caps.vms['VM.Config.Cloudinit'], handler: editorFactory('CIDriveEdit'), }, { -- 2.30.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel