From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id D7FFF1FF16B
	for <inbox@lore.proxmox.com>; Thu,  3 Apr 2025 10:31:28 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 0348C3A1AD;
	Thu,  3 Apr 2025 10:31:18 +0200 (CEST)
Message-ID: <8824f44e-0753-4fa3-b39f-52a5ff416e71@proxmox.com>
Date: Thu, 3 Apr 2025 10:31:14 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird Beta
To: pbs-devel@lists.proxmox.com
References: <20250318094756.204368-1-c.ebner@proxmox.com>
Content-Language: en-US
From: Dominik Csapak <d.csapak@proxmox.com>
In-Reply-To: <20250318094756.204368-1-c.ebner@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.022 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: Re: [pbs-devel] [PATCH v2 proxmox-backup 1/2] fix: ui: sync job:
 edit rate limit based on sync direction
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

Looks good to me now, if we want to have a unified parameter here,
we can still add it later too.

Reviewed-by: Dominik Csapak <d.csapak@proxmox.com>
Tested-by: Dominik Csapak <d.csapak@proxmox.com>

On 3/18/25 10:47, Christian Ebner wrote:
> Commit 9aa213b8 ("ui: sync job: adapt edit window to be used for pull
> and push") adapted the sync job edit so jobs in both, push and pull
> can be edited using the same window. This however did not include the
> switching of the direction to which the http client rate limit is
> applied to.
> 
> Fix this by further adding the edit field for `rate-out` and
> conditionally hide the less useful rate limit direction (rate-out for
> pull and rate-in for push). This allows to preserve the values if
> explicitly set via the sync job config.
> 
> Reported in the community forum:
> https://forum.proxmox.com/threads/163414/
> 
> Fixes: 9aa213b8 ("ui: sync job: adapt edit window to be used for pull and push")
> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
> ---
> changes since version 1 (thanks at Dominik for feedback):
> - add additional rate limit field, but hide less useful one based on
>    sync direction
> - preserve values of unchanged rate limit for less useful direction if
>    set via config.
> 
>   www/window/SyncJobEdit.js | 39 +++++++++++++++++++++++++++++++++------
>   1 file changed, 33 insertions(+), 6 deletions(-)
> 
> diff --git a/www/window/SyncJobEdit.js b/www/window/SyncJobEdit.js
> index bcd2f2fb2..683babaf2 100644
> --- a/www/window/SyncJobEdit.js
> +++ b/www/window/SyncJobEdit.js
> @@ -72,9 +72,16 @@ Ext.define('PBS.window.SyncJobEdit', {
>   
>   	init: function() {
>   	    let view = this.getView();
> -	    if (view.syncDirectionPush && view.datastore !== undefined) {
> -		let localNs = view.down('pbsNamespaceSelector[name=ns]').getValue();
> -		view.down('pbsGroupFilter').setLocalNamespace(view.datastore, localNs);
> +	    // Cannot use cbind to hide rate limit field depending on sync direction,
> +	    // set it in init as workaround.
> +	    if (view.syncDirectionPush) {
> +		view.down('pmxBandwidthField[name=rate-in]').setHidden(true);
> +		if (view.datastore !== undefined) {
> +		    let localNs = view.down('pbsNamespaceSelector[name=ns]').getValue();
> +		    view.down('pbsGroupFilter').setLocalNamespace(view.datastore, localNs);
> +		}
> +	    } else {
> +		view.down('pmxBandwidthField[name=rate-out]').setHidden(true);
>   	    }
>   	},
>       },
> @@ -89,6 +96,15 @@ Ext.define('PBS.window.SyncJobEdit', {
>   	me.callParent([values]);
>       },
>   
> +    getVisibleRateLimitField: function() {
> +	let me = this;
> +	if (me.syncDirectionPush) {
> +	    return me.down('field[name=rate-out]');
> +	} else {
> +	    return me.down('field[name=rate-in]');
> +	}
> +    },
> +
>       items: {
>   	xtype: 'tabpanel',
>   	bodyPadding: 10,
> @@ -105,6 +121,7 @@ Ext.define('PBS.window.SyncJobEdit', {
>   		    }
>   		    if (!me.isCreate) {
>   			PBS.Utils.delete_if_default(values, 'rate-in');
> +			PBS.Utils.delete_if_default(values, 'rate-out');
>   			PBS.Utils.delete_if_default(values, 'remote');
>   			if (typeof values.delete === 'string') {
>   			    values.delete = values.delete.split(',');
> @@ -189,7 +206,17 @@ Ext.define('PBS.window.SyncJobEdit', {
>   			fieldLabel: gettext('Rate Limit'),
>   			emptyText: gettext('Unlimited'),
>   			submitAutoScaledSizeUnit: true,
> -			// NOTE: handle deleteEmpty in onGetValues due to bandwidth field having a cbind too
> +			// NOTE: handle deleteEmpty in onGetValues due to bandwidth field having a cbind too,
> +			// further hide rate limit field depending on sync direction in controller init.
> +		    },
> +		    {
> +			xtype: 'pmxBandwidthField',
> +			name: 'rate-out',
> +			fieldLabel: gettext('Rate Limit'),
> +			emptyText: gettext('Unlimited'),
> +			submitAutoScaledSizeUnit: true,
> +			// NOTE: handle deleteEmpty in onGetValues due to bandwidth field having a cbind too,
> +			// further hide rate limit field depending on sync direction in controller init.
>   		    },
>   		],
>   
> @@ -221,7 +248,7 @@ Ext.define('PBS.window.SyncJobEdit', {
>   				let me = this;
>   				let form = me.up('pbsSyncJobEdit');
>   				let nsField = form.down('field[name=remote-ns]');
> -				let rateLimitField = form.down('field[name=rate-in]');
> +				let rateLimitField = form.getVisibleRateLimitField();
>   				let remoteField = form.down('field[name=remote]');
>   				let storeField = form.down('field[name=remote-store]');
>   
> @@ -263,7 +290,7 @@ Ext.define('PBS.window.SyncJobEdit', {
>   				let me = this;
>   				let remoteStoreField = me.up('pbsSyncJobEdit').down('field[name=remote-store]');
>   				remoteStoreField.setRemote(value);
> -				let rateLimitField = me.up('pbsSyncJobEdit').down('field[name=rate-in]');
> +				let rateLimitField = me.up('pbsSyncJobEdit').getVisibleRateLimitField();
>   				rateLimitField.setDisabled(!value);
>   				if (!value) {
>   				    rateLimitField.setValue(null);



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel