'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 <d.tschlatscher@proxmox.com>
This commit is contained in:
Daniel Tschlatscher 2022-11-09 15:25:23 +01:00 committed by Wolfgang Bumiller
parent f362f8f075
commit de923258d0
4 changed files with 26 additions and 5 deletions

View File

@ -1804,6 +1804,7 @@ pub fn get_rrd_stats(
let mut rrd_fields = vec![ let mut rrd_fields = vec![
"total", "total",
"available",
"used", "used",
"read_ios", "read_ios",
"read_bytes", "read_bytes",

View File

@ -3,7 +3,12 @@ Ext.define('pbs-datastore-statistics', {
fields: [ fields: [
'store', 'store',
'total', {
name: 'total',
calculate: function(data) {
return data.avail + data.used;
},
},
'used', 'used',
'avail', 'avail',
'estimated-full-date', 'estimated-full-date',

View File

@ -52,10 +52,11 @@ Ext.define('PBS.datastore.DataStoreListSummary', {
vm.set('maintenance', ''); 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}'), let usagetext = Ext.String.format(gettext('{0} of {1}'),
Proxmox.Utils.format_size(statusData.used, true), 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'); let usagePanel = me.lookup('usage');

View File

@ -3,6 +3,20 @@ Ext.define('pve-rrd-datastore', {
fields: [ fields: [
'used', 'used',
'total', '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_ios',
'read_bytes', 'read_bytes',
'write_ios', 'write_ios',
@ -66,8 +80,8 @@ Ext.define('PBS.DataStoreInfo', {
let vm = me.getViewModel(); let vm = me.getViewModel();
let counts = store.getById('counts').data.value; let counts = store.getById('counts').data.value;
let total = store.getById('total').data.value;
let used = store.getById('used').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); let usage = Proxmox.Utils.render_size_usage(used, total, true);
vm.set('usagetext', usage); vm.set('usagetext', usage);
@ -236,7 +250,7 @@ Ext.define('PBS.DataStoreSummary', {
{ {
xtype: 'proxmoxRRDChart', xtype: 'proxmoxRRDChart',
title: gettext('Storage usage (bytes)'), title: gettext('Storage usage (bytes)'),
fields: ['total', 'used'], fields: ['unpriv-total', 'used'],
fieldTitles: [gettext('Total'), gettext('Storage usage')], fieldTitles: [gettext('Total'), gettext('Storage usage')],
}, },
{ {