]> git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/StatusDetail.js
gui: ceph: remove mon specific code from StatusDetail
[pve-manager.git] / www / manager6 / ceph / StatusDetail.js
1 Ext.define('PVE.ceph.StatusDetail', {
2 extend: 'Ext.panel.Panel',
3 alias: 'widget.pveCephStatusDetail',
4
5 layout: {
6 type: 'hbox',
7 align: 'stretch'
8 },
9
10 bodyPadding: '0 5 20',
11 defaults: {
12 xtype: 'box',
13 style: {
14 'text-align':'center'
15 }
16 },
17
18 items: [{
19 flex: 1,
20 itemId: 'osds',
21 data: {
22 total: 0,
23 upin: 0,
24 upout: 0,
25 downin: 0,
26 downout: 0
27 },
28 tpl: [
29 '<h3>' + 'OSDs' + '</h3>',
30 '<table class="osds">',
31 '<tr><td></td>',
32 '<td><i class="fa fa-fw good fa-circle"></i>',
33 gettext('In'),
34 '</td>',
35 '<td><i class="fa fa-fw warning fa-circle-o"></i>',
36 gettext('Out'),
37 '</td>',
38 '</tr>',
39 '<tr>',
40 '<td><i class="fa fa-fw good fa-arrow-circle-up"></i>',
41 gettext('Up'),
42 '</td>',
43 '<td>{upin}</td>',
44 '<td>{upout}</td>',
45 '</tr>',
46 '<tr>',
47 '<td><i class="fa fa-fw critical fa-arrow-circle-down"></i>',
48 gettext('Down'),
49 '</td>',
50 '<td>{downin}</td>',
51 '<td>{downout}</td>',
52 '</tr>',
53 '</table>',
54 '<br /><div>',
55 gettext('Total'),
56 ': {total}',
57 '</div>'
58 ]
59 },
60 {
61 flex: 1.6,
62 itemId: 'pgs',
63 padding: '0 10',
64 data: {
65 states: []
66 },
67 tpl: [
68 '<h3>' + 'PGs' + '</h3>',
69 '<tpl for="states">',
70 '<div class="left-aligned">{state_name}:</div>',
71 '<div class="right-aligned">{count}</div><br />',
72 '<div style="clear:both"></div>',
73 '</tpl>'
74 ]
75 }],
76
77 updateAll: function(health, monmap, pgmap, osdmap, quorum_names) {
78 var me = this;
79 me.suspendLayout = true;
80
81 // update pgs sorted
82 var pgs_by_state = pgmap.pgs_by_state || [];
83 pgs_by_state.sort(function(a,b){
84 return (a.state_name < b.state_name)?-1:(a.state_name === b.state_name)?0:1;
85 });
86 me.getComponent('pgs').update({states: pgs_by_state});
87
88 var downinregex = /(\d+) osds down/;
89 var downin_osds = 0;
90
91 // we collect monitor/osd information from the checks
92 Ext.Object.each(health.checks, function(key, value, obj) {
93 var found = null;
94 if (key === 'OSD_DOWN') {
95 found = value.summary.message.match(downinregex);
96 if (found !== null) {
97 downin_osds = parseInt(found[1],10);
98 }
99 }
100 });
101
102 // update osds counts
103
104 var total_osds = osdmap.osdmap.num_osds || 0;
105 var in_osds = osdmap.osdmap.num_in_osds || 0;
106 var up_osds = osdmap.osdmap.num_up_osds || 0;
107 var out_osds = total_osds - in_osds;
108 var down_osds = total_osds - up_osds;
109
110 var downout_osds = down_osds - downin_osds;
111 var upin_osds = in_osds - downin_osds;
112 var upout_osds = up_osds - upin_osds;
113 var osds = {
114 total: total_osds,
115 upin: upin_osds,
116 upout: upout_osds,
117 downin: downin_osds,
118 downout: downout_osds
119 };
120 var osdcomponent = me.getComponent('osds');
121 osdcomponent.update(Ext.apply(osdcomponent.data, osds));
122
123 me.suspendLayout = false;
124 me.updateLayout();
125 }
126 });
127