]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/data/RRDStore.js
f9f806855b5c7cbb299dabf47a8eadf7ebb67db1
[pve-manager.git] / www / manager6 / data / RRDStore.js
1 /* Extends the PVE.data.UpdateStore type
2 *
3 *
4 */
5 Ext.define('PVE.data.RRDStore', {
6 extend: 'PVE.data.UpdateStore',
7 alias: 'store.pveRRDStore',
8
9 setRRDUrl: function(timeframe, cf) {
10 var me = this;
11 if (!timeframe) {
12 timeframe = me.timeframe;
13 }
14
15 if (!cf) {
16 cf = me.cf;
17 }
18
19 me.proxy.url = me.rrdurl + "?timeframe=" + timeframe + "&cf=" + cf;
20 },
21
22 proxy: {
23 type: 'pve'
24 },
25 fields: [
26 // node rrd fields
27 {
28 name:'cpu',
29 // percentage
30 convert: function(value) {
31 return value*100;
32 }
33 },
34 {
35 name:'iowait',
36 // percentage
37 convert: function(value) {
38 return value*100;
39 }
40 },
41 'loadavg',
42 'maxcpu',
43 'memtotal',
44 'memused',
45 'netin',
46 'netout',
47 'roottotal',
48 'rootused',
49 'swaptotal',
50 'swapused',
51 'time',
52
53 // missing qemu/lxc fields
54 'maxmem',
55 'mem',
56 'disk',
57 'diskread',
58 'diskwrite',
59 'maxdisk',
60
61 // missing storage fields
62 'used',
63 'total',
64
65 // for time we generate unix timestamps, javascript uses milliseconds instead of seconds
66 { name:'time', convert: function(value) { return value*1000; }}
67 ],
68 sorters: 'time',
69 timeframe: 'hour',
70 cf: 'AVERAGE',
71
72 constructor: function(config) {
73 var me = this;
74
75 config = config || {};
76
77 // set default interval to 30seconds
78 if (!config.interval) {
79 config.interval = 30000;
80 }
81
82 // set a new storeid
83 if (!config.storeid) {
84 config.storeid = 'rrdstore-' + (++Ext.idSeed);
85 }
86
87 // rrdurl is required
88 if (!config.rrdurl) {
89 throw "no rrdurl specified";
90 }
91
92 var stateid = 'pveRRDTypeSelection';
93 var sp = Ext.state.Manager.getProvider();
94 var stateinit = sp.get(stateid);
95
96 if (stateinit) {
97 if(stateinit.timeframe !== me.timeframe || stateinit.cf !== me.rrdcffn){
98 me.timeframe = stateinit.timeframe;
99 me.rrdcffn = stateinit.cf;
100 }
101 }
102
103 me.callParent([config]);
104
105 me.setRRDUrl();
106 me.mon(sp, 'statechange', function(prov, key, state){
107 if (key === stateid) {
108 if (state && state.id) {
109 if (state.timeframe !== me.timeframe || state.cf !== me.cf) {
110 me.timeframe = state.timeframe;
111 me.cf = state.cf;
112 me.setRRDUrl();
113 me.reload();
114 }
115 }
116 }
117 });
118 }
119 });