mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-05-09 07:54:13 +00:00

we do not need to check for qemu/lxc/node because the other types do not have an uptime value Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
293 lines
5.8 KiB
JavaScript
293 lines
5.8 KiB
JavaScript
Ext.define('PVE.data.ResourceStore', {
|
|
extend: 'PVE.data.UpdateStore',
|
|
singleton: true,
|
|
|
|
findVMID: function(vmid) {
|
|
var me = this, i;
|
|
|
|
return (me.findExact('vmid', parseInt(vmid, 10)) >= 0);
|
|
},
|
|
|
|
// returns the cached data from all nodes
|
|
getNodes: function() {
|
|
var me = this;
|
|
|
|
var nodes = [];
|
|
me.each(function(record) {
|
|
if (record.get('type') == "node") {
|
|
nodes.push( record.getData() );
|
|
}
|
|
});
|
|
|
|
return nodes;
|
|
},
|
|
|
|
constructor: function(config) {
|
|
// fixme: how to avoid those warnings
|
|
/*jslint confusion: true */
|
|
|
|
var me = this;
|
|
|
|
config = config || {};
|
|
|
|
var field_defaults = {
|
|
type: {
|
|
header: gettext('Type'),
|
|
type: 'string',
|
|
renderer: PVE.Utils.render_resource_type,
|
|
sortable: true,
|
|
hideable: false,
|
|
width: 100
|
|
},
|
|
id: {
|
|
header: 'ID',
|
|
type: 'string',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 80
|
|
},
|
|
running: {
|
|
header: gettext('Online'),
|
|
type: 'boolean',
|
|
renderer: PVE.Utils.format_boolean,
|
|
hidden: true,
|
|
convert: function(value, record) {
|
|
var info = record.data;
|
|
return (Ext.isNumeric(info.uptime) && (info.uptime > 0));
|
|
}
|
|
},
|
|
text: {
|
|
header: gettext('Description'),
|
|
type: 'string',
|
|
sortable: true,
|
|
width: 200,
|
|
convert: function(value, record) {
|
|
var info = record.data;
|
|
var text;
|
|
|
|
if (value) {
|
|
return value;
|
|
}
|
|
|
|
if (info.type === 'node') {
|
|
text = info.node;
|
|
} else if (info.type === 'pool') {
|
|
text = info.pool;
|
|
} else if (info.type === 'storage') {
|
|
text = info.storage + ' (' + info.node + ')';
|
|
} else if (info.type === 'qemu' || info.type === 'lxc') {
|
|
text = String(info.vmid);
|
|
if (info.name) {
|
|
text += " (" + info.name + ')';
|
|
}
|
|
} else {
|
|
text = info.id;
|
|
}
|
|
return text;
|
|
}
|
|
},
|
|
vmid: {
|
|
header: 'VMID',
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 80
|
|
},
|
|
name: {
|
|
header: gettext('Name'),
|
|
hidden: true,
|
|
sortable: true,
|
|
type: 'string'
|
|
},
|
|
disk: {
|
|
header: gettext('Disk usage'),
|
|
type: 'integer',
|
|
renderer: PVE.Utils.render_disk_usage,
|
|
sortable: true,
|
|
width: 100,
|
|
hidden: true
|
|
},
|
|
diskuse: {
|
|
header: gettext('Disk usage') + " %",
|
|
type: 'number',
|
|
sortable: true,
|
|
renderer: PVE.Utils.render_disk_usage_percent,
|
|
width: 100,
|
|
calculate: PVE.Utils.calculate_disk_usage,
|
|
sortType: 'asFloat'
|
|
},
|
|
maxdisk: {
|
|
header: gettext('Disk size'),
|
|
type: 'integer',
|
|
renderer: PVE.Utils.render_size,
|
|
sortable: true,
|
|
hidden: true,
|
|
width: 100
|
|
},
|
|
mem: {
|
|
header: gettext('Memory usage'),
|
|
type: 'integer',
|
|
renderer: PVE.Utils.render_mem_usage,
|
|
sortable: true,
|
|
hidden: true,
|
|
width: 100
|
|
},
|
|
memuse: {
|
|
header: gettext('Memory usage') + " %",
|
|
type: 'number',
|
|
renderer: PVE.Utils.render_mem_usage_percent,
|
|
calculate: PVE.Utils.calculate_mem_usage,
|
|
sortType: 'asFloat',
|
|
sortable: true,
|
|
width: 100
|
|
},
|
|
maxmem: {
|
|
header: gettext('Memory size'),
|
|
type: 'integer',
|
|
renderer: PVE.Utils.render_size,
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 100
|
|
},
|
|
cpu: {
|
|
header: gettext('CPU usage'),
|
|
type: 'float',
|
|
renderer: PVE.Utils.render_cpu,
|
|
sortable: true,
|
|
width: 100
|
|
},
|
|
maxcpu: {
|
|
header: gettext('maxcpu'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 60
|
|
},
|
|
diskread: {
|
|
header: gettext('Total Disk Read'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
renderer: PVE.Utils.format_size,
|
|
width: 100
|
|
},
|
|
diskwrite: {
|
|
header: gettext('Total Disk Write'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
renderer: PVE.Utils.format_size,
|
|
width: 100
|
|
},
|
|
netin: {
|
|
header: gettext('Total NetIn'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
renderer: PVE.Utils.format_size,
|
|
width: 100
|
|
},
|
|
netout: {
|
|
header: gettext('Total NetOut'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
renderer: PVE.Utils.format_size,
|
|
width: 100
|
|
},
|
|
template: {
|
|
header: gettext('Template'),
|
|
type: 'integer',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 60
|
|
},
|
|
uptime: {
|
|
header: gettext('Uptime'),
|
|
type: 'integer',
|
|
renderer: PVE.Utils.render_uptime,
|
|
sortable: true,
|
|
width: 110
|
|
},
|
|
node: {
|
|
header: gettext('Node'),
|
|
type: 'string',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 110
|
|
},
|
|
storage: {
|
|
header: gettext('Storage'),
|
|
type: 'string',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 110
|
|
},
|
|
pool: {
|
|
header: gettext('Pool'),
|
|
type: 'string',
|
|
hidden: true,
|
|
sortable: true,
|
|
width: 110
|
|
},
|
|
hastate: {
|
|
header: gettext('HA State'),
|
|
type: 'string',
|
|
defaultValue: 'unmanaged',
|
|
hidden: true,
|
|
sortable: true
|
|
}
|
|
};
|
|
|
|
var fields = [];
|
|
var fieldNames = [];
|
|
Ext.Object.each(field_defaults, function(key, value) {
|
|
if (!Ext.isDefined(value.convert) && !Ext.isDefined(value.calculate)) {
|
|
var field = {name: key, type: value.type};
|
|
if (Ext.isDefined(value.defaultValue)) {
|
|
field.defaultValue = value.defaultValue;
|
|
}
|
|
fields.push(field);
|
|
fieldNames.push(key);
|
|
} else if (key === 'text' || key === 'running') {
|
|
fields.push({name: key, type: value.type, convert: value.convert});
|
|
fieldNames.push(key);
|
|
} else {
|
|
value.name = key;
|
|
fields.push(value);
|
|
}
|
|
});
|
|
|
|
Ext.define('PVEResources', {
|
|
extend: "Ext.data.Model",
|
|
fields: fields,
|
|
proxy: {
|
|
type: 'pve',
|
|
url: '/api2/json/cluster/resources'
|
|
}
|
|
});
|
|
|
|
Ext.define('PVETree', {
|
|
extend: "Ext.data.Model",
|
|
fields: fields,
|
|
proxy: { type: 'memory' }
|
|
});
|
|
|
|
Ext.apply(config, {
|
|
storeid: 'PVEResources',
|
|
model: 'PVEResources',
|
|
defaultColumns: function() {
|
|
var res = [];
|
|
Ext.Object.each(field_defaults, function(field, info) {
|
|
var fi = Ext.apply({ dataIndex: field }, info);
|
|
res.push(fi);
|
|
});
|
|
return res;
|
|
},
|
|
fieldNames: fieldNames
|
|
});
|
|
|
|
me.callParent([config]);
|
|
}
|
|
});
|