[pbs-devel] [PATCH proxmox-backup v11 39/46] ui: expose s3 refresh button for datastores backed by object store

Christian Ebner c.ebner at proxmox.com
Tue Jul 22 12:10:59 CEST 2025


Allows to trigger a refresh of the local datastore contents from
the WebUI.

Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
Reviewed-by: Lukas Wagner <l.wagner at proxmox.com>
Reviewed-by: Hannes Laimer <h.laimer at proxmox.com>
---
changes since version 10:
 - no changes

 www/datastore/Content.js | 48 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/www/datastore/Content.js b/www/datastore/Content.js
index e7fa3a8f7..37156c1cb 100644
--- a/www/datastore/Content.js
+++ b/www/datastore/Content.js
@@ -123,6 +123,22 @@ Ext.define('PBS.DataStoreContent', {
             this.store.load();
         },
 
+        s3Refresh: function () {
+            let me = this;
+            let view = me.getView();
+            Proxmox.Utils.API2Request({
+                url: `/admin/datastore/${view.datastore}/s3-refresh`,
+                method: 'PUT',
+                failure: (response) => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
+                success: function (response, options) {
+                    Ext.create('Proxmox.window.TaskViewer', {
+                        upid: response.result.data,
+                        taskDone: () => me.reload(),
+                    }).show();
+                },
+            });
+        },
+
         getRecordGroups: function (records) {
             let groups = {};
 
@@ -1273,12 +1289,44 @@ Ext.define('PBS.DataStoreContent', {
         },
     ],
 
+    initComponent: function () {
+        let me = this;
+
+        me.callParent();
+
+        Proxmox.Utils.API2Request({
+            url: `/config/datastore/${me.datastore}`,
+            failure: (response) => Ext.Msg.alert(gettext('Error'), response.htmlStatus),
+            success: function (response, options) {
+                let data = response.result.data;
+                if (data.backend) {
+                    let backendConfig = PBS.Utils.parsePropertyString(data.backend);
+                    let hasS3Backend = backendConfig.type === 's3';
+                    me.down('#moreDropdown').setDisabled(!hasS3Backend);
+                }
+            },
+        });
+    },
+
     tbar: [
         {
             text: gettext('Reload'),
             iconCls: 'fa fa-refresh',
             handler: 'reload',
         },
+        {
+            text: gettext('More'),
+            itemId: 'moreDropdown',
+            disabled: true,
+            menu: [
+                {
+                    text: gettext('Refresh contents from S3 bucket'),
+                    iconCls: 'fa fa-cloud-download',
+                    handler: 's3Refresh',
+                    selModel: false,
+                },
+            ],
+        },
         '-',
         {
             xtype: 'proxmoxButton',
-- 
2.47.2





More information about the pbs-devel mailing list