public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: Proxmox Backup Server development discussion
	<pbs-devel@lists.proxmox.com>,
	Hannes Laimer <h.laimer@proxmox.com>
Subject: Re: [pbs-devel] [PATCH proxmox-backup v14 15/26] ui: add (un)mount button to summary
Date: Mon, 25 Nov 2024 14:00:04 +0100	[thread overview]
Message-ID: <417cbdb8-90c0-4004-ab9e-e3e610485242@proxmox.com> (raw)
In-Reply-To: <20241122144713.299130-16-h.laimer@proxmox.com>

this patch removes the 'connection summary' from the overview, because...

On 11/22/24 15:47, Hannes Laimer wrote:
> And only try to load datastore information if the datastore is
> available.
> 
> Signed-off-by: Hannes Laimer <h.laimer@proxmox.com>
> ---
> changes since v13:
>   * stop statusStore update on first failed request, start again on mount
> 
>   www/datastore/Summary.js | 94 +++++++++++++++++++++++++++++++++++++++-
>   1 file changed, 92 insertions(+), 2 deletions(-)
> 
> diff --git a/www/datastore/Summary.js b/www/datastore/Summary.js
> index a932b4e01..2d79a7951 100644
> --- a/www/datastore/Summary.js
> +++ b/www/datastore/Summary.js
> @@ -309,7 +309,84 @@ Ext.define('PBS.DataStoreSummary', {
>   	    model: 'pve-rrd-datastore',
>   	});
>   
> -	me.callParent();
> +	me.statusStore = Ext.create('Proxmox.data.ObjectStore', {
> +	    url: `/api2/json/admin/datastore/${me.datastore}/status`,
> +	    interval: 1000,
> +	});
> +
> +	let unmountBtn = Ext.create('Ext.Button', {
> +	    text: gettext('Unmount'),
> +	    hidden: true,
> +	    handler: () => {
> +		Proxmox.Utils.API2Request({
> +		    url: `/admin/datastore/${me.datastore}/unmount`,
> +		    method: 'POST',
> +		    failure: function(response) {
> +			Ext.Msg.alert(gettext('Error'), response.htmlStatus);
> +		    },
> +		    success: function(response, options) {
> +			Ext.create('Proxmox.window.TaskViewer', {
> +			    upid: response.result.data,
> +			}).show();
> +		    },
> +		});
> +	    },
> +	});
> +
> +	let mountBtn = Ext.create('Ext.Button', {
> +	    text: gettext('Mount'),
> +	    hidden: true,
> +	    handler: () => {
> +		Proxmox.Utils.API2Request({
> +		    url: `/admin/datastore/${me.datastore}/mount`,
> +		    method: 'POST',
> +		    failure: function(response) {
> +			Ext.Msg.alert(gettext('Error'), response.htmlStatus);
> +		    },
> +		    success: function(response, options) {
> +			me.statusStore.startUpdate();
> +			Ext.create('Proxmox.window.TaskViewer', {
> +			    upid: response.result.data,
> +			}).show();
> +		    },
> +		});
> +	    },
> +	});
> +
> +	Ext.apply(me, {
> +	    tbar: [unmountBtn, mountBtn, '->', { xtype: 'proxmoxRRDTypeSelector' }],
> +	});

you define a few buttons and overwrite the 'tbar' config, here, but forgot to add
the 'connection summary' again.


please don't do it this way, but rather put the buttons to the remaining tbar
config above. since you don't actually need any info from the initComponent
(AFAICS) this should not be a problem

you should be able to add a 'referenceHolder' property on the view to be able
to use 'reference' and 'lookup' to get to the components in the listener below

If it's really not possible to get to the tbar, please remove the original 'tbar'
definition at least, since it'll not be used anyway.

> +
> +	me.mon(me.statusStore, 'load', (s, records, success) => {
> +	    if (!success) {
> +		me.statusStore.stopUpdate();
> +		me.down('pbsDataStoreInfo').fireEvent('deactivate');
> +		Proxmox.Utils.API2Request({
> +		    url: `/config/datastore/${me.datastore}`,
> +		    success: response => {
> +			let mode = response.result.data['maintenance-mode'];
> +			let [type, _message] = PBS.Utils.parseMaintenanceMode(mode);
> +			if (!response.result.data['backing-device']) {
> +			    return;
> +			}
> +			if (!type || type === 'read-only') {
> +			    unmountBtn.setDisabled(true);
> +			    mountBtn.setDisabled(false);
> +			} else if (type === 'unmount') {
> +			    unmountBtn.setDisabled(true);
> +			    mountBtn.setDisabled(true);
> +			} else {
> +			    unmountBtn.setDisabled(false);
> +			    mountBtn.setDisabled(false);
> +			}
> +		    },
> +		});
> +	    } else {
> +		me.down('pbsDataStoreInfo').fireEvent('activate');
> +		unmountBtn.setDisabled(false);
> +		mountBtn.setDisabled(true);
> +	    }
> +	});

i'm not completely sure about that, but i think one should call
'me.mon' only after the callParents call. I may be mistaken though.

(you should be able to move the code below that, since it'll trigger only
after the initcomponent anyway)

>   
>   	let sp = Ext.state.Manager.getProvider();
>   	me.mon(sp, 'statechange', function(provider, key, value) {
> @@ -322,11 +399,17 @@ Ext.define('PBS.DataStoreSummary', {
>   	    Proxmox.Utils.updateColumns(me);
>   	});
>   
> +	me.callParent();
> +
>   	Proxmox.Utils.API2Request({
>   	    url: `/config/datastore/${me.datastore}`,
>   	    waitMsgTarget: me.down('pbsDataStoreInfo'),
>   	    success: function(response) {
> -		let path = Ext.htmlEncode(response.result.data.path);
> +		let data = response.result.data;
> +		let path = Ext.htmlEncode(data.path);
> +		const removable = Object.prototype.hasOwnProperty.call(data, "backing-device");

i mean it works, but our usual way to code that would be something like:

let removable = !!data['backing-device'];

is there a special reason for calling the hasOwnProperty method?

> +		unmountBtn.setHidden(!removable);
> +		mountBtn.setHidden(!removable);
>   		me.down('pbsDataStoreInfo').setTitle(`${me.datastore} (${path})`);
>   		me.down('pbsDataStoreNotes').setNotes(response.result.data.comment);
>   	    },
> @@ -344,6 +427,13 @@ Ext.define('PBS.DataStoreSummary', {
>   	    let hasIoTicks = records?.some((rec) => rec?.data?.io_ticks !== undefined);
>   	    me.down('#ioDelayChart').setVisible(!success || hasIoTicks);
>   	}, undefined, { single: true });
> +	me.on('afterrender', () => {
> +	    me.statusStore.startUpdate();
> +	});
> +
> +	me.on('destroy', () => {
> +	    me.statusStore.stopUpdate();
> +	});

any special reason to put this here instead of the  activate/deactivate/destroy handlers above, were 
we also handle the rrdstore?

>   
>   	me.query('proxmoxRRDChart').forEach((chart) => {
>   	    chart.setStore(me.rrdstore);



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


  reply	other threads:[~2024-11-25 13:00 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-22 14:46 [pbs-devel] [PATCH proxmox-backup v14 00/26] add removable datastores Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 01/25] pbs-api-types: add backing-device to DataStoreConfig Hannes Laimer
2024-11-25 13:40   ` Fabian Grünbichler
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 02/25] maintenance: make is_offline more generic Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 03/26] maintenance: add 'Unmount' maintenance type Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 04/25] datastore: add helper for checking if a datastore is mounted Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 05/25] api: admin: add (un)mount endpoint for removable datastores Hannes Laimer
2024-11-25 13:24   ` Fabian Grünbichler
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 06/25] api: removable datastore creation Hannes Laimer
2024-11-25 13:40   ` Fabian Grünbichler
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 07/25] api: add check for nested datastores on creation Hannes Laimer
2024-11-25 13:44   ` Fabian Grünbichler
2024-11-25 14:48     ` Hannes Laimer
2024-11-25 14:53       ` Fabian Grünbichler
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 08/25] pbs-api-types: add mount_status field to DataStoreListItem Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 09/26] bin: manager: add (un)mount command Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 10/25] add auto-mounting for removable datastores Hannes Laimer
2024-11-25 13:47   ` Fabian Grünbichler
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 11/25] datastore: handle deletion of removable datastore properly Hannes Laimer
2024-11-22 14:46 ` [pbs-devel] [PATCH proxmox-backup v14 12/25] docs: add removable datastores section Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 13/26] ui: add partition selector form Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 14/26] ui: add removable datastore creation support Hannes Laimer
2024-11-25 12:44   ` Dominik Csapak
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 15/26] ui: add (un)mount button to summary Hannes Laimer
2024-11-25 13:00   ` Dominik Csapak [this message]
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 16/26] ui: tree: render unmounted datastores correctly Hannes Laimer
2024-11-25  8:47   ` [pbs-devel] [PATCH proxmox-backup v14] fixup! " Hannes Laimer
2024-11-25 13:06     ` Dominik Csapak
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 17/26] ui: utils: make parseMaintenanceMode more robust Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 18/26] ui: add datastore status mask for unmounted removable datastores Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 19/26] ui: maintenance: fix disable msg field if no type is selected Hannes Laimer
2024-11-25 13:23   ` Dominik Csapak
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 20/26] ui: render 'unmount' maintenance mode correctly Hannes Laimer
2024-11-25 13:24   ` Dominik Csapak
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 21/25] api: node: allow creation of removable datastore through directory endpoint Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 22/25] api: node: include removable datastores in directory list Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 23/26] node: disks: replace BASE_MOUNT_DIR with DATASTORE_MOUNT_DIR Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 24/26] ui: support create removable datastore through directory creation Hannes Laimer
2024-11-25 13:28   ` Dominik Csapak
2024-11-25 16:21     ` Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 25/26] bin: debug: add inspect device command Hannes Laimer
2024-11-22 14:47 ` [pbs-devel] [PATCH proxmox-backup v14 26/26] api: disks: only return UUID of partitions if it actually is one Hannes Laimer
2024-11-25  6:19 ` [pbs-devel] [PATCH proxmox-backup v14 00/26] add removable datastores Hannes Laimer
2024-11-25 13:15 ` Lukas Wagner
2024-11-25 13:32   ` Dominik Csapak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=417cbdb8-90c0-4004-ab9e-e3e610485242@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=h.laimer@proxmox.com \
    --cc=pbs-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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