From de923258d0dafe4b4b0093925fdf1514f42c7910 Mon Sep 17 00:00:00 2001 From: Daniel Tschlatscher Date: Wed, 9 Nov 2022 15:25:23 +0100 Subject: [PATCH] 'available' field in rrd data in the API and change usage of 'total' The API now exposes the field 'available' as well, with which the unprivileged total is calculated in all corresponsing views in the frontend. The rrd charts now also display the total as the unprivileged total if available, otherwise the absolute total is used. Signed-off-by: Daniel Tschlatscher --- src/api2/admin/datastore.rs | 1 + www/dashboard/DataStoreStatistics.js | 7 ++++++- www/datastore/DataStoreListSummary.js | 5 +++-- www/datastore/Summary.js | 18 ++++++++++++++++-- 4 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/api2/admin/datastore.rs b/src/api2/admin/datastore.rs index e66e1c0b..c8e86b07 100644 --- a/src/api2/admin/datastore.rs +++ b/src/api2/admin/datastore.rs @@ -1804,6 +1804,7 @@ pub fn get_rrd_stats( let mut rrd_fields = vec![ "total", + "available", "used", "read_ios", "read_bytes", diff --git a/www/dashboard/DataStoreStatistics.js b/www/dashboard/DataStoreStatistics.js index 38f7a2fe..0510fc7d 100644 --- a/www/dashboard/DataStoreStatistics.js +++ b/www/dashboard/DataStoreStatistics.js @@ -3,7 +3,12 @@ Ext.define('pbs-datastore-statistics', { fields: [ 'store', - 'total', + { + name: 'total', + calculate: function(data) { + return data.avail + data.used; + }, + }, 'used', 'avail', 'estimated-full-date', diff --git a/www/datastore/DataStoreListSummary.js b/www/datastore/DataStoreListSummary.js index c7b67d56..bec0562d 100644 --- a/www/datastore/DataStoreListSummary.js +++ b/www/datastore/DataStoreListSummary.js @@ -52,10 +52,11 @@ Ext.define('PBS.datastore.DataStoreListSummary', { vm.set('maintenance', ''); } - let usage = statusData.used/statusData.total; + let total = statusData.avail + statusData.used; + let usage = statusData.used / total; let usagetext = Ext.String.format(gettext('{0} of {1}'), Proxmox.Utils.format_size(statusData.used, true), - Proxmox.Utils.format_size(statusData.total, true), + Proxmox.Utils.format_size(total, true), ); let usagePanel = me.lookup('usage'); diff --git a/www/datastore/Summary.js b/www/datastore/Summary.js index 94be9559..d67e81cc 100644 --- a/www/datastore/Summary.js +++ b/www/datastore/Summary.js @@ -3,6 +3,20 @@ Ext.define('pve-rrd-datastore', { fields: [ 'used', 'total', + { + name: 'unpriv-total', // Can't resuse 'total' here as that creates a stack overflow + calculate: function(data) { + let used = data.used; + let avail = data.available; + + if (avail && used) { + return avail + used; + } + + return data.total; + }, + }, + 'available', 'read_ios', 'read_bytes', 'write_ios', @@ -66,8 +80,8 @@ Ext.define('PBS.DataStoreInfo', { let vm = me.getViewModel(); let counts = store.getById('counts').data.value; - let total = store.getById('total').data.value; let used = store.getById('used').data.value; + let total = store.getById('avail').data.value + used; let usage = Proxmox.Utils.render_size_usage(used, total, true); vm.set('usagetext', usage); @@ -236,7 +250,7 @@ Ext.define('PBS.DataStoreSummary', { { xtype: 'proxmoxRRDChart', title: gettext('Storage usage (bytes)'), - fields: ['total', 'used'], + fields: ['unpriv-total', 'used'], fieldTitles: [gettext('Total'), gettext('Storage usage')], }, {