ui: osd: eslint fixes

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2020-10-28 10:46:05 +01:00
parent 09aef6ee84
commit 4f14c9c94b

View File

@ -8,8 +8,8 @@ Ext.define('PVE.CephCreateOsd', {
onlineHelp: 'pve_ceph_osds', onlineHelp: 'pve_ceph_osds',
initComponent : function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
@ -39,8 +39,8 @@ Ext.define('PVE.CephCreateOsd', {
nodename: me.nodename, nodename: me.nodename,
diskType: 'unused', diskType: 'unused',
fieldLabel: gettext('Disk'), fieldLabel: gettext('Disk'),
allowBlank: false allowBlank: false,
} },
], ],
column2: [ column2: [
{ {
@ -56,8 +56,8 @@ Ext.define('PVE.CephCreateOsd', {
listeners: { listeners: {
change: function(field, val) { change: function(field, val) {
me.down('field[name=db_size]').setDisabled(!val); me.down('field[name=db_size]').setDisabled(!val);
} },
} },
}, },
{ {
xtype: 'numberfield', xtype: 'numberfield',
@ -68,14 +68,14 @@ Ext.define('PVE.CephCreateOsd', {
decimalPrecision: 2, decimalPrecision: 2,
allowBlank: true, allowBlank: true,
disabled: true, disabled: true,
emptyText: gettext('Automatic') emptyText: gettext('Automatic'),
} },
], ],
advancedColumn1: [ advancedColumn1: [
{ {
xtype: 'proxmoxcheckbox', xtype: 'proxmoxcheckbox',
name: 'encrypted', name: 'encrypted',
fieldLabel: gettext('Encrypt OSD') fieldLabel: gettext('Encrypt OSD'),
}, },
{ {
xtype: 'proxmoxKVComboBox', xtype: 'proxmoxKVComboBox',
@ -92,7 +92,7 @@ Ext.define('PVE.CephCreateOsd', {
allowBlank: true, allowBlank: true,
editable: true, editable: true,
emptyText: 'auto detect', emptyText: 'auto detect',
deleteEmpty: me.isCreate ? false : true, deleteEmpty: !me.isCreate,
}, },
], ],
advancedColumn2: [ advancedColumn2: [
@ -109,8 +109,8 @@ Ext.define('PVE.CephCreateOsd', {
listeners: { listeners: {
change: function(field, val) { change: function(field, val) {
me.down('field[name=wal_size]').setDisabled(!val); me.down('field[name=wal_size]').setDisabled(!val);
} },
} },
}, },
{ {
xtype: 'numberfield', xtype: 'numberfield',
@ -121,9 +121,9 @@ Ext.define('PVE.CephCreateOsd', {
decimalPrecision: 2, decimalPrecision: 2,
allowBlank: true, allowBlank: true,
disabled: true, disabled: true,
emptyText: gettext('Automatic') emptyText: gettext('Automatic'),
} },
] ],
}, },
{ {
xtype: 'displayfield', xtype: 'displayfield',
@ -132,12 +132,12 @@ Ext.define('PVE.CephCreateOsd', {
value: 'Note: Ceph is not compatible with disks backed by a hardware ' + value: 'Note: Ceph is not compatible with disks backed by a hardware ' +
'RAID controller. For details see ' + 'RAID controller. For details see ' +
'<a target="_blank" href="' + Proxmox.Utils.get_help_link('chapter_pveceph') + '">the reference documentation</a>.', '<a target="_blank" href="' + Proxmox.Utils.get_help_link('chapter_pveceph') + '">the reference documentation</a>.',
} },
] ],
}); });
me.callParent(); me.callParent();
} },
}); });
Ext.define('PVE.CephRemoveOsd', { Ext.define('PVE.CephRemoveOsd', {
@ -154,12 +154,11 @@ Ext.define('PVE.CephRemoveOsd', {
name: 'cleanup', name: 'cleanup',
checked: true, checked: true,
labelWidth: 130, labelWidth: 130,
fieldLabel: gettext('Cleanup Disks') fieldLabel: gettext('Cleanup Disks'),
} },
], ],
initComponent : function() { initComponent: function() {
let me = this;
var me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
@ -173,11 +172,11 @@ Ext.define('PVE.CephRemoveOsd', {
me.title = gettext('Destroy') + ': Ceph OSD osd.' + me.osdid.toString(); me.title = gettext('Destroy') + ': Ceph OSD osd.' + me.osdid.toString();
Ext.applyIf(me, { Ext.applyIf(me, {
url: "/nodes/" + me.nodename + "/ceph/osd/" + me.osdid.toString() url: "/nodes/" + me.nodename + "/ceph/osd/" + me.osdid.toString(),
}); });
me.callParent(); me.callParent();
} },
}); });
Ext.define('PVE.CephSetFlags', { Ext.define('PVE.CephSetFlags', {
@ -198,9 +197,9 @@ Ext.define('PVE.CephSetFlags', {
{ {
xtype: 'inputpanel', xtype: 'inputpanel',
onGetValues: function(values) { onGetValues: function(values) {
var me = this; let me = this;
var val = {}; let val = {};
var data = me.down('#flaggrid').getStore().each((rec) => { me.down('#flaggrid').getStore().each((rec) => {
val[rec.data.name] = rec.data.value ? 1 : 0; val[rec.data.name] = rec.data.value ? 1 : 0;
}); });
@ -214,8 +213,8 @@ Ext.define('PVE.CephSetFlags', {
listeners: { listeners: {
update: function() { update: function() {
this.commitChanges(); this.commitChanges();
} },
} },
}, },
columns: [ columns: [
@ -234,14 +233,14 @@ Ext.define('PVE.CephSetFlags', {
flex: 1, flex: 1,
dataIndex: 'description', dataIndex: 'description',
}, },
] ],
}, },
], ],
}, },
], ],
initComponent : function() { initComponent: function() {
var me = this; let me = this;
if (!me.nodename) { if (!me.nodename) {
throw "no node name specified"; throw "no node name specified";
@ -254,16 +253,16 @@ Ext.define('PVE.CephSetFlags', {
me.callParent(); me.callParent();
var grid = me.down('#flaggrid'); let grid = me.down('#flaggrid');
me.load({ me.load({
success: function(response, options) { success: function(response, options) {
var data = response.result.data; let data = response.result.data;
grid.getStore().setData(data); grid.getStore().setData(data);
// re-align after store load, else the window is not centered // re-align after store load, else the window is not centered
me.alignTo(Ext.getBody(), 'c-c'); me.alignTo(Ext.getBody(), 'c-c');
} },
}); });
} },
}); });
Ext.define('PVE.node.CephOsdTree', { Ext.define('PVE.node.CephOsdTree', {
@ -285,17 +284,17 @@ Ext.define('PVE.node.CephOsdTree', {
outOsd: false, outOsd: false,
osdid: '', osdid: '',
osdhost: '', osdhost: '',
} },
}, },
controller: { controller: {
xclass: 'Ext.app.ViewController', xclass: 'Ext.app.ViewController',
reload: function() { reload: function() {
var me = this.getView(); let me = this.getView();
var vm = this.getViewModel(); let vm = this.getViewModel();
var nodename = vm.get('nodename'); let nodename = vm.get('nodename');
var sm = me.getSelectionModel(); let sm = view.getSelectionModel();
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + nodename + "/ceph/osd", url: "/nodes/" + nodename + "/ceph/osd",
waitMsgTarget: me, waitMsgTarget: me,
@ -309,17 +308,17 @@ Ext.define('PVE.node.CephOsdTree', {
); );
}, },
success: function(response, opts) { success: function(response, opts) {
var data = response.result.data; let data = response.result.data;
var selected = me.getSelection(); let selected = me.getSelection();
var name; let name;
if (selected.length) { if (selected.length) {
name = selected[0].data.name; name = selected[0].data.name;
} }
vm.set('versions', data.versions); vm.set('versions', data.versions);
// extract max version // extract max version
var maxversion = "0"; let maxversion = "0";
var mixedversions = false; let mixedversions = false;
var traverse; let traverse;
traverse = function(node, fn) { traverse = function(node, fn) {
fn(node); fn(node);
if (Array.isArray(node.children)) { if (Array.isArray(node.children)) {
@ -343,34 +342,33 @@ Ext.define('PVE.node.CephOsdTree', {
if (PVE.Utils.compare_ceph_versions(node.version, maxversion) > 0) { if (PVE.Utils.compare_ceph_versions(node.version, maxversion) > 0) {
maxversion = node.version; maxversion = node.version;
} }
}); });
vm.set('maxversion', maxversion); vm.set('maxversion', maxversion);
vm.set('mixedversions', mixedversions); vm.set('mixedversions', mixedversions);
sm.deselectAll(); sm.deselectAll();
me.setRootNode(data.root); view.setRootNode(data.root);
me.expandAll(); view.expandAll();
if (name) { if (name) {
var node = me.getRootNode().findChild('name', name, true); let node = me.getRootNode().findChild('name', name, true);
if (node) { if (node) {
me.setSelection([node]); view.setSelection([node]);
} }
} }
var flags = data.flags.split(','); let flags = data.flags.split(',');
vm.set('flags', flags); vm.set('flags', flags);
} },
}); });
}, },
osd_cmd: function(comp) { osd_cmd: function(comp) {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
var cmd = comp.cmd; let cmd = comp.cmd;
var params = comp.params || {}; let params = comp.params || {};
var osdid = vm.get('osdid'); let osdid = vm.get('osdid');
var doRequest = function() { let doRequest = function() {
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + vm.get('osdhost') + "/ceph/osd/" + osdid + '/' + cmd, url: "/nodes/" + vm.get('osdhost') + "/ceph/osd/" + osdid + '/' + cmd,
waitMsgTarget: me.getView(), waitMsgTarget: me.getView(),
@ -379,7 +377,7 @@ Ext.define('PVE.node.CephOsdTree', {
success: () => { me.reload(); }, success: () => { me.reload(); },
failure: function(response, opts) { failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus); Ext.Msg.alert(gettext('Error'), response.htmlStatus);
} },
}); });
}; };
@ -388,9 +386,9 @@ Ext.define('PVE.node.CephOsdTree', {
Ext.Msg.show({ Ext.Msg.show({
title: gettext('Confirm'), title: gettext('Confirm'),
icon: params.deep === 1 ? Ext.Msg.WARNING : Ext.Msg.QUESTION, icon: params.deep === 1 ? Ext.Msg.WARNING : Ext.Msg.QUESTION,
msg: params.deep !== 1 ? msg: params.deep !== 1
Ext.String.format(gettext("Scrub OSD.{0}"), osdid) : ? Ext.String.format(gettext("Scrub OSD.{0}"), osdid)
Ext.String.format(gettext("Deep Scrub OSD.{0}"), osdid) + : Ext.String.format(gettext("Deep Scrub OSD.{0}"), osdid) +
"<br>Caution: This can reduce performance while it is running.", "<br>Caution: This can reduce performance while it is running.",
buttons: Ext.Msg.YESNO, buttons: Ext.Msg.YESNO,
callback: function(btn) { callback: function(btn) {
@ -398,7 +396,7 @@ Ext.define('PVE.node.CephOsdTree', {
return; return;
} }
doRequest(); doRequest();
} },
}); });
} else { } else {
doRequest(); doRequest();
@ -406,53 +404,53 @@ Ext.define('PVE.node.CephOsdTree', {
}, },
create_osd: function() { create_osd: function() {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
Ext.create('PVE.CephCreateOsd', { Ext.create('PVE.CephCreateOsd', {
nodename: vm.get('nodename'), nodename: vm.get('nodename'),
taskDone: () => { me.reload(); } taskDone: () => { me.reload(); },
}).show(); }).show();
}, },
destroy_osd: function() { destroy_osd: function() {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
Ext.create('PVE.CephRemoveOsd', { Ext.create('PVE.CephRemoveOsd', {
nodename: vm.get('osdhost'), nodename: vm.get('osdhost'),
osdid: vm.get('osdid'), osdid: vm.get('osdid'),
taskDone: () => { me.reload(); } taskDone: () => { me.reload(); },
}).show(); }).show();
}, },
set_flags: function() { set_flags: function() {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
Ext.create('PVE.CephSetFlags', { Ext.create('PVE.CephSetFlags', {
nodename: vm.get('nodename'), nodename: vm.get('nodename'),
taskDone: () => { me.reload(); } taskDone: () => { me.reload(); },
}).show(); }).show();
}, },
service_cmd: function(comp) { service_cmd: function(comp) {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
var cmd = comp.cmd || comp; let cmd = comp.cmd || comp;
Proxmox.Utils.API2Request({ Proxmox.Utils.API2Request({
url: "/nodes/" + vm.get('osdhost') + "/ceph/" + cmd, url: "/nodes/" + vm.get('osdhost') + "/ceph/" + cmd,
params: { service: "osd." + vm.get('osdid') }, params: { service: "osd." + vm.get('osdid') },
waitMsgTarget: me.getView(), waitMsgTarget: me.getView(),
method: 'POST', method: 'POST',
success: function(response, options) { success: function(response, options) {
var upid = response.result.data; let upid = response.result.data;
var win = Ext.create('Proxmox.window.TaskProgress', { let win = Ext.create('Proxmox.window.TaskProgress', {
upid: upid, upid: upid,
taskDone: () => { me.reload(); } taskDone: () => { me.reload(); },
}); });
win.show(); win.show();
}, },
failure: function(response, opts) { failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus); Ext.Msg.alert(gettext('Error'), response.htmlStatus);
} },
}); });
}, },
@ -460,10 +458,10 @@ Ext.define('PVE.node.CephOsdTree', {
if (selection.length < 1) { if (selection.length < 1) {
return; return;
} }
var rec = selection[0]; let rec = selection[0];
var vm = this.getViewModel(); let vm = this.getViewModel();
var isOsd = (rec.data.host && (rec.data.type === 'osd') && (rec.data.id >= 0)); let isOsd = rec.data.host && (rec.data.type === 'osd') && (rec.data.id >= 0);
vm.set('isOsd', isOsd); vm.set('isOsd', isOsd);
vm.set('downOsd', isOsd && rec.data.status === 'down'); vm.set('downOsd', isOsd && rec.data.status === 'down');
@ -478,14 +476,14 @@ Ext.define('PVE.node.CephOsdTree', {
if (!value) { if (!value) {
return value; return value;
} }
var inout = rec.data['in'] ? 'in' : 'out'; let inout = rec.data.in ? 'in' : 'out';
var updownicon = value === 'up' ? 'good fa-arrow-circle-up' : let updownicon = value === 'up' ? 'good fa-arrow-circle-up'
'critical fa-arrow-circle-down'; : 'critical fa-arrow-circle-down';
var inouticon = rec.data['in'] ? 'good fa-circle' : let inouticon = rec.data.in ? 'good fa-circle'
'warning fa-circle-o'; : 'warning fa-circle-o';
var text = value + ' <i class="fa ' + updownicon + '"></i> / ' + let text = value + ' <i class="fa ' + updownicon + '"></i> / ' +
inout + ' <i class="fa ' + inouticon + '"></i>'; inout + ' <i class="fa ' + inouticon + '"></i>';
return text; return text;
@ -501,12 +499,12 @@ Ext.define('PVE.node.CephOsdTree', {
}, },
render_version: function(value, metadata, rec) { render_version: function(value, metadata, rec) {
var vm = this.getViewModel(); let vm = this.getViewModel();
var versions = vm.get('versions'); let versions = vm.get('versions');
var icon = ""; let icon = "";
var version = value || ""; let version = value || "";
var maxversion = vm.get('maxversion'); let maxversion = vm.get('maxversion');
if (value && value != maxversion) { if (value && value !== maxversion) {
if (rec.data.type === 'host' || versions[rec.data.host] !== maxversion) { if (rec.data.type === 'host' || versions[rec.data.host] !== maxversion) {
icon = PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE'); icon = PVE.Utils.get_ceph_icon_html('HEALTH_UPGRADE');
} else { } else {
@ -520,7 +518,7 @@ Ext.define('PVE.node.CephOsdTree', {
}, },
render_osd_val: function(value, metaData, rec) { render_osd_val: function(value, metaData, rec) {
return (rec.data.type === 'osd') ? value : ''; return rec.data.type === 'osd' ? value : '';
}, },
render_osd_weight: function(value, metaData, rec) { render_osd_weight: function(value, metaData, rec) {
if (rec.data.type !== 'osd') { if (rec.data.type !== 'osd') {
@ -544,13 +542,13 @@ Ext.define('PVE.node.CephOsdTree', {
control: { control: {
'#': { '#': {
selectionchange: 'set_selection_status' selectionchange: 'set_selection_status',
} },
}, },
init: function(view) { init: function(view) {
var me = this; let me = this;
var vm = this.getViewModel(); let vm = this.getViewModel();
if (!view.pveSelNode.data.node) { if (!view.pveSelNode.data.node) {
throw "no node name specified"; throw "no node name specified";
@ -560,7 +558,7 @@ Ext.define('PVE.node.CephOsdTree', {
me.callParent(); me.callParent();
me.reload(); me.reload();
} },
}, },
stateful: true, stateful: true,
@ -573,40 +571,40 @@ Ext.define('PVE.node.CephOsdTree', {
xtype: 'treecolumn', xtype: 'treecolumn',
text: 'Name', text: 'Name',
dataIndex: 'name', dataIndex: 'name',
width: 150 width: 150,
}, },
{ {
text: 'Type', text: 'Type',
dataIndex: 'type', dataIndex: 'type',
hidden: true, hidden: true,
align: 'right', align: 'right',
width: 75 width: 75,
}, },
{ {
text: gettext("Class"), text: gettext("Class"),
dataIndex: 'device_class', dataIndex: 'device_class',
align: 'right', align: 'right',
width: 75 width: 75,
}, },
{ {
text: "OSD Type", text: "OSD Type",
dataIndex: 'osdtype', dataIndex: 'osdtype',
align: 'right', align: 'right',
width: 100 width: 100,
}, },
{ {
text: "Bluestore Device", text: "Bluestore Device",
dataIndex: 'blfsdev', dataIndex: 'blfsdev',
align: 'right', align: 'right',
width: 75, width: 75,
hidden: true hidden: true,
}, },
{ {
text: "DB Device", text: "DB Device",
dataIndex: 'dbdev', dataIndex: 'dbdev',
align: 'right', align: 'right',
width: 75, width: 75,
hidden: true hidden: true,
}, },
{ {
text: "WAL Device", text: "WAL Device",
@ -614,34 +612,34 @@ Ext.define('PVE.node.CephOsdTree', {
align: 'right', align: 'right',
renderer: 'render_wal', renderer: 'render_wal',
width: 75, width: 75,
hidden: true hidden: true,
}, },
{ {
text: 'Status', text: 'Status',
dataIndex: 'status', dataIndex: 'status',
align: 'right', align: 'right',
renderer: 'render_status', renderer: 'render_status',
width: 120 width: 120,
}, },
{ {
text: gettext('Version'), text: gettext('Version'),
dataIndex: 'version', dataIndex: 'version',
align: 'right', align: 'right',
renderer: 'render_version' renderer: 'render_version',
}, },
{ {
text: 'weight', text: 'weight',
dataIndex: 'crush_weight', dataIndex: 'crush_weight',
align: 'right', align: 'right',
renderer: 'render_osd_weight', renderer: 'render_osd_weight',
width: 90 width: 90,
}, },
{ {
text: 'reweight', text: 'reweight',
dataIndex: 'reweight', dataIndex: 'reweight',
align: 'right', align: 'right',
renderer: 'render_osd_weight', renderer: 'render_osd_weight',
width: 90 width: 90,
}, },
{ {
text: gettext('Used') + ' (%)', text: gettext('Used') + ' (%)',
@ -653,22 +651,22 @@ Ext.define('PVE.node.CephOsdTree', {
} }
return Ext.util.Format.number(value, '0.00'); return Ext.util.Format.number(value, '0.00');
}, },
width: 100 width: 100,
}, },
{ {
text: gettext('Total'), text: gettext('Total'),
dataIndex: 'total_space', dataIndex: 'total_space',
align: 'right', align: 'right',
renderer: 'render_osd_size', renderer: 'render_osd_size',
width: 100 width: 100,
}, },
{ {
text: 'Apply/Commit<br>Latency (ms)', text: 'Apply/Commit<br>Latency (ms)',
dataIndex: 'apply_latency_ms', dataIndex: 'apply_latency_ms',
align: 'right', align: 'right',
renderer: 'render_osd_latency', renderer: 'render_osd_latency',
width: 120 width: 120,
} },
], ],
@ -677,7 +675,7 @@ Ext.define('PVE.node.CephOsdTree', {
{ {
text: gettext('Reload'), text: gettext('Reload'),
iconCls: 'fa fa-refresh', iconCls: 'fa fa-refresh',
handler: 'reload' handler: 'reload',
}, },
'-', '-',
{ {
@ -692,50 +690,50 @@ Ext.define('PVE.node.CephOsdTree', {
{ {
xtype: 'tbtext', xtype: 'tbtext',
data: { data: {
osd: undefined osd: undefined,
}, },
bind: { bind: {
data: { data: {
osd: "{osdid}" osd: "{osdid}",
} },
}, },
tpl: [ tpl: [
'<tpl if="osd">', '<tpl if="osd">',
'osd.{osd}:', 'osd.{osd}:',
'<tpl else>', '<tpl else>',
gettext('No OSD selected'), gettext('No OSD selected'),
'</tpl>' '</tpl>',
] ],
}, },
{ {
text: gettext('Start'), text: gettext('Start'),
iconCls: 'fa fa-play', iconCls: 'fa fa-play',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!downOsd}' disabled: '{!downOsd}',
}, },
cmd: 'start', cmd: 'start',
handler: 'service_cmd' handler: 'service_cmd',
}, },
{ {
text: gettext('Stop'), text: gettext('Stop'),
iconCls: 'fa fa-stop', iconCls: 'fa fa-stop',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!upOsd}' disabled: '{!upOsd}',
}, },
cmd: 'stop', cmd: 'stop',
handler: 'service_cmd' handler: 'service_cmd',
}, },
{ {
text: gettext('Restart'), text: gettext('Restart'),
iconCls: 'fa fa-refresh', iconCls: 'fa fa-refresh',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!upOsd}' disabled: '{!upOsd}',
}, },
cmd: 'restart', cmd: 'restart',
handler: 'service_cmd' handler: 'service_cmd',
}, },
'-', '-',
{ {
@ -743,20 +741,20 @@ Ext.define('PVE.node.CephOsdTree', {
iconCls: 'fa fa-circle-o', iconCls: 'fa fa-circle-o',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!inOsd}' disabled: '{!inOsd}',
}, },
cmd: 'out', cmd: 'out',
handler: 'osd_cmd' handler: 'osd_cmd',
}, },
{ {
text: 'In', text: 'In',
iconCls: 'fa fa-circle', iconCls: 'fa fa-circle',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!outOsd}' disabled: '{!outOsd}',
}, },
cmd: 'in', cmd: 'in',
handler: 'osd_cmd' handler: 'osd_cmd',
}, },
'-', '-',
{ {
@ -764,14 +762,14 @@ Ext.define('PVE.node.CephOsdTree', {
iconCls: 'fa fa-bars', iconCls: 'fa fa-bars',
disabled: true, disabled: true,
bind: { bind: {
disabled: '{!isOsd}' disabled: '{!isOsd}',
}, },
menu: [ menu: [
{ {
text: gettext('Scrub'), text: gettext('Scrub'),
iconCls: 'fa fa-shower', iconCls: 'fa fa-shower',
cmd: 'scrub', cmd: 'scrub',
handler: 'osd_cmd' handler: 'osd_cmd',
}, },
{ {
text: gettext('Deep Scrub'), text: gettext('Deep Scrub'),
@ -780,24 +778,24 @@ Ext.define('PVE.node.CephOsdTree', {
params: { params: {
deep: 1, deep: 1,
}, },
handler: 'osd_cmd' handler: 'osd_cmd',
}, },
{ {
text: gettext('Destroy'), text: gettext('Destroy'),
itemId: 'remove', itemId: 'remove',
iconCls: 'fa fa-fw fa-trash-o', iconCls: 'fa fa-fw fa-trash-o',
bind: { bind: {
disabled: '{!downOsd}' disabled: '{!downOsd}',
}, },
handler: 'destroy_osd' handler: 'destroy_osd',
} },
], ],
} },
] ],
}, },
fields: [ fields: [
'name', 'type', 'status', 'host', 'in', 'id' , 'name', 'type', 'status', 'host', 'in', 'id',
{ type: 'number', name: 'reweight' }, { type: 'number', name: 'reweight' },
{ type: 'number', name: 'percent_used' }, { type: 'number', name: 'percent_used' },
{ type: 'integer', name: 'bytes_used' }, { type: 'integer', name: 'bytes_used' },
@ -809,17 +807,21 @@ Ext.define('PVE.node.CephOsdTree', {
{ type: 'string', name: 'blfsdev' }, { type: 'string', name: 'blfsdev' },
{ type: 'string', name: 'dbdev' }, { type: 'string', name: 'dbdev' },
{ type: 'string', name: 'waldev' }, { type: 'string', name: 'waldev' },
{ type: 'string', name: 'version', calculate: function(data) { {
type: 'string', name: 'version', calculate: function(data) {
return PVE.Utils.parse_ceph_version(data); return PVE.Utils.parse_ceph_version(data);
} }, },
{ type: 'string', name: 'iconCls', calculate: function(data) { },
var iconMap = { {
type: 'string', name: 'iconCls', calculate: function(data) {
let iconMap = {
host: 'fa-building', host: 'fa-building',
osd: 'fa-hdd-o', osd: 'fa-hdd-o',
root: 'fa-server', root: 'fa-server',
}; };
return 'fa x-fa-tree ' + iconMap[data.type]; return 'fa x-fa-tree ' + iconMap[data.type];
} }, },
{ type: 'number', name: 'crush_weight' } },
{ type: 'number', name: 'crush_weight' },
], ],
}); });