public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier
@ 2021-02-01 14:21 Aaron Lauterer
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule Aaron Lauterer
                   ` (6 more replies)
  0 siblings, 7 replies; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

This series fixes two permission checks in the HardwareView panel:

* Add -> EFI Disk button
* Edit button for CDROM drives

to only show them as enabled if the necessary permissions are available.

Additionally it contains a few patches to make eslint happy.

Aaron Lauterer (7):
  ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule
  ui: qemu/HardwareView: eslint: enforce "max-len" rule
  ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule
  ui: qemu/HardwareView: eslint: enforce "no-shadow" rule
  ui: qemu/HardwareView: change heuristic perms to const
  ui: qemu/HardwareView: check EFI Disk button permissions
  ui: qemu/HardwareView: add CDROM permission check to edit button

 www/manager6/qemu/HardwareView.js | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule Aaron Lauterer
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 116ab32f..51c77246 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -593,11 +593,11 @@ Ext.define('PVE.qemu.HardwareView', {
 
 	    var isEfi = key === 'efidisk0';
 
-	    remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || isUnusedDisk && !diskCap);
+	    remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !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(rec.data.delete || !rowdef.editor || isCloudInit || (!isCDRom && !diskCap));
 
 	    resize_btn.setDisabled(pending || !isUsedDisk || !diskCap);
 
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-03  7:40   ` Thomas Lamprecht
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule Aaron Lauterer
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 51c77246..fa72d9d3 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -593,7 +593,9 @@ Ext.define('PVE.qemu.HardwareView', {
 
 	    var isEfi = key === 'efidisk0';
 
-	    remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap));
+	    remove_btn.setDisabled(rec.data.delete ||
+				   rowdef.never_delete === true ||
+				   (isUnusedDisk && !diskCap));
 	    remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText);
 	    remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT';
 
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule Aaron Lauterer
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-02 13:06   ` Dominik Csapak
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule Aaron Lauterer
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index fa72d9d3..cc707a2a 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -609,7 +609,7 @@ Ext.define('PVE.qemu.HardwareView', {
 	};
 
 	Ext.apply(me, {
-	    url: '/api2/json/' + 'nodes/' + nodename + '/qemu/' + vmid + '/pending',
+	    url: '/api2/json/nodes/' + nodename + '/qemu/' + vmid + '/pending',
 	    interval: 5000,
 	    selModel: sm,
 	    run_editor: run_editor,
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
                   ` (2 preceding siblings ...)
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-02 13:07   ` Dominik Csapak
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const Aaron Lauterer
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

`confid` is overwritten in each step anyways, so it should be no
problem to use it in the outer scope.

Let's play it safe for `sm` and rename it in the function.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---

Not sure if my solutions are okay or if another approach is preferable.
Didn't find any patches in the manager repo that deal with the
`no-shadow` rule as a guide though.

 www/manager6/qemu/HardwareView.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index cc707a2a..213a946f 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -220,7 +220,7 @@ Ext.define('PVE.qemu.HardwareView', {
 	};
 
 	PVE.Utils.forEachBus(undefined, function(type, id) {
-	    var confid = type + id;
+	    confid = type + id;
 	    rows[confid] = {
 		group: 10,
 		iconCls: 'hdd-o',
@@ -531,8 +531,8 @@ Ext.define('PVE.qemu.HardwareView', {
 	let isAtLimit = (type) => counts[type] >= PVE.Utils.hardware_counts[type];
 
 	var set_button_status = function() {
-	    var sm = me.getSelectionModel();
-	    var rec = sm.getSelection()[0];
+	    var selection_model = me.getSelectionModel();
+	    var rec = selection_model.getSelection()[0];
 
 	    // en/disable hardwarebuttons
 	    counts = {};
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
                   ` (3 preceding siblings ...)
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions Aaron Lauterer
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button Aaron Lauterer
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 213a946f..80d6eec1 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -558,9 +558,9 @@ Ext.define('PVE.qemu.HardwareView', {
 	    });
 
 	    // heuristic only for disabling some stuff, the backend has the final word.
-	    var noSysConsolePerm = !caps.nodes['Sys.Console'];
-	    var noVMConfigHWTypePerm = !caps.vms['VM.Config.HWType'];
-	    var noVMConfigNetPerm = !caps.vms['VM.Config.Network'];
+	    const noSysConsolePerm = !caps.nodes['Sys.Console'];
+	    const noVMConfigHWTypePerm = !caps.vms['VM.Config.HWType'];
+	    const noVMConfigNetPerm = !caps.vms['VM.Config.Network'];
 
 
 	    me.down('#addusb').setDisabled(noSysConsolePerm || isAtLimit('usb'));
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
                   ` (4 preceding siblings ...)
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button Aaron Lauterer
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Make sure that the `Add EFI Disk` button is disabled if the user does
not have the needed permissions.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 80d6eec1..252a8e72 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -561,6 +561,7 @@ Ext.define('PVE.qemu.HardwareView', {
 	    const noSysConsolePerm = !caps.nodes['Sys.Console'];
 	    const noVMConfigHWTypePerm = !caps.vms['VM.Config.HWType'];
 	    const noVMConfigNetPerm = !caps.vms['VM.Config.Network'];
+	    const noVMConfigDiskPerm = !caps.vms['VM.Config.Disk'];
 
 
 	    me.down('#addusb').setDisabled(noSysConsolePerm || isAtLimit('usb'));
@@ -569,7 +570,7 @@ Ext.define('PVE.qemu.HardwareView', {
 	    me.down('#addserial').setDisabled(noVMConfigHWTypePerm || isAtLimit('serial'));
 	    me.down('#addnet').setDisabled(noVMConfigNetPerm || isAtLimit('net'));
 	    me.down('#addrng').setDisabled(noSysConsolePerm || isAtLimit('rng'));
-	    efidisk_menuitem.setDisabled(isAtLimit('efidisk'));
+	    efidisk_menuitem.setDisabled(noVMConfigDiskPerm || isAtLimit('efidisk'));
 	    me.down('#addci').setDisabled(noSysConsolePerm || hasCloudInit);
 
 	    if (!rec) {
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button
  2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
                   ` (5 preceding siblings ...)
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions Aaron Lauterer
@ 2021-02-01 14:21 ` Aaron Lauterer
  2021-02-02 13:13   ` Dominik Csapak
  6 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-01 14:21 UTC (permalink / raw)
  To: pve-devel

Add CDROM permission check to disable the Edit button if they are not
present.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
---
 www/manager6/qemu/HardwareView.js | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 252a8e72..56bdc0a1 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -600,7 +600,11 @@ Ext.define('PVE.qemu.HardwareView', {
 	    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(rec.data.delete ||
+				 !rowdef.editor ||
+				 isCloudInit ||
+				 !caps.vms['VM.Config.CDROM'] ||
+				 (!isCDRom && !diskCap));
 
 	    resize_btn.setDisabled(pending || !isUsedDisk || !diskCap);
 
-- 
2.20.1





^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule Aaron Lauterer
@ 2021-02-02 13:06   ` Dominik Csapak
  2021-02-03  5:11     ` Thomas Lamprecht
  0 siblings, 1 reply; 21+ messages in thread
From: Dominik Csapak @ 2021-02-02 13:06 UTC (permalink / raw)
  To: pve-devel

i'd prefer we use template strings if we touch this line
this could be

`/api2/json/nodes/${nodename}/qemu/${vmid}/pending`

On 2/1/21 3:21 PM, Aaron Lauterer wrote:
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>   www/manager6/qemu/HardwareView.js | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index fa72d9d3..cc707a2a 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -609,7 +609,7 @@ Ext.define('PVE.qemu.HardwareView', {
>   	};
>   
>   	Ext.apply(me, {
> -	    url: '/api2/json/' + 'nodes/' + nodename + '/qemu/' + vmid + '/pending',
> +	    url: '/api2/json/nodes/' + nodename + '/qemu/' + vmid + '/pending',
>   	    interval: 5000,
>   	    selModel: sm,
>   	    run_editor: run_editor,
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule Aaron Lauterer
@ 2021-02-02 13:07   ` Dominik Csapak
  2021-02-03  6:18     ` Thomas Lamprecht
  0 siblings, 1 reply; 21+ messages in thread
From: Dominik Csapak @ 2021-02-02 13:07 UTC (permalink / raw)
  To: pve-devel

the global confid variable is only there
so we could reuse the name

so i'd prefer we remove that
and use 'let confid' in the relevant blocks
(with var this would have failed)

On 2/1/21 3:21 PM, Aaron Lauterer wrote:
> `confid` is overwritten in each step anyways, so it should be no
> problem to use it in the outer scope.
> 
> Let's play it safe for `sm` and rename it in the function.
> 
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
> 
> Not sure if my solutions are okay or if another approach is preferable.
> Didn't find any patches in the manager repo that deal with the
> `no-shadow` rule as a guide though.
> 
>   www/manager6/qemu/HardwareView.js | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index cc707a2a..213a946f 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -220,7 +220,7 @@ Ext.define('PVE.qemu.HardwareView', {
>   	};
>   
>   	PVE.Utils.forEachBus(undefined, function(type, id) {
> -	    var confid = type + id;
> +	    confid = type + id;
>   	    rows[confid] = {
>   		group: 10,
>   		iconCls: 'hdd-o',
> @@ -531,8 +531,8 @@ Ext.define('PVE.qemu.HardwareView', {
>   	let isAtLimit = (type) => counts[type] >= PVE.Utils.hardware_counts[type];
>   
>   	var set_button_status = function() {
> -	    var sm = me.getSelectionModel();
> -	    var rec = sm.getSelection()[0];
> +	    var selection_model = me.getSelectionModel();
> +	    var rec = selection_model.getSelection()[0];
>   
>   	    // en/disable hardwarebuttons
>   	    counts = {};
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button Aaron Lauterer
@ 2021-02-02 13:13   ` Dominik Csapak
  2021-02-02 13:41     ` Aaron Lauterer
  0 siblings, 1 reply; 21+ messages in thread
From: Dominik Csapak @ 2021-02-02 13:13 UTC (permalink / raw)
  To: pve-devel

well this is hardly readable anymore... (not your fault)
but, would it now not be disabled if i have no CDROM perms
even if it is a disk and i have perms for that,
because of short-circuiting ?

On 2/1/21 3:21 PM, Aaron Lauterer wrote:
> Add CDROM permission check to disable the Edit button if they are not
> present.
> 
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>   www/manager6/qemu/HardwareView.js | 6 +++++-
>   1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index 252a8e72..56bdc0a1 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -600,7 +600,11 @@ Ext.define('PVE.qemu.HardwareView', {
>   	    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(rec.data.delete ||
> +				 !rowdef.editor ||
> +				 isCloudInit ||
> +				 !caps.vms['VM.Config.CDROM'] ||
> +				 (!isCDRom && !diskCap));
>   
>   	    resize_btn.setDisabled(pending || !isUsedDisk || !diskCap);
>   
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button
  2021-02-02 13:13   ` Dominik Csapak
@ 2021-02-02 13:41     ` Aaron Lauterer
  2021-02-03  6:21       ` Thomas Lamprecht
  0 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-02 13:41 UTC (permalink / raw)
  To: pve-devel



On 2/2/21 2:13 PM, Dominik Csapak wrote:
> well this is hardly readable anymore... (not your fault)
> but, would it now not be disabled if i have no CDROM perms
> even if it is a disk and i have perms for that,
> because of short-circuiting ?

Oh yeah, thanks for catching that. One more comment inline


> 
> On 2/1/21 3:21 PM, Aaron Lauterer wrote:
>> Add CDROM permission check to disable the Edit button if they are not
>> present.
>>
>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>> ---
>>   www/manager6/qemu/HardwareView.js | 6 +++++-
>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
>> index 252a8e72..56bdc0a1 100644
>> --- a/www/manager6/qemu/HardwareView.js
>> +++ b/www/manager6/qemu/HardwareView.js
>> @@ -600,7 +600,11 @@ Ext.define('PVE.qemu.HardwareView', {
>>           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(rec.data.delete ||
>> +                 !rowdef.editor ||
>> +                 isCloudInit ||
>> +                 !caps.vms['VM.Config.CDROM'] ||

It doesn't really help readability but should work if we additionally check if the current selection is a cdrom. This should prevent short-circuiting in that case

			(isCDRom && !caps.vms['VM.Config.CDROM'])) ||


>> +                 (!isCDRom && !diskCap));
>>           resize_btn.setDisabled(pending || !isUsedDisk || !diskCap);
>>
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule
  2021-02-02 13:06   ` Dominik Csapak
@ 2021-02-03  5:11     ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  5:11 UTC (permalink / raw)
  To: Proxmox VE development discussion, Dominik Csapak

On 02.02.21 14:06, Dominik Csapak wrote:
> i'd prefer we use template strings if we touch this line
> this could be
> 
> `/api2/json/nodes/${nodename}/qemu/${vmid}/pending`

+1

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule
  2021-02-02 13:07   ` Dominik Csapak
@ 2021-02-03  6:18     ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  6:18 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 02.02.21 14:07, Dominik Csapak wrote:
> the global confid variable is only there
> so we could reuse the name
> 
> so i'd prefer we remove that
> and use 'let confid' in the relevant blocks
> (with var this would have failed)

+1

It's general also really good to check the variables and transform all to `let`or
`const` where possible.
The current code base big use of `var` stems from the pre ES6 time where neither
`let` nor `const` existed.

I added a section to our style guide to document that:
https://pve.proxmox.com/wiki/Javascript_Style_Guide#Variables




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button
  2021-02-02 13:41     ` Aaron Lauterer
@ 2021-02-03  6:21       ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  6:21 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 02.02.21 14:41, Aaron Lauterer wrote:
> 
> 
> On 2/2/21 2:13 PM, Dominik Csapak wrote:
>> well this is hardly readable anymore... (not your fault)
>> but, would it now not be disabled if i have no CDROM perms
>> even if it is a disk and i have perms for that,
>> because of short-circuiting ?
> 
> Oh yeah, thanks for catching that. One more comment inline
> 
> 
>>
>> On 2/1/21 3:21 PM, Aaron Lauterer wrote:
>>> Add CDROM permission check to disable the Edit button if they are not
>>> present.
>>>
>>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>>> ---
>>>   www/manager6/qemu/HardwareView.js | 6 +++++-
>>>   1 file changed, 5 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
>>> index 252a8e72..56bdc0a1 100644
>>> --- a/www/manager6/qemu/HardwareView.js
>>> +++ b/www/manager6/qemu/HardwareView.js
>>> @@ -600,7 +600,11 @@ Ext.define('PVE.qemu.HardwareView', {
>>>           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(rec.data.delete ||
>>> +                 !rowdef.editor ||
>>> +                 isCloudInit ||
>>> +                 !caps.vms['VM.Config.CDROM'] ||
> 
> It doesn't really help readability but should work if we additionally check if the current selection is a cdrom. This should prevent short-circuiting in that case
> 
>             (isCDRom && !caps.vms['VM.Config.CDROM'])) ||

please also split all lines consistently, i.e., if this would stay as is then it should
be written as

edit_btn.setDisabled(
    rec.data.delete ||
    !rowdef.editor ||
    isCloudInit ||
    !caps.vms['VM.Config.CDROM'] ||
    (!isCDRom && !diskCap)
);

less indentation but also less crowded (as method call and first argument aren't glued together)




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] applied: [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule Aaron Lauterer
@ 2021-02-03  7:37   ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  7:37 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 01.02.21 15:21, Aaron Lauterer wrote:
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  www/manager6/qemu/HardwareView.js | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
>

applied, thanks!




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] applied: [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const Aaron Lauterer
@ 2021-02-03  7:37   ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  7:37 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 01.02.21 15:21, Aaron Lauterer wrote:
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  www/manager6/qemu/HardwareView.js | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
>

applied, thanks!




^ permalink raw reply	[flat|nested] 21+ messages in thread

* [pve-devel] applied: [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions Aaron Lauterer
@ 2021-02-03  7:37   ` Thomas Lamprecht
  0 siblings, 0 replies; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  7:37 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 01.02.21 15:21, Aaron Lauterer wrote:
> Make sure that the `Add EFI Disk` button is disabled if the user does
> not have the needed permissions.
> 
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  www/manager6/qemu/HardwareView.js | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
>

applied, thanks!




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule
  2021-02-01 14:21 ` [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule Aaron Lauterer
@ 2021-02-03  7:40   ` Thomas Lamprecht
  2021-02-03  9:50     ` Aaron Lauterer
  0 siblings, 1 reply; 21+ messages in thread
From: Thomas Lamprecht @ 2021-02-03  7:40 UTC (permalink / raw)
  To: Proxmox VE development discussion, Aaron Lauterer

On 01.02.21 15:21, Aaron Lauterer wrote:
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
>  www/manager6/qemu/HardwareView.js | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
> index 51c77246..fa72d9d3 100644
> --- a/www/manager6/qemu/HardwareView.js
> +++ b/www/manager6/qemu/HardwareView.js
> @@ -593,7 +593,9 @@ Ext.define('PVE.qemu.HardwareView', {
>  
>  	    var isEfi = key === 'efidisk0';
>  
> -	    remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap));
> +	    remove_btn.setDisabled(rec.data.delete ||
> +				   rowdef.never_delete === true ||
> +				   (isUnusedDisk && !diskCap));

If a method call is split over multiple lines the first line should only
be the method itself.

As we have an expression here, not really multiple parameters, either of the
following two would be fine:

remove_btn.setDisabled(
    rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap)
);

or:

remove_btn.setDisabled(
    rec.data.delete ||
    rowdef.never_delete === true ||
    (isUnusedDisk && !diskCap)
);


>  	    remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText);
>  	    remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT';
>  
> 





^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule
  2021-02-03  7:40   ` Thomas Lamprecht
@ 2021-02-03  9:50     ` Aaron Lauterer
  2021-02-03  9:54       ` Aaron Lauterer
  0 siblings, 1 reply; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-03  9:50 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox VE development discussion



On 2/3/21 8:40 AM, Thomas Lamprecht wrote:
> On 01.02.21 15:21, Aaron Lauterer wrote:
>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>> ---
>>   www/manager6/qemu/HardwareView.js | 4 +++-
>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
>> index 51c77246..fa72d9d3 100644
>> --- a/www/manager6/qemu/HardwareView.js
>> +++ b/www/manager6/qemu/HardwareView.js
>> @@ -593,7 +593,9 @@ Ext.define('PVE.qemu.HardwareView', {
>>   
>>   	    var isEfi = key === 'efidisk0';
>>   
>> -	    remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap));
>> +	    remove_btn.setDisabled(rec.data.delete ||
>> +				   rowdef.never_delete === true ||
>> +				   (isUnusedDisk && !diskCap));
> 
> If a method call is split over multiple lines the first line should only
> be the method itself.
> 
> As we have an expression here, not really multiple parameters, either of the
> following two would be fine:
> 
> remove_btn.setDisabled(
>      rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap)
> );
> 
> or:
> 
> remove_btn.setDisabled(
>      rec.data.delete ||
>      rowdef.never_delete === true ||
>      (isUnusedDisk && !diskCap)
> );
> 
> 

Maybe we want to add a eslint rule to catch these? I am usually getting this wrong and having a linter rule will help to catch it early on. AFAICT the 'function-paren-newline' set to 'multiline' or 'multiline-arguments' [0] should work.


[0] https://eslint.org/docs/rules/function-paren-newline

>>   	    remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText);
>>   	    remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT';
>>   
>>
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule
  2021-02-03  9:50     ` Aaron Lauterer
@ 2021-02-03  9:54       ` Aaron Lauterer
  0 siblings, 0 replies; 21+ messages in thread
From: Aaron Lauterer @ 2021-02-03  9:54 UTC (permalink / raw)
  To: pve-devel



On 2/3/21 10:50 AM, Aaron Lauterer wrote:
> 
> 
> On 2/3/21 8:40 AM, Thomas Lamprecht wrote:
>> On 01.02.21 15:21, Aaron Lauterer wrote:
>>> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
>>> ---
>>>   www/manager6/qemu/HardwareView.js | 4 +++-
>>>   1 file changed, 3 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
>>> index 51c77246..fa72d9d3 100644
>>> --- a/www/manager6/qemu/HardwareView.js
>>> +++ b/www/manager6/qemu/HardwareView.js
>>> @@ -593,7 +593,9 @@ Ext.define('PVE.qemu.HardwareView', {
>>>           var isEfi = key === 'efidisk0';
>>> -        remove_btn.setDisabled(rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap));
>>> +        remove_btn.setDisabled(rec.data.delete ||
>>> +                   rowdef.never_delete === true ||
>>> +                   (isUnusedDisk && !diskCap));
>>
>> If a method call is split over multiple lines the first line should only
>> be the method itself.
>>
>> As we have an expression here, not really multiple parameters, either of the
>> following two would be fine:
>>
>> remove_btn.setDisabled(
>>      rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap)
>> );
>>
>> or:
>>
>> remove_btn.setDisabled(
>>      rec.data.delete ||
>>      rowdef.never_delete === true ||
>>      (isUnusedDisk && !diskCap)
>> );
>>
>>
> 
> Maybe we want to add a eslint rule to catch these? I am usually getting this wrong and having a linter rule will help to catch it early on. AFAICT the 'function-paren-newline' set to 'multiline' or 'multiline-arguments' [0] should work.
> 
> 
> [0] https://eslint.org/docs/rules/function-paren-newline

Of course, this won't work in this use case as they are not parameters. I'll keep looking if there is a rule for this situation that could help.

> 
>>>           remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText);
>>>           remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT';
>>>
>>
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 




^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2021-02-03  9:55 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-01 14:21 [pve-devel] [PATCH manager 0/7] ui: qemu/HardwareView: fix GUI permission checks and make eslint happier Aaron Lauterer
2021-02-01 14:21 ` [pve-devel] [PATCH manager 1/7] ui: qemu/HardwareView: eslint: enforce "no-mixed-operators" rule Aaron Lauterer
2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
2021-02-01 14:21 ` [pve-devel] [PATCH manager 2/7] ui: qemu/HardwareView: eslint: enforce "max-len" rule Aaron Lauterer
2021-02-03  7:40   ` Thomas Lamprecht
2021-02-03  9:50     ` Aaron Lauterer
2021-02-03  9:54       ` Aaron Lauterer
2021-02-01 14:21 ` [pve-devel] [PATCH manager 3/7] ui: qemu/HardwareView: eslint: enforce "no-useless-concat" rule Aaron Lauterer
2021-02-02 13:06   ` Dominik Csapak
2021-02-03  5:11     ` Thomas Lamprecht
2021-02-01 14:21 ` [pve-devel] [PATCH manager 4/7] ui: qemu/HardwareView: eslint: enforce "no-shadow" rule Aaron Lauterer
2021-02-02 13:07   ` Dominik Csapak
2021-02-03  6:18     ` Thomas Lamprecht
2021-02-01 14:21 ` [pve-devel] [PATCH manager 5/7] ui: qemu/HardwareView: change heuristic perms to const Aaron Lauterer
2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
2021-02-01 14:21 ` [pve-devel] [PATCH manager 6/7] ui: qemu/HardwareView: check EFI Disk button permissions Aaron Lauterer
2021-02-03  7:37   ` [pve-devel] applied: " Thomas Lamprecht
2021-02-01 14:21 ` [pve-devel] [PATCH manager 7/7] ui: qemu/HardwareView: add CDROM permission check to edit button Aaron Lauterer
2021-02-02 13:13   ` Dominik Csapak
2021-02-02 13:41     ` Aaron Lauterer
2021-02-03  6:21       ` Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal