From: Aaron Lauterer Date: Fri, 12 Feb 2021 15:57:51 +0000 (+0100) Subject: ui: qemu/HardwareView: fix CDRom permission checkss X-Git-Url: https://git.proxmox.com/?p=pve-manager.git;a=commitdiff_plain;h=a1e25c47f30a8205f4e497d843ba557d1919256d ui: qemu/HardwareView: fix CDRom permission checkss There are several types of drives that use the same config keys. Most notably CDRom and regular VM disks (EFI and cloudinit exist as well). Since there is a dedicated permission for CDRom drives we need to check permissions in more detail, depending on what type of drive it actually is for things like the edit, remove and Add -> CDRom buttons. The permission check in the row definition itself which only checked for 'VM.Config.Disk' permissions (never_delete) had to be removed and finer grained checks added for the individual buttons. This also meant a bit of reshuffling in the checks what kind of disk the current one is. Signed-off-by: Aaron Lauterer Signed-off-by: Thomas Lamprecht --- diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js index d0b2a00d..41d65b40 100644 --- a/www/manager6/qemu/HardwareView.js +++ b/www/manager6/qemu/HardwareView.js @@ -225,7 +225,6 @@ Ext.define('PVE.qemu.HardwareView', { group: 10, iconCls: 'hdd-o', editor: 'PVE.qemu.HDEdit', - never_delete: !caps.vms['VM.Config.Disk'], isOnStorageBus: true, header: gettext('Hard Disk') + ' (' + confid +')', cdheader: gettext('CD/DVD Drive') + ' (' + confid +')', @@ -596,12 +595,21 @@ Ext.define('PVE.qemu.HardwareView', { const isEfi = key === 'efidisk0'; remove_btn.setDisabled( - rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap), + deleted || + row.never_delete || + (isCDRom && !cdromCap) || + (isDisk && !diskCap), ); remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText); remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT'; - edit_btn.setDisabled(rec.data.delete || !rowdef.editor || isCloudInit || (!isCDRom && !diskCap)); + edit_btn.setDisabled( + deleted || + !row.editor || + isCloudInit || + (isCDRom && !cdromCap) || + (isDisk && !diskCap), + ); resize_btn.setDisabled(pending || !isUsedDisk || !diskCap); @@ -637,7 +645,7 @@ Ext.define('PVE.qemu.HardwareView', { { text: gettext('CD/DVD Drive'), iconCls: 'pve-itype-icon-cdrom', - disabled: !caps.vms['VM.Config.Disk'], + disabled: !caps.vms['VM.Config.CDROM'], handler: function() { let win = Ext.create('PVE.qemu.CDEdit', { url: '/api2/extjs/' + baseurl,