]> git.proxmox.com Git - pve-manager.git/blame - www/manager6/data/ResourceStore.js
add getNodes function to PVEResource store
[pve-manager.git] / www / manager6 / data / ResourceStore.js
CommitLineData
4053fc86
DM
1Ext.define('PVE.data.ResourceStore', {
2 extend: 'PVE.data.UpdateStore',
3 singleton: true,
4
5 findVMID: function(vmid) {
6 var me = this, i;
0be88ae1 7
4053fc86
DM
8 return (me.findExact('vmid', parseInt(vmid, 10)) >= 0);
9 },
0be88ae1 10
d9e02939
TL
11 // returns the cached data from all nodes
12 getNodes: function() {
13 var me = this;
14
15 var nodes = [];
16 me.each(function(record) {
17 if (record.get('type') == "node") {
18 nodes.push( record.getData() );
19 }
20 });
21
22 return nodes;
23 },
24
4053fc86
DM
25 constructor: function(config) {
26 // fixme: how to avoid those warnings
27 /*jslint confusion: true */
28
29 var me = this;
30
31 config = config || {};
32
33 var field_defaults = {
34 type: {
35 header: gettext('Type'),
cfb353c8 36 type: 'string',
4053fc86
DM
37 renderer: PVE.Utils.render_resource_type,
38 sortable: true,
39 hideable: false,
b1d8e73d 40 width: 100
4053fc86
DM
41 },
42 id: {
43 header: 'ID',
cfb353c8 44 type: 'string',
4053fc86
DM
45 hidden: true,
46 sortable: true,
47 width: 80
48 },
49 running: {
50 header: gettext('Online'),
51 type: 'boolean',
52 renderer: PVE.Utils.format_boolean,
53 hidden: true,
54 convert: function(value, record) {
55 var info = record.data;
56 if (info.type === 'qemu' || info.type === 'lxc' || info.type === 'node') {
57 return (Ext.isNumeric(info.uptime) && (info.uptime > 0));
58 } else {
59 return false;
60 }
61 }
62 },
63 text: {
64 header: gettext('Description'),
cfb353c8 65 type: 'string',
4053fc86
DM
66 sortable: true,
67 width: 200,
68 convert: function(value, record) {
69 var info = record.data;
70 var text;
71
72 if (value) {
73 return value;
74 }
75
76 if (info.type === 'node') {
77 text = info.node;
78 } else if (info.type === 'pool') {
79 text = info.pool;
80 } else if (info.type === 'storage') {
81 text = info.storage + ' (' + info.node + ')';
82 } else if (info.type === 'qemu' || info.type === 'lxc') {
83 text = String(info.vmid);
84 if (info.name) {
85 text += " (" + info.name + ')';
86 }
87 } else {
88 text = info.id;
89 }
90 return text;
91 }
92 },
93 vmid: {
94 header: 'VMID',
95 type: 'integer',
96 hidden: true,
97 sortable: true,
98 width: 80
99 },
100 name: {
101 header: gettext('Name'),
102 hidden: true,
103 sortable: true,
cfb353c8 104 type: 'string'
4053fc86
DM
105 },
106 disk: {
107 header: gettext('Disk usage'),
108 type: 'integer',
109 renderer: PVE.Utils.render_disk_usage,
110 sortable: true,
728f1b97 111 width: 100,
22f2f9d6 112 hidden: true
728f1b97
DC
113 },
114 diskuse: {
115 header: gettext('Disk usage') + " %",
116 type: 'number',
117 sortable: true,
118 renderer: PVE.Utils.render_disk_usage_percent,
119 width: 100,
120 calculate: PVE.Utils.calculate_disk_usage,
22f2f9d6 121 sortType: 'asFloat'
4053fc86
DM
122 },
123 maxdisk: {
124 header: gettext('Disk size'),
125 type: 'integer',
126 renderer: PVE.Utils.render_size,
127 sortable: true,
128 hidden: true,
129 width: 100
130 },
131 mem: {
132 header: gettext('Memory usage'),
133 type: 'integer',
134 renderer: PVE.Utils.render_mem_usage,
135 sortable: true,
728f1b97
DC
136 hidden: true,
137 width: 100
138 },
139 memuse: {
140 header: gettext('Memory usage') + " %",
141 type: 'number',
142 renderer: PVE.Utils.render_mem_usage_percent,
143 calculate: PVE.Utils.calculate_mem_usage,
144 sortType: 'asFloat',
145 sortable: true,
4053fc86
DM
146 width: 100
147 },
148 maxmem: {
149 header: gettext('Memory size'),
150 type: 'integer',
151 renderer: PVE.Utils.render_size,
152 hidden: true,
153 sortable: true,
154 width: 100
155 },
156 cpu: {
157 header: gettext('CPU usage'),
158 type: 'float',
159 renderer: PVE.Utils.render_cpu,
160 sortable: true,
161 width: 100
162 },
163 maxcpu: {
164 header: gettext('maxcpu'),
165 type: 'integer',
166 hidden: true,
167 sortable: true,
168 width: 60
169 },
170 diskread: {
171 header: gettext('Total Disk Read'),
172 type: 'integer',
173 hidden: true,
174 sortable: true,
175 renderer: PVE.Utils.format_size,
176 width: 100
177 },
178 diskwrite: {
179 header: gettext('Total Disk Write'),
180 type: 'integer',
181 hidden: true,
182 sortable: true,
183 renderer: PVE.Utils.format_size,
184 width: 100
185 },
186 netin: {
187 header: gettext('Total NetIn'),
188 type: 'integer',
189 hidden: true,
190 sortable: true,
191 renderer: PVE.Utils.format_size,
192 width: 100
193 },
194 netout: {
195 header: gettext('Total NetOut'),
196 type: 'integer',
197 hidden: true,
198 sortable: true,
199 renderer: PVE.Utils.format_size,
200 width: 100
201 },
202 template: {
203 header: gettext('Template'),
204 type: 'integer',
205 hidden: true,
206 sortable: true,
207 width: 60
208 },
209 uptime: {
210 header: gettext('Uptime'),
211 type: 'integer',
212 renderer: PVE.Utils.render_uptime,
213 sortable: true,
214 width: 110
0be88ae1 215 },
4053fc86
DM
216 node: {
217 header: gettext('Node'),
cfb353c8 218 type: 'string',
4053fc86
DM
219 hidden: true,
220 sortable: true,
221 width: 110
222 },
223 storage: {
224 header: gettext('Storage'),
cfb353c8 225 type: 'string',
4053fc86
DM
226 hidden: true,
227 sortable: true,
228 width: 110
229 },
230 pool: {
231 header: gettext('Pool'),
cfb353c8 232 type: 'string',
4053fc86
DM
233 hidden: true,
234 sortable: true,
235 width: 110
236 }
237 };
238
239 var fields = [];
240 var fieldNames = [];
241 Ext.Object.each(field_defaults, function(key, value) {
728f1b97 242 if (!Ext.isDefined(value.convert) && !Ext.isDefined(value.calculate)) {
4053fc86
DM
243 fields.push({name: key, type: value.type});
244 fieldNames.push(key);
0be88ae1 245 } else if (key === 'text' || key === 'running') {
4053fc86
DM
246 fields.push({name: key, type: value.type, convert: value.convert});
247 fieldNames.push(key);
728f1b97
DC
248 } else {
249 value.name = key;
250 fields.push(value);
251 }
4053fc86
DM
252 });
253
254 Ext.define('PVEResources', {
255 extend: "Ext.data.Model",
256 fields: fields,
257 proxy: {
258 type: 'pve',
259 url: '/api2/json/cluster/resources'
260 }
261 });
262
263 Ext.define('PVETree', {
264 extend: "Ext.data.Model",
265 fields: fields,
266 proxy: { type: 'memory' }
267 });
268
269 Ext.apply(config, {
270 storeid: 'PVEResources',
271 model: 'PVEResources',
4053fc86
DM
272 defaultColums: function() {
273 var res = [];
274 Ext.Object.each(field_defaults, function(field, info) {
275 var fi = Ext.apply({ dataIndex: field }, info);
276 res.push(fi);
277 });
278 return res;
279 },
280 fieldNames: fieldNames
281 });
282
283 me.callParent([config]);
284 }
285});