]>
git.proxmox.com Git - pve-manager.git/blob - www/manager6/ceph/Status.js
1 Ext
.define('PVE.node.CephStatus', {
2 extend
: 'Ext.panel.Panel',
3 alias
: 'widget.pveNodeCephStatus',
5 onlineHelp
: 'chapter_pveceph',
9 bodyPadding
: '10 0 0 0',
13 userCls
: 'inline-block',
20 title
: gettext('Health'),
21 bodyPadding
: '0 10 10 10',
30 itemId
: 'overallhealth',
31 xtype
: 'pveHealthWidget',
32 title
: gettext('Status')
38 stateId
: 'ceph-status-warnings',
42 // since we load the store manually,
43 // to show the emptytext, we have to
44 // specify an empty store
46 emptyText
: gettext('No Warnings/Errors'),
49 dataIndex
: 'severity',
50 header
: gettext('Severity'),
53 renderer: function(value
) {
54 var health
= PVE
.Utils
.map_ceph_health
[value
];
55 var classes
= PVE
.Utils
.get_health_icon(health
);
57 return '<i class="fa fa-fw ' + classes
+ '"></i>';
60 sorterFn: function(a
,b
) {
61 var healthArr
= ['HEALTH_ERR', 'HEALTH_WARN', 'HEALTH_OK'];
62 return healthArr
.indexOf(b
.data
.severity
) - healthArr
.indexOf(a
.data
.severity
);
68 header
: gettext('Summary'),
76 xtype
: 'pveCephStatusDetail',
77 itemId
: 'statusdetail',
78 title
: gettext('Status')
82 title
: gettext('Performance'),
83 bodyPadding
: '0 10 10 10',
93 title
: gettext('Usage')
105 xtype
: 'pveRunningChart',
106 title
: gettext('Reads'),
107 renderer
: PVE
.Utils
.render_bandwidth
111 xtype
: 'pveRunningChart',
112 title
: gettext('Writes'),
113 renderer
: PVE
.Utils
.render_bandwidth
117 xtype
: 'pveRunningChart',
119 title
: 'IOPS', // do not localize
120 renderer
: Ext
.util
.Format
.numberRenderer('0,000')
124 xtype
: 'pveRunningChart',
126 title
: 'IOPS: ' + gettext('Reads'),
127 renderer
: Ext
.util
.Format
.numberRenderer('0,000')
131 xtype
: 'pveRunningChart',
133 title
: 'IOPS: ' + gettext('Writes'),
134 renderer
: Ext
.util
.Format
.numberRenderer('0,000')
142 updateAll: function(store
, records
, success
) {
143 if (!success
|| records
.length
=== 0) {
148 var rec
= records
[0];
151 me
.down('#overallhealth').updateHealth(PVE
.Utils
.render_ceph_health(rec
.data
.health
|| {}));
152 // add errors to gridstore
153 me
.down('#warnings').getStore().loadRawData(rec
.data
.health
.summary
, false);
155 // update detailstatus panel
156 me
.getComponent('statusdetail').updateAll(rec
);
158 // add performance data
159 var used
= rec
.data
.pgmap
.bytes_used
;
160 var total
= rec
.data
.pgmap
.bytes_total
;
162 var text
= Ext
.String
.format(gettext('{0} of {1}'),
163 PVE
.Utils
.render_size(used
),
164 PVE
.Utils
.render_size(total
)
167 // update the usage widget
168 me
.down('#space').updateValue(used
/total
, text
);
170 // TODO: logic for jewel (iops splitted in read/write)
172 var iops
= rec
.data
.pgmap
.op_per_sec
;
173 var readiops
= rec
.data
.pgmap
.read_op_per_sec
;
174 var writeiops
= rec
.data
.pgmap
.write_op_per_sec
;
175 var reads
= rec
.data
.pgmap
.read_bytes_sec
|| 0;
176 var writes
= rec
.data
.pgmap
.write_bytes_sec
|| 0;
178 if (iops
!== undefined && me
.version
!== 'hammer') {
179 me
.change_version('hammer');
180 } else if((readiops
!== undefined || writeiops
!== undefined) && me
.version
!== 'jewel') {
181 me
.change_version('jewel');
184 me
.reads
.addDataPoint(reads
);
185 me
.writes
.addDataPoint(writes
);
186 me
.iops
.addDataPoint(iops
);
187 me
.readiops
.addDataPoint(readiops
);
188 me
.writeiops
.addDataPoint(writeiops
);
191 change_version: function(version
) {
193 me
.version
= version
;
194 me
.sp
.set('ceph-version', version
);
195 me
.iops
.setVisible(version
=== 'hammer');
196 me
.readiops
.setVisible(version
=== 'jewel');
197 me
.writeiops
.setVisible(version
=== 'jewel');
200 initComponent: function() {
203 var nodename
= me
.pveSelNode
.data
.node
;
205 throw "no node name specified";
209 me
.store
= Ext
.create('PVE.data.UpdateStore', {
210 storeid
: 'ceph-status-' + nodename
,
214 url
: '/api2/json/nodes/' + nodename
+ '/ceph/status'
218 // save references for the updatefunction
219 me
.iops
= me
.down('#iops');
220 me
.readiops
= me
.down('#readiops');
221 me
.writeiops
= me
.down('#writeiops');
222 me
.reads
= me
.down('#reads');
223 me
.writes
= me
.down('#writes');
226 me
.sp
= Ext
.state
.Manager
.getProvider();
227 me
.version
= me
.sp
.get('ceph-version');
228 me
.change_version(me
.version
);
230 PVE
.Utils
.monStoreErrors(me
,me
.store
);
231 me
.mon(me
.store
, 'load', me
.updateAll
, me
);
232 me
.on('destroy', me
.store
.stopUpdate
);
233 me
.store
.startUpdate();