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
;
56 constructor: function(config
) {
59 config
= config
|| {};
61 let field_defaults
= {
63 header
: gettext('Type'),
65 renderer
: PVE
.Utils
.render_resource_type
,
78 header
: gettext('Online'),
80 renderer
: Proxmox
.Utils
.format_boolean
,
82 convert: function(value
, record
) {
83 var info
= record
.data
;
84 return Ext
.isNumeric(info
.uptime
) && info
.uptime
> 0;
88 header
: gettext('Description'),
92 convert: function(value
, record
) {
97 let info
= record
.data
, text
;
98 if (Ext
.isNumeric(info
.vmid
) && info
.vmid
> 0) {
99 text
= String(info
.vmid
);
101 text
+= " (" + info
.name
+ ')';
103 } else { // node, pool, storage
104 text
= info
[info
.type
] || info
.id
;
105 if (info
.node
&& info
.type
!== 'node') {
106 text
+= " (" + info
.node
+ ")";
121 header
: gettext('Name'),
127 header
: gettext('Disk usage'),
129 renderer
: PVE
.Utils
.render_disk_usage
,
135 header
: gettext('Disk usage') + " %",
138 renderer
: PVE
.Utils
.render_disk_usage_percent
,
140 calculate
: PVE
.Utils
.calculate_disk_usage
,
144 header
: gettext('Disk size'),
146 renderer
: Proxmox
.Utils
.render_size
,
152 header
: gettext('Memory usage'),
154 renderer
: PVE
.Utils
.render_mem_usage
,
160 header
: gettext('Memory usage') + " %",
162 renderer
: PVE
.Utils
.render_mem_usage_percent
,
163 calculate
: PVE
.Utils
.calculate_mem_usage
,
169 header
: gettext('Memory size'),
171 renderer
: Proxmox
.Utils
.render_size
,
177 header
: gettext('CPU usage'),
179 renderer
: Proxmox
.Utils
.render_cpu
,
184 header
: gettext('maxcpu'),
191 header
: gettext('Total Disk Read'),
195 renderer
: Proxmox
.Utils
.format_size
,
199 header
: gettext('Total Disk Write'),
203 renderer
: Proxmox
.Utils
.format_size
,
207 header
: gettext('Total NetIn'),
211 renderer
: Proxmox
.Utils
.format_size
,
215 header
: gettext('Total NetOut'),
219 renderer
: Proxmox
.Utils
.format_size
,
223 header
: gettext('Template'),
230 header
: gettext('Uptime'),
232 renderer
: Proxmox
.Utils
.render_uptime
,
237 header
: gettext('Node'),
244 header
: gettext('Storage'),
251 header
: gettext('Pool'),
258 header
: gettext('HA State'),
260 defaultValue
: 'unmanaged',
265 header
: gettext('Status'),
272 header
: gettext('Lock'),
279 header
: gettext('Host CPU usage'),
281 renderer
: PVE
.Utils
.render_hostcpu
,
282 calculate
: PVE
.Utils
.calculate_hostcpu
,
288 header
: gettext('Host Memory usage') + " %",
290 renderer
: PVE
.Utils
.render_hostmem_usage_percent
,
291 calculate
: PVE
.Utils
.calculate_hostmem_usage
,
297 header
: gettext('Tags'),
298 renderer
: (value
) => PVE
.Utils
.renderTags(value
, PVE
.UIOptions
.tagOverrides
),
303 // note: flex only last column to keep info closer together
308 Ext
.Object
.each(field_defaults
, function(key
, value
) {
309 var field
= { name
: key
, type
: value
.type
};
310 if (Ext
.isDefined(value
.convert
)) {
311 field
.convert
= value
.convert
;
314 if (Ext
.isDefined(value
.calculate
)) {
315 field
.calculate
= value
.calculate
;
318 if (Ext
.isDefined(value
.defaultValue
)) {
319 field
.defaultValue
= value
.defaultValue
;
323 fieldNames
.push(key
);
326 Ext
.define('PVEResources', {
327 extend
: "Ext.data.Model",
331 url
: '/api2/json/cluster/resources',
335 Ext
.define('PVETree', {
336 extend
: "Ext.data.Model",
338 proxy
: { type
: 'memory' },
342 storeid
: 'PVEResources',
343 model
: 'PVEResources',
344 defaultColumns: function() {
346 Ext
.Object
.each(field_defaults
, function(field
, info
) {
347 let fieldInfo
= Ext
.apply({ dataIndex
: field
}, info
);
352 fieldNames
: fieldNames
,
355 me
.callParent([config
]);