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