]>
Commit | Line | Data |
---|---|---|
4053fc86 DM |
1 | Ext.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 | |
2b2fe160 DC |
236 | }, |
237 | hastate: { | |
238 | header: gettext('HA State'), | |
239 | type: 'string', | |
c9329af1 | 240 | defaultValue: 'unmanaged', |
2b2fe160 DC |
241 | hidden: true, |
242 | sortable: true | |
4053fc86 DM |
243 | } |
244 | }; | |
245 | ||
246 | var fields = []; | |
247 | var fieldNames = []; | |
248 | Ext.Object.each(field_defaults, function(key, value) { | |
728f1b97 | 249 | if (!Ext.isDefined(value.convert) && !Ext.isDefined(value.calculate)) { |
818dfc5c TL |
250 | var field = {name: key, type: value.type}; |
251 | if (Ext.isDefined(value.defaultValue)) { | |
252 | field.defaultValue = value.defaultValue; | |
253 | } | |
254 | fields.push(field); | |
4053fc86 | 255 | fieldNames.push(key); |
0be88ae1 | 256 | } else if (key === 'text' || key === 'running') { |
4053fc86 DM |
257 | fields.push({name: key, type: value.type, convert: value.convert}); |
258 | fieldNames.push(key); | |
728f1b97 DC |
259 | } else { |
260 | value.name = key; | |
261 | fields.push(value); | |
262 | } | |
4053fc86 DM |
263 | }); |
264 | ||
265 | Ext.define('PVEResources', { | |
266 | extend: "Ext.data.Model", | |
267 | fields: fields, | |
268 | proxy: { | |
269 | type: 'pve', | |
270 | url: '/api2/json/cluster/resources' | |
271 | } | |
272 | }); | |
273 | ||
274 | Ext.define('PVETree', { | |
275 | extend: "Ext.data.Model", | |
276 | fields: fields, | |
277 | proxy: { type: 'memory' } | |
278 | }); | |
279 | ||
280 | Ext.apply(config, { | |
281 | storeid: 'PVEResources', | |
282 | model: 'PVEResources', | |
3a8c89c2 | 283 | defaultColumns: function() { |
4053fc86 DM |
284 | var res = []; |
285 | Ext.Object.each(field_defaults, function(field, info) { | |
286 | var fi = Ext.apply({ dataIndex: field }, info); | |
287 | res.push(fi); | |
288 | }); | |
289 | return res; | |
290 | }, | |
291 | fieldNames: fieldNames | |
292 | }); | |
293 | ||
294 | me.callParent([config]); | |
295 | } | |
296 | }); |