1 Ext
.define('PVE.data.ResourceStore', {
2 extend
: 'Proxmox.data.UpdateStore',
5 findVMID: function(vmid
) {
7 return me
.findExact('vmid', parseInt(vmid
, 10)) >= 0;
10 // returns the cached data from all nodes
11 getNodes: function() {
15 me
.each(function(record
) {
16 if (record
.get('type') === "node") {
17 nodes
.push(record
.getData());
24 storageIsShared: function(storage_path
) {
27 let index
= me
.findExact('id', storage_path
);
29 return me
.getAt(index
).data
.shared
;
35 guestNode: function(vmid
) {
38 let index
= me
.findExact('vmid', parseInt(vmid
, 10));
40 return me
.getAt(index
).data
.node
;
43 guestName: function(vmid
) {
45 let index
= me
.findExact('vmid', parseInt(vmid
, 10));
49 let rec
= me
.getAt(index
).data
;
58 // can only refresh if we're loaded at least once and are not currently loading
59 if (!me
.isLoading() && me
.isLoaded()) {
60 let records
= (me
.getData().getSource() || me
.getData()).getRange();
61 me
.fireEvent('load', me
, records
);
65 constructor: function(config
) {
68 config
= config
|| {};
70 let field_defaults
= {
72 header
: gettext('Type'),
74 renderer
: PVE
.Utils
.render_resource_type
,
87 header
: gettext('Online'),
89 renderer
: Proxmox
.Utils
.format_boolean
,
91 convert: function(value
, record
) {
92 var info
= record
.data
;
93 return Ext
.isNumeric(info
.uptime
) && info
.uptime
> 0;
97 header
: gettext('Description'),
101 convert: function(value
, record
) {
106 let info
= record
.data
, text
;
107 if (Ext
.isNumeric(info
.vmid
) && info
.vmid
> 0) {
108 text
= String(info
.vmid
);
110 text
+= " (" + info
.name
+ ')';
112 } else { // node, pool, storage
113 text
= info
[info
.type
] || info
.id
;
114 if (info
.node
&& info
.type
!== 'node') {
115 text
+= " (" + info
.node
+ ")";
130 header
: gettext('Name'),
136 header
: gettext('Disk usage'),
138 renderer
: PVE
.Utils
.render_disk_usage
,
144 header
: gettext('Disk usage') + " %",
147 renderer
: PVE
.Utils
.render_disk_usage_percent
,
149 calculate
: PVE
.Utils
.calculate_disk_usage
,
153 header
: gettext('Disk size'),
155 renderer
: Proxmox
.Utils
.render_size
,
161 header
: gettext('Memory usage'),
163 renderer
: PVE
.Utils
.render_mem_usage
,
169 header
: gettext('Memory usage') + " %",
171 renderer
: PVE
.Utils
.render_mem_usage_percent
,
172 calculate
: PVE
.Utils
.calculate_mem_usage
,
178 header
: gettext('Memory size'),
180 renderer
: Proxmox
.Utils
.render_size
,
186 header
: gettext('CPU usage'),
188 renderer
: Proxmox
.Utils
.render_cpu
,
193 header
: gettext('maxcpu'),
200 header
: gettext('Total Disk Read'),
204 renderer
: Proxmox
.Utils
.format_size
,
208 header
: gettext('Total Disk Write'),
212 renderer
: Proxmox
.Utils
.format_size
,
216 header
: gettext('Total NetIn'),
220 renderer
: Proxmox
.Utils
.format_size
,
224 header
: gettext('Total NetOut'),
228 renderer
: Proxmox
.Utils
.format_size
,
232 header
: gettext('Template'),
239 header
: gettext('Uptime'),
241 renderer
: Proxmox
.Utils
.render_uptime
,
246 header
: gettext('Node'),
253 header
: gettext('Storage'),
260 header
: gettext('Pool'),
267 header
: gettext('HA State'),
269 defaultValue
: 'unmanaged',
274 header
: gettext('Status'),
281 header
: gettext('Lock'),
288 header
: gettext('Host CPU usage'),
290 renderer
: PVE
.Utils
.render_hostcpu
,
291 calculate
: PVE
.Utils
.calculate_hostcpu
,
297 header
: gettext('Host Memory usage') + " %",
299 renderer
: PVE
.Utils
.render_hostmem_usage_percent
,
300 calculate
: PVE
.Utils
.calculate_hostmem_usage
,
306 header
: gettext('Tags'),
307 renderer
: (value
) => PVE
.Utils
.renderTags(value
, PVE
.UIOptions
.tagOverrides
),
312 // note: flex only last column to keep info closer together
317 Ext
.Object
.each(field_defaults
, function(key
, value
) {
318 var field
= { name
: key
, type
: value
.type
};
319 if (Ext
.isDefined(value
.convert
)) {
320 field
.convert
= value
.convert
;
323 if (Ext
.isDefined(value
.calculate
)) {
324 field
.calculate
= value
.calculate
;
327 if (Ext
.isDefined(value
.defaultValue
)) {
328 field
.defaultValue
= value
.defaultValue
;
332 fieldNames
.push(key
);
335 Ext
.define('PVEResources', {
336 extend
: "Ext.data.Model",
340 url
: '/api2/json/cluster/resources',
344 Ext
.define('PVETree', {
345 extend
: "Ext.data.Model",
347 proxy
: { type
: 'memory' },
351 storeid
: 'PVEResources',
352 model
: 'PVEResources',
353 defaultColumns: function() {
355 Ext
.Object
.each(field_defaults
, function(field
, info
) {
356 let fieldInfo
= Ext
.apply({ dataIndex
: field
}, info
);
361 fieldNames
: fieldNames
,
364 me
.callParent([config
]);